diff --git a/react-paris-or-angular-paris/.gitignore b/react-paris-or-angular-paris/.gitignore new file mode 100644 index 0000000..3c3629e --- /dev/null +++ b/react-paris-or-angular-paris/.gitignore @@ -0,0 +1 @@ +node_modules diff --git a/react-paris-or-angular-paris/README.md b/react-paris-or-angular-paris/README.md new file mode 100644 index 0000000..c3b8434 --- /dev/null +++ b/react-paris-or-angular-paris/README.md @@ -0,0 +1,44 @@ +# ReactJS Paris or AngularJS Paris + +Written for the [React-Europe hackathon](https://github.com/react-europe/hackathon). A simple game to guess whether a person has joined ReactJS or AngularJS meetup. Uses [Meetup API](http://www.meetup.com/meetup_api/). + +![](docs/ss1.png) + + +## Running Instructions + +``` +npm install +npm start +# open http://localhost:3000 +``` + +## Credit + +**Author**: Shu Uesugi (shu@chibicode.com) + +**Photo Credit**: From [Unsplash](http://tumblr.unsplash.com/post/85385403379/download-by-louis-pellissier) ([CC0](http://creativecommons.org/publicdomain/zero/1.0/) License) + +**License**: + +The MIT License (MIT) + +Copyright (c) 2015 Shusaku Uesugi + +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/react-paris-or-angular-paris/app.js b/react-paris-or-angular-paris/app.js new file mode 100644 index 0000000..24e34f9 --- /dev/null +++ b/react-paris-or-angular-paris/app.js @@ -0,0 +1,58 @@ +var express = require('express'); +var path = require('path'); +var favicon = require('serve-favicon'); +var logger = require('morgan'); +var cookieParser = require('cookie-parser'); +var bodyParser = require('body-parser'); + +var routes = require('./routes/index'); + +var app = express(); + +// view engine setup +app.set('views', path.join(__dirname, 'views')); +app.set('view engine', 'jade'); + +// uncomment after placing your favicon in /public +//app.use(favicon(__dirname + '/public/favicon.ico')); +app.use(logger('dev')); +app.use(bodyParser.json()); +app.use(bodyParser.urlencoded({ extended: false })); +app.use(cookieParser()); +app.use(express.static(path.join(__dirname, 'public'))); + +app.use('/', routes); + +// catch 404 and forward to error handler +app.use(function(req, res, next) { + var err = new Error('Not Found'); + err.status = 404; + next(err); +}); + +// error handlers + +// development error handler +// will print stacktrace +if (app.get('env') === 'development') { + app.use(function(err, req, res, next) { + res.status(err.status || 500); + res.render('error', { + message: err.message, + error: err + }); + }); +} + +// production error handler +// no stacktraces leaked to user +app.use(function(err, req, res, next) { + res.status(err.status || 500); + res.render('error', { + message: err.message, + error: {} + }); +}); + + +module.exports = app; diff --git a/react-paris-or-angular-paris/bin/www b/react-paris-or-angular-paris/bin/www new file mode 100755 index 0000000..e49de30 --- /dev/null +++ b/react-paris-or-angular-paris/bin/www @@ -0,0 +1,90 @@ +#!/usr/bin/env node + +/** + * Module dependencies. + */ + +var app = require('../app'); +var debug = require('debug')('paris-react-angular:server'); +var http = require('http'); + +/** + * Get port from environment and store in Express. + */ + +var port = normalizePort(process.env.PORT || '3000'); +app.set('port', port); + +/** + * Create HTTP server. + */ + +var server = http.createServer(app); + +/** + * Listen on provided port, on all network interfaces. + */ + +server.listen(port); +server.on('error', onError); +server.on('listening', onListening); + +/** + * Normalize a port into a number, string, or false. + */ + +function normalizePort(val) { + var port = parseInt(val, 10); + + if (isNaN(port)) { + // named pipe + return val; + } + + if (port >= 0) { + // port number + return port; + } + + return false; +} + +/** + * Event listener for HTTP server "error" event. + */ + +function onError(error) { + if (error.syscall !== 'listen') { + throw error; + } + + var bind = typeof port === 'string' + ? 'Pipe ' + port + : 'Port ' + port; + + // handle specific listen errors with friendly messages + switch (error.code) { + case 'EACCES': + console.error(bind + ' requires elevated privileges'); + process.exit(1); + break; + case 'EADDRINUSE': + console.error(bind + ' is already in use'); + process.exit(1); + break; + default: + throw error; + } +} + +/** + * Event listener for HTTP server "listening" event. + */ + +function onListening() { + var addr = server.address(); + var bind = typeof addr === 'string' + ? 'pipe ' + addr + : 'port ' + addr.port; + debug('Listening on ' + bind); +} diff --git a/react-paris-or-angular-paris/bower_components/spinkit/.bower.json b/react-paris-or-angular-paris/bower_components/spinkit/.bower.json new file mode 100644 index 0000000..8679e47 --- /dev/null +++ b/react-paris-or-angular-paris/bower_components/spinkit/.bower.json @@ -0,0 +1,30 @@ +{ + "name": "SpinKit", + "version": "1.0.1", + "homepage": "https://github.com/tobiasahlin/SpinKit", + "authors": [ + "Tobias Ahlin" + ], + "description": "A collection of loading indicators animated with CSS", + "main": "css/spinkit.css", + "keywords": [ + "css", + "scss", + "web" + ], + "license": "MIT", + "ignore": [ + "**/.*", + "node_modules" + ], + "_release": "1.0.1", + "_resolution": { + "type": "version", + "tag": "1.0.1", + "commit": "8505d1baab43a842758cab11b103f6374644207a" + }, + "_source": "git://github.com/tobiasahlin/SpinKit.git", + "_target": "~1.0.1", + "_originalSource": "spinkit", + "_direct": true +} \ No newline at end of file diff --git a/react-paris-or-angular-paris/bower_components/spinkit/CHANGELOG.md b/react-paris-or-angular-paris/bower_components/spinkit/CHANGELOG.md new file mode 100644 index 0000000..4aa01ec --- /dev/null +++ b/react-paris-or-angular-paris/bower_components/spinkit/CHANGELOG.md @@ -0,0 +1,3 @@ +# 1.0.1 + +* Fix: Missed sass variables for background-color diff --git a/react-paris-or-angular-paris/bower_components/spinkit/CONTRIBUTING.md b/react-paris-or-angular-paris/bower_components/spinkit/CONTRIBUTING.md new file mode 100644 index 0000000..1f6c569 --- /dev/null +++ b/react-paris-or-angular-paris/bower_components/spinkit/CONTRIBUTING.md @@ -0,0 +1,22 @@ +# Pull Request Guidelines + +We all love Pull Requests so if you have something you'd like to share with the community we'd be happy to help you out with contributing. But before you create your PR please read and understand the following. :heart: + +## Code + +If you're submitting a new animation, make sure that it looks identical in [all browsers that support CSS animations](http://caniuse.com/css-animation). + +The animation styles should be put in an [SCSS](http://sass-lang.com/) file which you place in [scss/spinners/](https://github.com/tobiasahlin/SpinKit/blob/master/scss/spinners). It must also be imported in [scss/spinkit.scss](https://github.com/tobiasahlin/SpinKit/blob/master/scss/spinkit.scss). Carefully look at the existing spinners to make sure you follow the same conventions and that you list an example on top of the page exactly like the other spinners (we extract this when generating the HTML files). Don't use any browser prefixes as this will be added automatically to the generated CSS files by [autoprefixer](https://github.com/postcss/autoprefixer). + +To generate the CSS and HTML files you need to have [node.js](http://nodejs.org/) installed on your system. After that you need to issue `npm install` from the SpinKit project directory to install [gulp](https://github.com/gulpjs/gulp) and other dependencies listed in `package.json`. After doing this you should be able to just call `gulp build` to generate the files. These files should be included in your pull requests. + + +## Style + +Following the same code style makes all of our lives a bit easier, currently we ask that you use: + +- 2 spaces for indenting +- No trailing spaces +- One trailing newline at the end of each file + +If you use Sublime Text (or any other editor with the same capability) you can install EditorConfig (through [Sublime Package Control](https://sublime.wbond.net/installation)), which will pick up our project's `.editorconfig` and make your file conform to above rules on each save. diff --git a/react-paris-or-angular-paris/bower_components/spinkit/LICENSE b/react-paris-or-angular-paris/bower_components/spinkit/LICENSE new file mode 100644 index 0000000..547f627 --- /dev/null +++ b/react-paris-or-angular-paris/bower_components/spinkit/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2014 Tobias Ahlin + +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/react-paris-or-angular-paris/bower_components/spinkit/README.md b/react-paris-or-angular-paris/bower_components/spinkit/README.md new file mode 100644 index 0000000..3221b73 --- /dev/null +++ b/react-paris-or-angular-paris/bower_components/spinkit/README.md @@ -0,0 +1,70 @@ +# [SpinKit](http://tobiasahlin.com/spinkit/) + +Simple loading spinners animated with CSS. See [demo](http://tobiasahlin.com/spinkit/). + +SpinKit uses CSS animations to create smooth and easily customizable animations. The goal is not to offer a solution that works in every browser—if you're supporting browsers that haven't implemented the CSS `animation` property (e.g. IE9 and below), you'll want to detect support for the `animation` property, and implement a fallback (see below.) + +## Usage + +### Regular CSS + +Grab the HTML and CSS for a spinner and include it in your project. Note that a hidden spinner (`opacity: 0`, or `visibility: hidden`) will still animate. After hiding a spinner, it's recommended to remove it from the DOM, set `display: none` or pause the animation by setting `animation-play-state: paused`. + +SpinKit can also be installed to your project with `bower`: + +```bash +$ bower install spinkit +``` + +### SCSS + +If you're using SCSS in your project then you can include just the styles for the spinners that you want by adding the following to your main file: + +```scss +@import '../bower_components/spinkit/scss/spinners/1-rotating-plane', + '../bower_components/spinkit/scss/spinners/3-wave'; +``` + +Please note that you currently need to use [autoprefixer](https://github.com/postcss/autoprefixer) in your project if you want to support all browsers. If you're compiling your SCSS with gulp you can use [gulp-autoprefixer](https://github.com/sindresorhus/gulp-autoprefixer) or if you use grunt then [grunt-autoprefixer](https://github.com/nDmitry/grunt-autoprefixer) is a good choice. + +There are some variables that can be overridden if you use SCSS. The defaults are listed in [scss/_variables.scss](https://github.com/tobiasahlin/SpinKit/blob/master/scss/_variables.scss). + +## Old web browser compatibility + +With support for CSS animations in every current browser and [almost 90% of all browsers in use today](http://caniuse.com/#feat=css-animation), the need for GIF and JavaScript fallbacks is decreasing quickly. If you still need to support those last few then this section is for you. + +### Implementing a fallback spinner + +An easy way to provide a fallback animation is to check for support for the `animation` property, and replace the spinner with a GIF if it's not supported. + +```javascript +function browserSupportsCSSProperty(propertyName) { + var elm = document.createElement('div'); + propertyName = propertyName.toLowerCase(); + + if (elm.style[propertyName] != undefined) + return true; + + var propertyNameCapital = propertyName.charAt(0).toUpperCase() + propertyName.substr(1), + domPrefixes = 'Webkit Moz ms O'.split(' '); + + for (var i = 0; i < domPrefixes.length; i++) { + if (elm.style[domPrefixes[i] + propertyNameCapital] != undefined) + return true; + } + + return false; +} +``` + +Use it to check for `animation` support: + +```javascript +if (!browserSupportsCSSProperty('animation')) { + // fallback… +} +``` + +## Contributing + +See [CONTRIBUTING.md](https://github.com/tobiasahlin/SpinKit/blob/master/CONTRIBUTING.md) for details. diff --git a/react-paris-or-angular-paris/bower_components/spinkit/bower.json b/react-paris-or-angular-paris/bower_components/spinkit/bower.json new file mode 100644 index 0000000..8d79c8e --- /dev/null +++ b/react-paris-or-angular-paris/bower_components/spinkit/bower.json @@ -0,0 +1,20 @@ +{ + "name": "SpinKit", + "version": "1.0.0", + "homepage": "https://github.com/tobiasahlin/SpinKit", + "authors": [ + "Tobias Ahlin" + ], + "description": "A collection of loading indicators animated with CSS", + "main": "css/spinkit.css", + "keywords": [ + "css", + "scss", + "web" + ], + "license": "MIT", + "ignore": [ + "**/.*", + "node_modules" + ] +} diff --git a/react-paris-or-angular-paris/bower_components/spinkit/css/spinkit.css b/react-paris-or-angular-paris/bower_components/spinkit/css/spinkit.css new file mode 100644 index 0000000..9521490 --- /dev/null +++ b/react-paris-or-angular-paris/bower_components/spinkit/css/spinkit.css @@ -0,0 +1,758 @@ +/* + * Usage: + * + *
+ * + */ +.sk-spinner-rotating-plane.sk-spinner { + width: 30px; + height: 30px; + background-color: #333; + margin: 0 auto; + -webkit-animation: sk-rotatePlane 1.2s infinite ease-in-out; + animation: sk-rotatePlane 1.2s infinite ease-in-out; } + +@-webkit-keyframes sk-rotatePlane { + 0% { + -webkit-transform: perspective(120px) rotateX(0deg) rotateY(0deg); + transform: perspective(120px) rotateX(0deg) rotateY(0deg); } + + 50% { + -webkit-transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg); + transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg); } + + 100% { + -webkit-transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg); + transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg); } } + +@keyframes sk-rotatePlane { + 0% { + -webkit-transform: perspective(120px) rotateX(0deg) rotateY(0deg); + transform: perspective(120px) rotateX(0deg) rotateY(0deg); } + + 50% { + -webkit-transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg); + transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg); } + + 100% { + -webkit-transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg); + transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg); } } + +/* + * Usage: + * + *
+ *
+ *
+ *
+ * + */ +.sk-spinner-double-bounce.sk-spinner { + width: 40px; + height: 40px; + position: relative; + margin: 0 auto; } +.sk-spinner-double-bounce .sk-double-bounce1, .sk-spinner-double-bounce .sk-double-bounce2 { + width: 100%; + height: 100%; + border-radius: 50%; + background-color: #333; + opacity: 0.6; + position: absolute; + top: 0; + left: 0; + -webkit-animation: sk-doubleBounce 2s infinite ease-in-out; + animation: sk-doubleBounce 2s infinite ease-in-out; } +.sk-spinner-double-bounce .sk-double-bounce2 { + -webkit-animation-delay: -1s; + animation-delay: -1s; } + +@-webkit-keyframes sk-doubleBounce { + 0%, 100% { + -webkit-transform: scale(0); + transform: scale(0); } + + 50% { + -webkit-transform: scale(1); + transform: scale(1); } } + +@keyframes sk-doubleBounce { + 0%, 100% { + -webkit-transform: scale(0); + transform: scale(0); } + + 50% { + -webkit-transform: scale(1); + transform: scale(1); } } + +/* + * Usage: + * + *
+ *
+ *
+ *
+ *
+ *
+ *
+ * + */ +.sk-spinner-wave.sk-spinner { + margin: 0 auto; + width: 50px; + height: 30px; + text-align: center; + font-size: 10px; } +.sk-spinner-wave div { + background-color: #333; + height: 100%; + width: 6px; + display: inline-block; + -webkit-animation: sk-waveStretchDelay 1.2s infinite ease-in-out; + animation: sk-waveStretchDelay 1.2s infinite ease-in-out; } +.sk-spinner-wave .sk-rect2 { + -webkit-animation-delay: -1.1s; + animation-delay: -1.1s; } +.sk-spinner-wave .sk-rect3 { + -webkit-animation-delay: -1s; + animation-delay: -1s; } +.sk-spinner-wave .sk-rect4 { + -webkit-animation-delay: -0.9s; + animation-delay: -0.9s; } +.sk-spinner-wave .sk-rect5 { + -webkit-animation-delay: -0.8s; + animation-delay: -0.8s; } + +@-webkit-keyframes sk-waveStretchDelay { + 0%, 40%, 100% { + -webkit-transform: scaleY(0.4); + transform: scaleY(0.4); } + + 20% { + -webkit-transform: scaleY(1); + transform: scaleY(1); } } + +@keyframes sk-waveStretchDelay { + 0%, 40%, 100% { + -webkit-transform: scaleY(0.4); + transform: scaleY(0.4); } + + 20% { + -webkit-transform: scaleY(1); + transform: scaleY(1); } } + +/* + * Usage: + * + *
+ *
+ *
+ *
+ * + */ +.sk-spinner-wandering-cubes.sk-spinner { + margin: 0 auto; + width: 32px; + height: 32px; + position: relative; } +.sk-spinner-wandering-cubes .sk-cube1, .sk-spinner-wandering-cubes .sk-cube2 { + background-color: #333; + width: 10px; + height: 10px; + position: absolute; + top: 0; + left: 0; + -webkit-animation: sk-wanderingCubeMove 1.8s infinite ease-in-out; + animation: sk-wanderingCubeMove 1.8s infinite ease-in-out; } +.sk-spinner-wandering-cubes .sk-cube2 { + -webkit-animation-delay: -0.9s; + animation-delay: -0.9s; } + +@-webkit-keyframes sk-wanderingCubeMove { + 25% { + -webkit-transform: translateX(42px) rotate(-90deg) scale(0.5); + transform: translateX(42px) rotate(-90deg) scale(0.5); } + + 50% { + /* Hack to make FF rotate in the right direction */ + -webkit-transform: translateX(42px) translateY(42px) rotate(-179deg); + transform: translateX(42px) translateY(42px) rotate(-179deg); } + + 50.1% { + -webkit-transform: translateX(42px) translateY(42px) rotate(-180deg); + transform: translateX(42px) translateY(42px) rotate(-180deg); } + + 75% { + -webkit-transform: translateX(0px) translateY(42px) rotate(-270deg) scale(0.5); + transform: translateX(0px) translateY(42px) rotate(-270deg) scale(0.5); } + + 100% { + -webkit-transform: rotate(-360deg); + transform: rotate(-360deg); } } + +@keyframes sk-wanderingCubeMove { + 25% { + -webkit-transform: translateX(42px) rotate(-90deg) scale(0.5); + transform: translateX(42px) rotate(-90deg) scale(0.5); } + + 50% { + /* Hack to make FF rotate in the right direction */ + -webkit-transform: translateX(42px) translateY(42px) rotate(-179deg); + transform: translateX(42px) translateY(42px) rotate(-179deg); } + + 50.1% { + -webkit-transform: translateX(42px) translateY(42px) rotate(-180deg); + transform: translateX(42px) translateY(42px) rotate(-180deg); } + + 75% { + -webkit-transform: translateX(0px) translateY(42px) rotate(-270deg) scale(0.5); + transform: translateX(0px) translateY(42px) rotate(-270deg) scale(0.5); } + + 100% { + -webkit-transform: rotate(-360deg); + transform: rotate(-360deg); } } + +/* + * Usage: + * + *
+ * + */ +.sk-spinner-pulse.sk-spinner { + width: 40px; + height: 40px; + margin: 0 auto; + background-color: #333; + border-radius: 100%; + -webkit-animation: sk-pulseScaleOut 1s infinite ease-in-out; + animation: sk-pulseScaleOut 1s infinite ease-in-out; } + +@-webkit-keyframes sk-pulseScaleOut { + 0% { + -webkit-transform: scale(0); + transform: scale(0); } + + 100% { + -webkit-transform: scale(1); + transform: scale(1); + opacity: 0; } } + +@keyframes sk-pulseScaleOut { + 0% { + -webkit-transform: scale(0); + transform: scale(0); } + + 100% { + -webkit-transform: scale(1); + transform: scale(1); + opacity: 0; } } + +/* + * Usage: + * + *
+ *
+ *
+ *
+ * + */ +.sk-spinner-chasing-dots.sk-spinner { + margin: 0 auto; + width: 40px; + height: 40px; + position: relative; + text-align: center; + -webkit-animation: sk-chasingDotsRotate 2s infinite linear; + animation: sk-chasingDotsRotate 2s infinite linear; } +.sk-spinner-chasing-dots .sk-dot1, .sk-spinner-chasing-dots .sk-dot2 { + width: 60%; + height: 60%; + display: inline-block; + position: absolute; + top: 0; + background-color: #333; + border-radius: 100%; + -webkit-animation: sk-chasingDotsBounce 2s infinite ease-in-out; + animation: sk-chasingDotsBounce 2s infinite ease-in-out; } +.sk-spinner-chasing-dots .sk-dot2 { + top: auto; + bottom: 0px; + -webkit-animation-delay: -1s; + animation-delay: -1s; } + +@-webkit-keyframes sk-chasingDotsRotate { + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); } } + +@keyframes sk-chasingDotsRotate { + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); } } + +@-webkit-keyframes sk-chasingDotsBounce { + 0%, 100% { + -webkit-transform: scale(0); + transform: scale(0); } + + 50% { + -webkit-transform: scale(1); + transform: scale(1); } } + +@keyframes sk-chasingDotsBounce { + 0%, 100% { + -webkit-transform: scale(0); + transform: scale(0); } + + 50% { + -webkit-transform: scale(1); + transform: scale(1); } } + +/* + * Usage: + * + *
+ *
+ *
+ *
+ *
+ * + */ +.sk-spinner-three-bounce.sk-spinner { + margin: 0 auto; + width: 70px; + text-align: center; } +.sk-spinner-three-bounce div { + width: 18px; + height: 18px; + background-color: #333; + border-radius: 100%; + display: inline-block; + -webkit-animation: sk-threeBounceDelay 1.4s infinite ease-in-out; + animation: sk-threeBounceDelay 1.4s infinite ease-in-out; + /* Prevent first frame from flickering when animation starts */ + -webkit-animation-fill-mode: both; + animation-fill-mode: both; } +.sk-spinner-three-bounce .sk-bounce1 { + -webkit-animation-delay: -0.32s; + animation-delay: -0.32s; } +.sk-spinner-three-bounce .sk-bounce2 { + -webkit-animation-delay: -0.16s; + animation-delay: -0.16s; } + +@-webkit-keyframes sk-threeBounceDelay { + 0%, 80%, 100% { + -webkit-transform: scale(0); + transform: scale(0); } + + 40% { + -webkit-transform: scale(1); + transform: scale(1); } } + +@keyframes sk-threeBounceDelay { + 0%, 80%, 100% { + -webkit-transform: scale(0); + transform: scale(0); } + + 40% { + -webkit-transform: scale(1); + transform: scale(1); } } + +/* + * Usage: + * + *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ * + */ +.sk-spinner-circle.sk-spinner { + margin: 0 auto; + width: 22px; + height: 22px; + position: relative; } +.sk-spinner-circle .sk-circle { + width: 100%; + height: 100%; + position: absolute; + left: 0; + top: 0; } +.sk-spinner-circle .sk-circle:before { + content: ''; + display: block; + margin: 0 auto; + width: 20%; + height: 20%; + background-color: #333; + border-radius: 100%; + -webkit-animation: sk-circleBounceDelay 1.2s infinite ease-in-out; + animation: sk-circleBounceDelay 1.2s infinite ease-in-out; + /* Prevent first frame from flickering when animation starts */ + -webkit-animation-fill-mode: both; + animation-fill-mode: both; } +.sk-spinner-circle .sk-circle2 { + -webkit-transform: rotate(30deg); + -ms-transform: rotate(30deg); + transform: rotate(30deg); } +.sk-spinner-circle .sk-circle3 { + -webkit-transform: rotate(60deg); + -ms-transform: rotate(60deg); + transform: rotate(60deg); } +.sk-spinner-circle .sk-circle4 { + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); } +.sk-spinner-circle .sk-circle5 { + -webkit-transform: rotate(120deg); + -ms-transform: rotate(120deg); + transform: rotate(120deg); } +.sk-spinner-circle .sk-circle6 { + -webkit-transform: rotate(150deg); + -ms-transform: rotate(150deg); + transform: rotate(150deg); } +.sk-spinner-circle .sk-circle7 { + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); } +.sk-spinner-circle .sk-circle8 { + -webkit-transform: rotate(210deg); + -ms-transform: rotate(210deg); + transform: rotate(210deg); } +.sk-spinner-circle .sk-circle9 { + -webkit-transform: rotate(240deg); + -ms-transform: rotate(240deg); + transform: rotate(240deg); } +.sk-spinner-circle .sk-circle10 { + -webkit-transform: rotate(270deg); + -ms-transform: rotate(270deg); + transform: rotate(270deg); } +.sk-spinner-circle .sk-circle11 { + -webkit-transform: rotate(300deg); + -ms-transform: rotate(300deg); + transform: rotate(300deg); } +.sk-spinner-circle .sk-circle12 { + -webkit-transform: rotate(330deg); + -ms-transform: rotate(330deg); + transform: rotate(330deg); } +.sk-spinner-circle .sk-circle2:before { + -webkit-animation-delay: -1.1s; + animation-delay: -1.1s; } +.sk-spinner-circle .sk-circle3:before { + -webkit-animation-delay: -1s; + animation-delay: -1s; } +.sk-spinner-circle .sk-circle4:before { + -webkit-animation-delay: -0.9s; + animation-delay: -0.9s; } +.sk-spinner-circle .sk-circle5:before { + -webkit-animation-delay: -0.8s; + animation-delay: -0.8s; } +.sk-spinner-circle .sk-circle6:before { + -webkit-animation-delay: -0.7s; + animation-delay: -0.7s; } +.sk-spinner-circle .sk-circle7:before { + -webkit-animation-delay: -0.6s; + animation-delay: -0.6s; } +.sk-spinner-circle .sk-circle8:before { + -webkit-animation-delay: -0.5s; + animation-delay: -0.5s; } +.sk-spinner-circle .sk-circle9:before { + -webkit-animation-delay: -0.4s; + animation-delay: -0.4s; } +.sk-spinner-circle .sk-circle10:before { + -webkit-animation-delay: -0.3s; + animation-delay: -0.3s; } +.sk-spinner-circle .sk-circle11:before { + -webkit-animation-delay: -0.2s; + animation-delay: -0.2s; } +.sk-spinner-circle .sk-circle12:before { + -webkit-animation-delay: -0.1s; + animation-delay: -0.1s; } + +@-webkit-keyframes sk-circleBounceDelay { + 0%, 80%, 100% { + -webkit-transform: scale(0); + transform: scale(0); } + + 40% { + -webkit-transform: scale(1); + transform: scale(1); } } + +@keyframes sk-circleBounceDelay { + 0%, 80%, 100% { + -webkit-transform: scale(0); + transform: scale(0); } + + 40% { + -webkit-transform: scale(1); + transform: scale(1); } } + +/* + * Usage: + * + *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ * + */ +.sk-spinner-cube-grid { + /* + * Spinner positions + * 1 2 3 + * 4 5 6 + * 7 8 9 + */ } + .sk-spinner-cube-grid.sk-spinner { + width: 30px; + height: 30px; + margin: 0 auto; } + .sk-spinner-cube-grid .sk-cube { + width: 33%; + height: 33%; + background-color: #333; + float: left; + -webkit-animation: sk-cubeGridScaleDelay 1.3s infinite ease-in-out; + animation: sk-cubeGridScaleDelay 1.3s infinite ease-in-out; } + .sk-spinner-cube-grid .sk-cube:nth-child(1) { + -webkit-animation-delay: 0.2s; + animation-delay: 0.2s; } + .sk-spinner-cube-grid .sk-cube:nth-child(2) { + -webkit-animation-delay: 0.3s; + animation-delay: 0.3s; } + .sk-spinner-cube-grid .sk-cube:nth-child(3) { + -webkit-animation-delay: 0.4s; + animation-delay: 0.4s; } + .sk-spinner-cube-grid .sk-cube:nth-child(4) { + -webkit-animation-delay: 0.1s; + animation-delay: 0.1s; } + .sk-spinner-cube-grid .sk-cube:nth-child(5) { + -webkit-animation-delay: 0.2s; + animation-delay: 0.2s; } + .sk-spinner-cube-grid .sk-cube:nth-child(6) { + -webkit-animation-delay: 0.3s; + animation-delay: 0.3s; } + .sk-spinner-cube-grid .sk-cube:nth-child(7) { + -webkit-animation-delay: 0s; + animation-delay: 0s; } + .sk-spinner-cube-grid .sk-cube:nth-child(8) { + -webkit-animation-delay: 0.1s; + animation-delay: 0.1s; } + .sk-spinner-cube-grid .sk-cube:nth-child(9) { + -webkit-animation-delay: 0.2s; + animation-delay: 0.2s; } + +@-webkit-keyframes sk-cubeGridScaleDelay { + 0%, 70%, 100% { + -webkit-transform: scale3D(1, 1, 1); + transform: scale3D(1, 1, 1); } + + 35% { + -webkit-transform: scale3D(0, 0, 1); + transform: scale3D(0, 0, 1); } } + +@keyframes sk-cubeGridScaleDelay { + 0%, 70%, 100% { + -webkit-transform: scale3D(1, 1, 1); + transform: scale3D(1, 1, 1); } + + 35% { + -webkit-transform: scale3D(0, 0, 1); + transform: scale3D(0, 0, 1); } } + +/* + * Usage: + * + *
+ * + *
+ * + */ +.sk-spinner-wordpress.sk-spinner { + background-color: #333; + width: 30px; + height: 30px; + border-radius: 30px; + position: relative; + margin: 0 auto; + -webkit-animation: sk-innerCircle 1s linear infinite; + animation: sk-innerCircle 1s linear infinite; } +.sk-spinner-wordpress .sk-inner-circle { + display: block; + background-color: #fff; + width: 8px; + height: 8px; + position: absolute; + border-radius: 8px; + top: 5px; + left: 5px; } + +@-webkit-keyframes sk-innerCircle { + 0% { + -webkit-transform: rotate(0); + transform: rotate(0); } + + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); } } + +@keyframes sk-innerCircle { + 0% { + -webkit-transform: rotate(0); + transform: rotate(0); } + + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); } } + +/* + * Usage: + * + *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ * + */ +.sk-spinner-fading-circle.sk-spinner { + margin: 0 auto; + width: 22px; + height: 22px; + position: relative; } +.sk-spinner-fading-circle .sk-circle { + width: 100%; + height: 100%; + position: absolute; + left: 0; + top: 0; } +.sk-spinner-fading-circle .sk-circle:before { + content: ''; + display: block; + margin: 0 auto; + width: 18%; + height: 18%; + background-color: #333; + border-radius: 100%; + -webkit-animation: sk-circleFadeDelay 1.2s infinite ease-in-out; + animation: sk-circleFadeDelay 1.2s infinite ease-in-out; + /* Prevent first frame from flickering when animation starts */ + -webkit-animation-fill-mode: both; + animation-fill-mode: both; } +.sk-spinner-fading-circle .sk-circle2 { + -webkit-transform: rotate(30deg); + -ms-transform: rotate(30deg); + transform: rotate(30deg); } +.sk-spinner-fading-circle .sk-circle3 { + -webkit-transform: rotate(60deg); + -ms-transform: rotate(60deg); + transform: rotate(60deg); } +.sk-spinner-fading-circle .sk-circle4 { + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); } +.sk-spinner-fading-circle .sk-circle5 { + -webkit-transform: rotate(120deg); + -ms-transform: rotate(120deg); + transform: rotate(120deg); } +.sk-spinner-fading-circle .sk-circle6 { + -webkit-transform: rotate(150deg); + -ms-transform: rotate(150deg); + transform: rotate(150deg); } +.sk-spinner-fading-circle .sk-circle7 { + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); } +.sk-spinner-fading-circle .sk-circle8 { + -webkit-transform: rotate(210deg); + -ms-transform: rotate(210deg); + transform: rotate(210deg); } +.sk-spinner-fading-circle .sk-circle9 { + -webkit-transform: rotate(240deg); + -ms-transform: rotate(240deg); + transform: rotate(240deg); } +.sk-spinner-fading-circle .sk-circle10 { + -webkit-transform: rotate(270deg); + -ms-transform: rotate(270deg); + transform: rotate(270deg); } +.sk-spinner-fading-circle .sk-circle11 { + -webkit-transform: rotate(300deg); + -ms-transform: rotate(300deg); + transform: rotate(300deg); } +.sk-spinner-fading-circle .sk-circle12 { + -webkit-transform: rotate(330deg); + -ms-transform: rotate(330deg); + transform: rotate(330deg); } +.sk-spinner-fading-circle .sk-circle2:before { + -webkit-animation-delay: -1.1s; + animation-delay: -1.1s; } +.sk-spinner-fading-circle .sk-circle3:before { + -webkit-animation-delay: -1s; + animation-delay: -1s; } +.sk-spinner-fading-circle .sk-circle4:before { + -webkit-animation-delay: -0.9s; + animation-delay: -0.9s; } +.sk-spinner-fading-circle .sk-circle5:before { + -webkit-animation-delay: -0.8s; + animation-delay: -0.8s; } +.sk-spinner-fading-circle .sk-circle6:before { + -webkit-animation-delay: -0.7s; + animation-delay: -0.7s; } +.sk-spinner-fading-circle .sk-circle7:before { + -webkit-animation-delay: -0.6s; + animation-delay: -0.6s; } +.sk-spinner-fading-circle .sk-circle8:before { + -webkit-animation-delay: -0.5s; + animation-delay: -0.5s; } +.sk-spinner-fading-circle .sk-circle9:before { + -webkit-animation-delay: -0.4s; + animation-delay: -0.4s; } +.sk-spinner-fading-circle .sk-circle10:before { + -webkit-animation-delay: -0.3s; + animation-delay: -0.3s; } +.sk-spinner-fading-circle .sk-circle11:before { + -webkit-animation-delay: -0.2s; + animation-delay: -0.2s; } +.sk-spinner-fading-circle .sk-circle12:before { + -webkit-animation-delay: -0.1s; + animation-delay: -0.1s; } + +@-webkit-keyframes sk-circleFadeDelay { + 0%, 39%, 100% { + opacity: 0; } + + 40% { + opacity: 1; } } + +@keyframes sk-circleFadeDelay { + 0%, 39%, 100% { + opacity: 0; } + + 40% { + opacity: 1; } } diff --git a/react-paris-or-angular-paris/bower_components/spinkit/css/spinners/1-rotating-plane.css b/react-paris-or-angular-paris/bower_components/spinkit/css/spinners/1-rotating-plane.css new file mode 100644 index 0000000..5468e8a --- /dev/null +++ b/react-paris-or-angular-paris/bower_components/spinkit/css/spinners/1-rotating-plane.css @@ -0,0 +1,39 @@ +/* + * Usage: + * + *
+ * + */ +.sk-spinner-rotating-plane.sk-spinner { + width: 30px; + height: 30px; + background-color: #333; + margin: 0 auto; + -webkit-animation: sk-rotatePlane 1.2s infinite ease-in-out; + animation: sk-rotatePlane 1.2s infinite ease-in-out; } + +@-webkit-keyframes sk-rotatePlane { + 0% { + -webkit-transform: perspective(120px) rotateX(0deg) rotateY(0deg); + transform: perspective(120px) rotateX(0deg) rotateY(0deg); } + + 50% { + -webkit-transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg); + transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg); } + + 100% { + -webkit-transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg); + transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg); } } + +@keyframes sk-rotatePlane { + 0% { + -webkit-transform: perspective(120px) rotateX(0deg) rotateY(0deg); + transform: perspective(120px) rotateX(0deg) rotateY(0deg); } + + 50% { + -webkit-transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg); + transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg); } + + 100% { + -webkit-transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg); + transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg); } } diff --git a/react-paris-or-angular-paris/bower_components/spinkit/css/spinners/10-fading-circle.css b/react-paris-or-angular-paris/bower_components/spinkit/css/spinners/10-fading-circle.css new file mode 100644 index 0000000..0299824 --- /dev/null +++ b/react-paris-or-angular-paris/bower_components/spinkit/css/spinners/10-fading-circle.css @@ -0,0 +1,134 @@ +/* + * Usage: + * + *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ * + */ +.sk-spinner-fading-circle.sk-spinner { + margin: 0 auto; + width: 22px; + height: 22px; + position: relative; } +.sk-spinner-fading-circle .sk-circle { + width: 100%; + height: 100%; + position: absolute; + left: 0; + top: 0; } +.sk-spinner-fading-circle .sk-circle:before { + content: ''; + display: block; + margin: 0 auto; + width: 18%; + height: 18%; + background-color: #333; + border-radius: 100%; + -webkit-animation: sk-circleFadeDelay 1.2s infinite ease-in-out; + animation: sk-circleFadeDelay 1.2s infinite ease-in-out; + /* Prevent first frame from flickering when animation starts */ + -webkit-animation-fill-mode: both; + animation-fill-mode: both; } +.sk-spinner-fading-circle .sk-circle2 { + -webkit-transform: rotate(30deg); + -ms-transform: rotate(30deg); + transform: rotate(30deg); } +.sk-spinner-fading-circle .sk-circle3 { + -webkit-transform: rotate(60deg); + -ms-transform: rotate(60deg); + transform: rotate(60deg); } +.sk-spinner-fading-circle .sk-circle4 { + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); } +.sk-spinner-fading-circle .sk-circle5 { + -webkit-transform: rotate(120deg); + -ms-transform: rotate(120deg); + transform: rotate(120deg); } +.sk-spinner-fading-circle .sk-circle6 { + -webkit-transform: rotate(150deg); + -ms-transform: rotate(150deg); + transform: rotate(150deg); } +.sk-spinner-fading-circle .sk-circle7 { + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); } +.sk-spinner-fading-circle .sk-circle8 { + -webkit-transform: rotate(210deg); + -ms-transform: rotate(210deg); + transform: rotate(210deg); } +.sk-spinner-fading-circle .sk-circle9 { + -webkit-transform: rotate(240deg); + -ms-transform: rotate(240deg); + transform: rotate(240deg); } +.sk-spinner-fading-circle .sk-circle10 { + -webkit-transform: rotate(270deg); + -ms-transform: rotate(270deg); + transform: rotate(270deg); } +.sk-spinner-fading-circle .sk-circle11 { + -webkit-transform: rotate(300deg); + -ms-transform: rotate(300deg); + transform: rotate(300deg); } +.sk-spinner-fading-circle .sk-circle12 { + -webkit-transform: rotate(330deg); + -ms-transform: rotate(330deg); + transform: rotate(330deg); } +.sk-spinner-fading-circle .sk-circle2:before { + -webkit-animation-delay: -1.1s; + animation-delay: -1.1s; } +.sk-spinner-fading-circle .sk-circle3:before { + -webkit-animation-delay: -1s; + animation-delay: -1s; } +.sk-spinner-fading-circle .sk-circle4:before { + -webkit-animation-delay: -0.9s; + animation-delay: -0.9s; } +.sk-spinner-fading-circle .sk-circle5:before { + -webkit-animation-delay: -0.8s; + animation-delay: -0.8s; } +.sk-spinner-fading-circle .sk-circle6:before { + -webkit-animation-delay: -0.7s; + animation-delay: -0.7s; } +.sk-spinner-fading-circle .sk-circle7:before { + -webkit-animation-delay: -0.6s; + animation-delay: -0.6s; } +.sk-spinner-fading-circle .sk-circle8:before { + -webkit-animation-delay: -0.5s; + animation-delay: -0.5s; } +.sk-spinner-fading-circle .sk-circle9:before { + -webkit-animation-delay: -0.4s; + animation-delay: -0.4s; } +.sk-spinner-fading-circle .sk-circle10:before { + -webkit-animation-delay: -0.3s; + animation-delay: -0.3s; } +.sk-spinner-fading-circle .sk-circle11:before { + -webkit-animation-delay: -0.2s; + animation-delay: -0.2s; } +.sk-spinner-fading-circle .sk-circle12:before { + -webkit-animation-delay: -0.1s; + animation-delay: -0.1s; } + +@-webkit-keyframes sk-circleFadeDelay { + 0%, 39%, 100% { + opacity: 0; } + + 40% { + opacity: 1; } } + +@keyframes sk-circleFadeDelay { + 0%, 39%, 100% { + opacity: 0; } + + 40% { + opacity: 1; } } diff --git a/react-paris-or-angular-paris/bower_components/spinkit/css/spinners/2-double-bounce.css b/react-paris-or-angular-paris/bower_components/spinkit/css/spinners/2-double-bounce.css new file mode 100644 index 0000000..b7f0f9d --- /dev/null +++ b/react-paris-or-angular-paris/bower_components/spinkit/css/spinners/2-double-bounce.css @@ -0,0 +1,46 @@ +/* + * Usage: + * + *
+ *
+ *
+ *
+ * + */ +.sk-spinner-double-bounce.sk-spinner { + width: 40px; + height: 40px; + position: relative; + margin: 0 auto; } +.sk-spinner-double-bounce .sk-double-bounce1, .sk-spinner-double-bounce .sk-double-bounce2 { + width: 100%; + height: 100%; + border-radius: 50%; + background-color: #333; + opacity: 0.6; + position: absolute; + top: 0; + left: 0; + -webkit-animation: sk-doubleBounce 2s infinite ease-in-out; + animation: sk-doubleBounce 2s infinite ease-in-out; } +.sk-spinner-double-bounce .sk-double-bounce2 { + -webkit-animation-delay: -1s; + animation-delay: -1s; } + +@-webkit-keyframes sk-doubleBounce { + 0%, 100% { + -webkit-transform: scale(0); + transform: scale(0); } + + 50% { + -webkit-transform: scale(1); + transform: scale(1); } } + +@keyframes sk-doubleBounce { + 0%, 100% { + -webkit-transform: scale(0); + transform: scale(0); } + + 50% { + -webkit-transform: scale(1); + transform: scale(1); } } diff --git a/react-paris-or-angular-paris/bower_components/spinkit/css/spinners/3-wave.css b/react-paris-or-angular-paris/bower_components/spinkit/css/spinners/3-wave.css new file mode 100644 index 0000000..41be5d5 --- /dev/null +++ b/react-paris-or-angular-paris/bower_components/spinkit/css/spinners/3-wave.css @@ -0,0 +1,55 @@ +/* + * Usage: + * + *
+ *
+ *
+ *
+ *
+ *
+ *
+ * + */ +.sk-spinner-wave.sk-spinner { + margin: 0 auto; + width: 50px; + height: 30px; + text-align: center; + font-size: 10px; } +.sk-spinner-wave div { + background-color: #333; + height: 100%; + width: 6px; + display: inline-block; + -webkit-animation: sk-waveStretchDelay 1.2s infinite ease-in-out; + animation: sk-waveStretchDelay 1.2s infinite ease-in-out; } +.sk-spinner-wave .sk-rect2 { + -webkit-animation-delay: -1.1s; + animation-delay: -1.1s; } +.sk-spinner-wave .sk-rect3 { + -webkit-animation-delay: -1s; + animation-delay: -1s; } +.sk-spinner-wave .sk-rect4 { + -webkit-animation-delay: -0.9s; + animation-delay: -0.9s; } +.sk-spinner-wave .sk-rect5 { + -webkit-animation-delay: -0.8s; + animation-delay: -0.8s; } + +@-webkit-keyframes sk-waveStretchDelay { + 0%, 40%, 100% { + -webkit-transform: scaleY(0.4); + transform: scaleY(0.4); } + + 20% { + -webkit-transform: scaleY(1); + transform: scaleY(1); } } + +@keyframes sk-waveStretchDelay { + 0%, 40%, 100% { + -webkit-transform: scaleY(0.4); + transform: scaleY(0.4); } + + 20% { + -webkit-transform: scaleY(1); + transform: scaleY(1); } } diff --git a/react-paris-or-angular-paris/bower_components/spinkit/css/spinners/4-wandering-cubes.css b/react-paris-or-angular-paris/bower_components/spinkit/css/spinners/4-wandering-cubes.css new file mode 100644 index 0000000..8b030cb --- /dev/null +++ b/react-paris-or-angular-paris/bower_components/spinkit/css/spinners/4-wandering-cubes.css @@ -0,0 +1,70 @@ +/* + * Usage: + * + *
+ *
+ *
+ *
+ * + */ +.sk-spinner-wandering-cubes.sk-spinner { + margin: 0 auto; + width: 32px; + height: 32px; + position: relative; } +.sk-spinner-wandering-cubes .sk-cube1, .sk-spinner-wandering-cubes .sk-cube2 { + background-color: #333; + width: 10px; + height: 10px; + position: absolute; + top: 0; + left: 0; + -webkit-animation: sk-wanderingCubeMove 1.8s infinite ease-in-out; + animation: sk-wanderingCubeMove 1.8s infinite ease-in-out; } +.sk-spinner-wandering-cubes .sk-cube2 { + -webkit-animation-delay: -0.9s; + animation-delay: -0.9s; } + +@-webkit-keyframes sk-wanderingCubeMove { + 25% { + -webkit-transform: translateX(42px) rotate(-90deg) scale(0.5); + transform: translateX(42px) rotate(-90deg) scale(0.5); } + + 50% { + /* Hack to make FF rotate in the right direction */ + -webkit-transform: translateX(42px) translateY(42px) rotate(-179deg); + transform: translateX(42px) translateY(42px) rotate(-179deg); } + + 50.1% { + -webkit-transform: translateX(42px) translateY(42px) rotate(-180deg); + transform: translateX(42px) translateY(42px) rotate(-180deg); } + + 75% { + -webkit-transform: translateX(0px) translateY(42px) rotate(-270deg) scale(0.5); + transform: translateX(0px) translateY(42px) rotate(-270deg) scale(0.5); } + + 100% { + -webkit-transform: rotate(-360deg); + transform: rotate(-360deg); } } + +@keyframes sk-wanderingCubeMove { + 25% { + -webkit-transform: translateX(42px) rotate(-90deg) scale(0.5); + transform: translateX(42px) rotate(-90deg) scale(0.5); } + + 50% { + /* Hack to make FF rotate in the right direction */ + -webkit-transform: translateX(42px) translateY(42px) rotate(-179deg); + transform: translateX(42px) translateY(42px) rotate(-179deg); } + + 50.1% { + -webkit-transform: translateX(42px) translateY(42px) rotate(-180deg); + transform: translateX(42px) translateY(42px) rotate(-180deg); } + + 75% { + -webkit-transform: translateX(0px) translateY(42px) rotate(-270deg) scale(0.5); + transform: translateX(0px) translateY(42px) rotate(-270deg) scale(0.5); } + + 100% { + -webkit-transform: rotate(-360deg); + transform: rotate(-360deg); } } diff --git a/react-paris-or-angular-paris/bower_components/spinkit/css/spinners/5-pulse.css b/react-paris-or-angular-paris/bower_components/spinkit/css/spinners/5-pulse.css new file mode 100644 index 0000000..d02372d --- /dev/null +++ b/react-paris-or-angular-paris/bower_components/spinkit/css/spinners/5-pulse.css @@ -0,0 +1,34 @@ +/* + * Usage: + * + *
+ * + */ +.sk-spinner-pulse.sk-spinner { + width: 40px; + height: 40px; + margin: 0 auto; + background-color: #333; + border-radius: 100%; + -webkit-animation: sk-pulseScaleOut 1s infinite ease-in-out; + animation: sk-pulseScaleOut 1s infinite ease-in-out; } + +@-webkit-keyframes sk-pulseScaleOut { + 0% { + -webkit-transform: scale(0); + transform: scale(0); } + + 100% { + -webkit-transform: scale(1); + transform: scale(1); + opacity: 0; } } + +@keyframes sk-pulseScaleOut { + 0% { + -webkit-transform: scale(0); + transform: scale(0); } + + 100% { + -webkit-transform: scale(1); + transform: scale(1); + opacity: 0; } } diff --git a/react-paris-or-angular-paris/bower_components/spinkit/css/spinners/6-chasing-dots.css b/react-paris-or-angular-paris/bower_components/spinkit/css/spinners/6-chasing-dots.css new file mode 100644 index 0000000..7b26f3c --- /dev/null +++ b/react-paris-or-angular-paris/bower_components/spinkit/css/spinners/6-chasing-dots.css @@ -0,0 +1,60 @@ +/* + * Usage: + * + *
+ *
+ *
+ *
+ * + */ +.sk-spinner-chasing-dots.sk-spinner { + margin: 0 auto; + width: 40px; + height: 40px; + position: relative; + text-align: center; + -webkit-animation: sk-chasingDotsRotate 2s infinite linear; + animation: sk-chasingDotsRotate 2s infinite linear; } +.sk-spinner-chasing-dots .sk-dot1, .sk-spinner-chasing-dots .sk-dot2 { + width: 60%; + height: 60%; + display: inline-block; + position: absolute; + top: 0; + background-color: #333; + border-radius: 100%; + -webkit-animation: sk-chasingDotsBounce 2s infinite ease-in-out; + animation: sk-chasingDotsBounce 2s infinite ease-in-out; } +.sk-spinner-chasing-dots .sk-dot2 { + top: auto; + bottom: 0px; + -webkit-animation-delay: -1s; + animation-delay: -1s; } + +@-webkit-keyframes sk-chasingDotsRotate { + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); } } + +@keyframes sk-chasingDotsRotate { + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); } } + +@-webkit-keyframes sk-chasingDotsBounce { + 0%, 100% { + -webkit-transform: scale(0); + transform: scale(0); } + + 50% { + -webkit-transform: scale(1); + transform: scale(1); } } + +@keyframes sk-chasingDotsBounce { + 0%, 100% { + -webkit-transform: scale(0); + transform: scale(0); } + + 50% { + -webkit-transform: scale(1); + transform: scale(1); } } diff --git a/react-paris-or-angular-paris/bower_components/spinkit/css/spinners/7-three-bounce.css b/react-paris-or-angular-paris/bower_components/spinkit/css/spinners/7-three-bounce.css new file mode 100644 index 0000000..b4e18f9 --- /dev/null +++ b/react-paris-or-angular-paris/bower_components/spinkit/css/spinners/7-three-bounce.css @@ -0,0 +1,49 @@ +/* + * Usage: + * + *
+ *
+ *
+ *
+ *
+ * + */ +.sk-spinner-three-bounce.sk-spinner { + margin: 0 auto; + width: 70px; + text-align: center; } +.sk-spinner-three-bounce div { + width: 18px; + height: 18px; + background-color: #333; + border-radius: 100%; + display: inline-block; + -webkit-animation: sk-threeBounceDelay 1.4s infinite ease-in-out; + animation: sk-threeBounceDelay 1.4s infinite ease-in-out; + /* Prevent first frame from flickering when animation starts */ + -webkit-animation-fill-mode: both; + animation-fill-mode: both; } +.sk-spinner-three-bounce .sk-bounce1 { + -webkit-animation-delay: -0.32s; + animation-delay: -0.32s; } +.sk-spinner-three-bounce .sk-bounce2 { + -webkit-animation-delay: -0.16s; + animation-delay: -0.16s; } + +@-webkit-keyframes sk-threeBounceDelay { + 0%, 80%, 100% { + -webkit-transform: scale(0); + transform: scale(0); } + + 40% { + -webkit-transform: scale(1); + transform: scale(1); } } + +@keyframes sk-threeBounceDelay { + 0%, 80%, 100% { + -webkit-transform: scale(0); + transform: scale(0); } + + 40% { + -webkit-transform: scale(1); + transform: scale(1); } } diff --git a/react-paris-or-angular-paris/bower_components/spinkit/css/spinners/8-circle.css b/react-paris-or-angular-paris/bower_components/spinkit/css/spinners/8-circle.css new file mode 100644 index 0000000..b8d1cbc --- /dev/null +++ b/react-paris-or-angular-paris/bower_components/spinkit/css/spinners/8-circle.css @@ -0,0 +1,138 @@ +/* + * Usage: + * + *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ * + */ +.sk-spinner-circle.sk-spinner { + margin: 0 auto; + width: 22px; + height: 22px; + position: relative; } +.sk-spinner-circle .sk-circle { + width: 100%; + height: 100%; + position: absolute; + left: 0; + top: 0; } +.sk-spinner-circle .sk-circle:before { + content: ''; + display: block; + margin: 0 auto; + width: 20%; + height: 20%; + background-color: #333; + border-radius: 100%; + -webkit-animation: sk-circleBounceDelay 1.2s infinite ease-in-out; + animation: sk-circleBounceDelay 1.2s infinite ease-in-out; + /* Prevent first frame from flickering when animation starts */ + -webkit-animation-fill-mode: both; + animation-fill-mode: both; } +.sk-spinner-circle .sk-circle2 { + -webkit-transform: rotate(30deg); + -ms-transform: rotate(30deg); + transform: rotate(30deg); } +.sk-spinner-circle .sk-circle3 { + -webkit-transform: rotate(60deg); + -ms-transform: rotate(60deg); + transform: rotate(60deg); } +.sk-spinner-circle .sk-circle4 { + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); } +.sk-spinner-circle .sk-circle5 { + -webkit-transform: rotate(120deg); + -ms-transform: rotate(120deg); + transform: rotate(120deg); } +.sk-spinner-circle .sk-circle6 { + -webkit-transform: rotate(150deg); + -ms-transform: rotate(150deg); + transform: rotate(150deg); } +.sk-spinner-circle .sk-circle7 { + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); } +.sk-spinner-circle .sk-circle8 { + -webkit-transform: rotate(210deg); + -ms-transform: rotate(210deg); + transform: rotate(210deg); } +.sk-spinner-circle .sk-circle9 { + -webkit-transform: rotate(240deg); + -ms-transform: rotate(240deg); + transform: rotate(240deg); } +.sk-spinner-circle .sk-circle10 { + -webkit-transform: rotate(270deg); + -ms-transform: rotate(270deg); + transform: rotate(270deg); } +.sk-spinner-circle .sk-circle11 { + -webkit-transform: rotate(300deg); + -ms-transform: rotate(300deg); + transform: rotate(300deg); } +.sk-spinner-circle .sk-circle12 { + -webkit-transform: rotate(330deg); + -ms-transform: rotate(330deg); + transform: rotate(330deg); } +.sk-spinner-circle .sk-circle2:before { + -webkit-animation-delay: -1.1s; + animation-delay: -1.1s; } +.sk-spinner-circle .sk-circle3:before { + -webkit-animation-delay: -1s; + animation-delay: -1s; } +.sk-spinner-circle .sk-circle4:before { + -webkit-animation-delay: -0.9s; + animation-delay: -0.9s; } +.sk-spinner-circle .sk-circle5:before { + -webkit-animation-delay: -0.8s; + animation-delay: -0.8s; } +.sk-spinner-circle .sk-circle6:before { + -webkit-animation-delay: -0.7s; + animation-delay: -0.7s; } +.sk-spinner-circle .sk-circle7:before { + -webkit-animation-delay: -0.6s; + animation-delay: -0.6s; } +.sk-spinner-circle .sk-circle8:before { + -webkit-animation-delay: -0.5s; + animation-delay: -0.5s; } +.sk-spinner-circle .sk-circle9:before { + -webkit-animation-delay: -0.4s; + animation-delay: -0.4s; } +.sk-spinner-circle .sk-circle10:before { + -webkit-animation-delay: -0.3s; + animation-delay: -0.3s; } +.sk-spinner-circle .sk-circle11:before { + -webkit-animation-delay: -0.2s; + animation-delay: -0.2s; } +.sk-spinner-circle .sk-circle12:before { + -webkit-animation-delay: -0.1s; + animation-delay: -0.1s; } + +@-webkit-keyframes sk-circleBounceDelay { + 0%, 80%, 100% { + -webkit-transform: scale(0); + transform: scale(0); } + + 40% { + -webkit-transform: scale(1); + transform: scale(1); } } + +@keyframes sk-circleBounceDelay { + 0%, 80%, 100% { + -webkit-transform: scale(0); + transform: scale(0); } + + 40% { + -webkit-transform: scale(1); + transform: scale(1); } } diff --git a/react-paris-or-angular-paris/bower_components/spinkit/css/spinners/9-cube-grid.css b/react-paris-or-angular-paris/bower_components/spinkit/css/spinners/9-cube-grid.css new file mode 100644 index 0000000..3cfa82e --- /dev/null +++ b/react-paris-or-angular-paris/bower_components/spinkit/css/spinners/9-cube-grid.css @@ -0,0 +1,79 @@ +/* + * Usage: + * + *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ * + */ +.sk-spinner-cube-grid { + /* + * Spinner positions + * 1 2 3 + * 4 5 6 + * 7 8 9 + */ } + .sk-spinner-cube-grid.sk-spinner { + width: 30px; + height: 30px; + margin: 0 auto; } + .sk-spinner-cube-grid .sk-cube { + width: 33%; + height: 33%; + background-color: #333; + float: left; + -webkit-animation: sk-cubeGridScaleDelay 1.3s infinite ease-in-out; + animation: sk-cubeGridScaleDelay 1.3s infinite ease-in-out; } + .sk-spinner-cube-grid .sk-cube:nth-child(1) { + -webkit-animation-delay: 0.2s; + animation-delay: 0.2s; } + .sk-spinner-cube-grid .sk-cube:nth-child(2) { + -webkit-animation-delay: 0.3s; + animation-delay: 0.3s; } + .sk-spinner-cube-grid .sk-cube:nth-child(3) { + -webkit-animation-delay: 0.4s; + animation-delay: 0.4s; } + .sk-spinner-cube-grid .sk-cube:nth-child(4) { + -webkit-animation-delay: 0.1s; + animation-delay: 0.1s; } + .sk-spinner-cube-grid .sk-cube:nth-child(5) { + -webkit-animation-delay: 0.2s; + animation-delay: 0.2s; } + .sk-spinner-cube-grid .sk-cube:nth-child(6) { + -webkit-animation-delay: 0.3s; + animation-delay: 0.3s; } + .sk-spinner-cube-grid .sk-cube:nth-child(7) { + -webkit-animation-delay: 0s; + animation-delay: 0s; } + .sk-spinner-cube-grid .sk-cube:nth-child(8) { + -webkit-animation-delay: 0.1s; + animation-delay: 0.1s; } + .sk-spinner-cube-grid .sk-cube:nth-child(9) { + -webkit-animation-delay: 0.2s; + animation-delay: 0.2s; } + +@-webkit-keyframes sk-cubeGridScaleDelay { + 0%, 70%, 100% { + -webkit-transform: scale3D(1, 1, 1); + transform: scale3D(1, 1, 1); } + + 35% { + -webkit-transform: scale3D(0, 0, 1); + transform: scale3D(0, 0, 1); } } + +@keyframes sk-cubeGridScaleDelay { + 0%, 70%, 100% { + -webkit-transform: scale3D(1, 1, 1); + transform: scale3D(1, 1, 1); } + + 35% { + -webkit-transform: scale3D(0, 0, 1); + transform: scale3D(0, 0, 1); } } diff --git a/react-paris-or-angular-paris/bower_components/spinkit/css/spinners/9-wordpress.css b/react-paris-or-angular-paris/bower_components/spinkit/css/spinners/9-wordpress.css new file mode 100644 index 0000000..19a919b --- /dev/null +++ b/react-paris-or-angular-paris/bower_components/spinkit/css/spinners/9-wordpress.css @@ -0,0 +1,44 @@ +/* + * Usage: + * + *
+ * + *
+ * + */ +.sk-spinner-wordpress.sk-spinner { + background-color: #333; + width: 30px; + height: 30px; + border-radius: 30px; + position: relative; + margin: 0 auto; + -webkit-animation: sk-innerCircle 1s linear infinite; + animation: sk-innerCircle 1s linear infinite; } +.sk-spinner-wordpress .sk-inner-circle { + display: block; + background-color: #fff; + width: 8px; + height: 8px; + position: absolute; + border-radius: 8px; + top: 5px; + left: 5px; } + +@-webkit-keyframes sk-innerCircle { + 0% { + -webkit-transform: rotate(0); + transform: rotate(0); } + + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); } } + +@keyframes sk-innerCircle { + 0% { + -webkit-transform: rotate(0); + transform: rotate(0); } + + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); } } diff --git a/react-paris-or-angular-paris/bower_components/spinkit/examples/1-rotating-plane.html b/react-paris-or-angular-paris/bower_components/spinkit/examples/1-rotating-plane.html new file mode 100644 index 0000000..cdb2743 --- /dev/null +++ b/react-paris-or-angular-paris/bower_components/spinkit/examples/1-rotating-plane.html @@ -0,0 +1,53 @@ + + + + 1 rotating plane + + + + + +
+ + \ No newline at end of file diff --git a/react-paris-or-angular-paris/bower_components/spinkit/examples/10-fading-circle.html b/react-paris-or-angular-paris/bower_components/spinkit/examples/10-fading-circle.html new file mode 100644 index 0000000..c7ff00b --- /dev/null +++ b/react-paris-or-angular-paris/bower_components/spinkit/examples/10-fading-circle.html @@ -0,0 +1,161 @@ + + + + 10 fading circle + + + + + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + \ No newline at end of file diff --git a/react-paris-or-angular-paris/bower_components/spinkit/examples/2-double-bounce.html b/react-paris-or-angular-paris/bower_components/spinkit/examples/2-double-bounce.html new file mode 100644 index 0000000..7f2ca60 --- /dev/null +++ b/react-paris-or-angular-paris/bower_components/spinkit/examples/2-double-bounce.html @@ -0,0 +1,63 @@ + + + + 2 double bounce + + + + + +
+
+
+
+ + \ No newline at end of file diff --git a/react-paris-or-angular-paris/bower_components/spinkit/examples/3-wave.html b/react-paris-or-angular-paris/bower_components/spinkit/examples/3-wave.html new file mode 100644 index 0000000..7a65a2d --- /dev/null +++ b/react-paris-or-angular-paris/bower_components/spinkit/examples/3-wave.html @@ -0,0 +1,75 @@ + + + + 3 wave + + + + + +
+
+
+
+
+
+
+ + \ No newline at end of file diff --git a/react-paris-or-angular-paris/bower_components/spinkit/examples/4-wandering-cubes.html b/react-paris-or-angular-paris/bower_components/spinkit/examples/4-wandering-cubes.html new file mode 100644 index 0000000..cd2de52 --- /dev/null +++ b/react-paris-or-angular-paris/bower_components/spinkit/examples/4-wandering-cubes.html @@ -0,0 +1,87 @@ + + + + 4 wandering cubes + + + + + +
+
+
+
+ + \ No newline at end of file diff --git a/react-paris-or-angular-paris/bower_components/spinkit/examples/5-pulse.html b/react-paris-or-angular-paris/bower_components/spinkit/examples/5-pulse.html new file mode 100644 index 0000000..bd6f193 --- /dev/null +++ b/react-paris-or-angular-paris/bower_components/spinkit/examples/5-pulse.html @@ -0,0 +1,48 @@ + + + + 5 pulse + + + + + +
+ + \ No newline at end of file diff --git a/react-paris-or-angular-paris/bower_components/spinkit/examples/6-chasing-dots.html b/react-paris-or-angular-paris/bower_components/spinkit/examples/6-chasing-dots.html new file mode 100644 index 0000000..5350ce9 --- /dev/null +++ b/react-paris-or-angular-paris/bower_components/spinkit/examples/6-chasing-dots.html @@ -0,0 +1,77 @@ + + + + 6 chasing dots + + + + + +
+
+
+
+ + \ No newline at end of file diff --git a/react-paris-or-angular-paris/bower_components/spinkit/examples/7-three-bounce.html b/react-paris-or-angular-paris/bower_components/spinkit/examples/7-three-bounce.html new file mode 100644 index 0000000..d04271f --- /dev/null +++ b/react-paris-or-angular-paris/bower_components/spinkit/examples/7-three-bounce.html @@ -0,0 +1,67 @@ + + + + 7 three bounce + + + + + +
+
+
+
+
+ + \ No newline at end of file diff --git a/react-paris-or-angular-paris/bower_components/spinkit/examples/8-circle.html b/react-paris-or-angular-paris/bower_components/spinkit/examples/8-circle.html new file mode 100644 index 0000000..39c17c8 --- /dev/null +++ b/react-paris-or-angular-paris/bower_components/spinkit/examples/8-circle.html @@ -0,0 +1,165 @@ + + + + 8 circle + + + + + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + \ No newline at end of file diff --git a/react-paris-or-angular-paris/bower_components/spinkit/examples/9-cube-grid.html b/react-paris-or-angular-paris/bower_components/spinkit/examples/9-cube-grid.html new file mode 100644 index 0000000..972e0b1 --- /dev/null +++ b/react-paris-or-angular-paris/bower_components/spinkit/examples/9-cube-grid.html @@ -0,0 +1,103 @@ + + + + 9 cube grid + + + + + +
+
+
+
+
+
+
+
+
+
+
+ + \ No newline at end of file diff --git a/react-paris-or-angular-paris/bower_components/spinkit/examples/9-wordpress.html b/react-paris-or-angular-paris/bower_components/spinkit/examples/9-wordpress.html new file mode 100644 index 0000000..fe8c625 --- /dev/null +++ b/react-paris-or-angular-paris/bower_components/spinkit/examples/9-wordpress.html @@ -0,0 +1,60 @@ + + + + 9 wordpress + + + + + +
+ +
+ + \ No newline at end of file diff --git a/react-paris-or-angular-paris/bower_components/spinkit/gulpfile.js b/react-paris-or-angular-paris/bower_components/spinkit/gulpfile.js new file mode 100644 index 0000000..596d9a5 --- /dev/null +++ b/react-paris-or-angular-paris/bower_components/spinkit/gulpfile.js @@ -0,0 +1,96 @@ +'use strict'; +var _ = require('lodash'); +var fs = require('fs'); +var Q = require('q'); +var gulp = require('gulp'); +var autoprefixer = require('gulp-autoprefixer'); +var sass = require('gulp-sass'); +var del = require('del'); + +var htmlDir = './examples', + cssDir = './css', + scssDir = './scss', + htmlTmpl = '\n\ +\n\ +\n\ + <%= title %>\n\ + \n\ +\n\ +\n\ + <%= bodyContent %>\n\ +\n\ +'; + +var getHtmlUsageExample = function(cssContent) { + return cssContent.match(/Usage:([\s\S]+\*.+\>)/)[1].replace(/ \*/g, ''); +}; + +gulp.task('clean-styles', function(cb) { + del([cssDir], cb); +}); + + +gulp.task('styles', ['clean-styles'], function() { + return gulp.src(scssDir + '/**/*.scss') + .pipe(sass({errLogToConsole: true})) + .pipe(autoprefixer('last 2 versions', {map: false})) + .pipe(gulp.dest(cssDir)); +}); + + +gulp.task('clean-html', function(cb) { + del([htmlDir], cb); +}); + + +// Generates HTML files from the usage examples found in the CSS files +gulp.task('html', ['styles', 'clean-html'], function() { + var spinnersDir = cssDir + '/spinners/'; + var allDeferred = Q.defer(); + + fs.mkdirSync(htmlDir); + + fs.readdir(spinnersDir, function(err, filenames) { + var promises = filenames.map(function(filename) { + if (filename.indexOf('.css') === -1) { return; } + var deferred = Q.defer(); + var title = filename.replace('.css', '').replace(/-/g, ' '); + var cssFilepath = spinnersDir + filename; + var htmlFilename = filename.replace('.css', '.html'); + + var readCssFile = function(err, cssContent) { + if (err) { console.log(err); deferred.reject(err); } + var bodyContent = getHtmlUsageExample(cssContent); + var html = _.template(htmlTmpl, { + css: cssContent, + title: title, + bodyContent: bodyContent + }); + fs.writeFile(htmlDir + '/' + htmlFilename, html, function(err, data) { + if (err) { console.log(err); deferred.reject(err); } + deferred.resolve(); + }); + }; + + fs.readFile(cssFilepath, {encoding: 'utf8'}, readCssFile); + return deferred.promise; + }); + Q.all(promises).then(allDeferred.resolve); + + }); + + return allDeferred; +}); + + +gulp.task('build', ['html', 'styles']); + + +gulp.task('default', ['build']); + + +gulp.task('watch', ['build'], function() { + gulp.watch(scssDir + '/**/*.scss', ['build']); +}); diff --git a/react-paris-or-angular-paris/bower_components/spinkit/package.json b/react-paris-or-angular-paris/bower_components/spinkit/package.json new file mode 100644 index 0000000..32240f0 --- /dev/null +++ b/react-paris-or-angular-paris/bower_components/spinkit/package.json @@ -0,0 +1,27 @@ +{ + "name": "SpinKit", + "version": "1.0.1", + "description": "A collection of loading indicators animated with CSS", + "main": "gulpfile.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "https://github.com/tobiasahlin/SpinKit.git" + }, + "author": "Tobias Ahlin", + "license": "MIT", + "bugs": { + "url": "https://github.com/tobiasahlin/SpinKit/issues" + }, + "homepage": "https://github.com/tobiasahlin/SpinKit", + "devDependencies": { + "del": "^1.1.1", + "gulp": "^3.8.8", + "gulp-autoprefixer": "^2.0.0", + "gulp-sass": "^1.2.4", + "lodash": "^2.4.1", + "q": "^1.0.1" + } +} diff --git a/react-paris-or-angular-paris/bower_components/spinkit/scss/_variables.scss b/react-paris-or-angular-paris/bower_components/spinkit/scss/_variables.scss new file mode 100644 index 0000000..b465643 --- /dev/null +++ b/react-paris-or-angular-paris/bower_components/spinkit/scss/_variables.scss @@ -0,0 +1,2 @@ +$spinkit-spinner-margin: 0 auto !default; +$spinkit-spinner-color: #333 !default; diff --git a/react-paris-or-angular-paris/bower_components/spinkit/scss/spinkit.scss b/react-paris-or-angular-paris/bower_components/spinkit/scss/spinkit.scss new file mode 100644 index 0000000..b2490a8 --- /dev/null +++ b/react-paris-or-angular-paris/bower_components/spinkit/scss/spinkit.scss @@ -0,0 +1,12 @@ +@import + "spinners/1-rotating-plane", + "spinners/2-double-bounce", + "spinners/3-wave", + "spinners/4-wandering-cubes", + "spinners/5-pulse", + "spinners/6-chasing-dots", + "spinners/7-three-bounce", + "spinners/8-circle", + "spinners/9-cube-grid", + "spinners/9-wordpress", + "spinners/10-fading-circle"; diff --git a/react-paris-or-angular-paris/bower_components/spinkit/scss/spinners/1-rotating-plane.scss b/react-paris-or-angular-paris/bower_components/spinkit/scss/spinners/1-rotating-plane.scss new file mode 100644 index 0000000..a6374f0 --- /dev/null +++ b/react-paris-or-angular-paris/bower_components/spinkit/scss/spinners/1-rotating-plane.scss @@ -0,0 +1,28 @@ +/* + * Usage: + * + *
+ * + */ +@import "../variables"; + +.sk-spinner-rotating-plane { + &.sk-spinner { + width: 30px; + height: 30px; + background-color: $spinkit-spinner-color; + + margin: $spinkit-spinner-margin; + animation: sk-rotatePlane 1.2s infinite ease-in-out; + } +} + +@keyframes sk-rotatePlane { + 0% { + transform: perspective(120px) rotateX(0deg) rotateY(0deg); + } 50% { + transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg); + } 100% { + transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg); + } +} diff --git a/react-paris-or-angular-paris/bower_components/spinkit/scss/spinners/10-fading-circle.scss b/react-paris-or-angular-paris/bower_components/spinkit/scss/spinners/10-fading-circle.scss new file mode 100644 index 0000000..2de6e60 --- /dev/null +++ b/react-paris-or-angular-paris/bower_components/spinkit/scss/spinners/10-fading-circle.scss @@ -0,0 +1,82 @@ +/* + * Usage: + * + *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ * + */ +@import "../variables"; + +.sk-spinner-fading-circle { + + &.sk-spinner { + margin: $spinkit-spinner-margin; + width: 22px; + height: 22px; + position: relative; + } + + .sk-circle { + width: 100%; + height: 100%; + position: absolute; + left: 0; + top: 0; + } + + .sk-circle:before { + content: ''; + display: block; + margin: 0 auto; + width: 18%; + height: 18%; + background-color: $spinkit-spinner-color; + + border-radius: 100%; + animation: sk-circleFadeDelay 1.2s infinite ease-in-out; + /* Prevent first frame from flickering when animation starts */ + animation-fill-mode: both; + } + + .sk-circle2 { transform: rotate(30deg) } + .sk-circle3 { transform: rotate(60deg) } + .sk-circle4 { transform: rotate(90deg) } + .sk-circle5 { transform: rotate(120deg) } + .sk-circle6 { transform: rotate(150deg) } + .sk-circle7 { transform: rotate(180deg) } + .sk-circle8 { transform: rotate(210deg) } + .sk-circle9 { transform: rotate(240deg) } + .sk-circle10 { transform: rotate(270deg) } + .sk-circle11 { transform: rotate(300deg) } + .sk-circle12 { transform: rotate(330deg) } + + .sk-circle2:before { animation-delay: -1.1s } + .sk-circle3:before { animation-delay: -1.0s } + .sk-circle4:before { animation-delay: -0.9s } + .sk-circle5:before { animation-delay: -0.8s } + .sk-circle6:before { animation-delay: -0.7s } + .sk-circle7:before { animation-delay: -0.6s } + .sk-circle8:before { animation-delay: -0.5s } + .sk-circle9:before { animation-delay: -0.4s } + .sk-circle10:before { animation-delay: -0.3s } + .sk-circle11:before { animation-delay: -0.2s } + .sk-circle12:before { animation-delay: -0.1s } + +} + +@keyframes sk-circleFadeDelay { + 0%, 39%, 100% { opacity: 0 } + 40% { opacity: 1 } +} diff --git a/react-paris-or-angular-paris/bower_components/spinkit/scss/spinners/2-double-bounce.scss b/react-paris-or-angular-paris/bower_components/spinkit/scss/spinners/2-double-bounce.scss new file mode 100644 index 0000000..6434010 --- /dev/null +++ b/react-paris-or-angular-paris/bower_components/spinkit/scss/spinners/2-double-bounce.scss @@ -0,0 +1,42 @@ +/* + * Usage: + * + *
+ *
+ *
+ *
+ * + */ +@import "../variables"; + +.sk-spinner-double-bounce { + &.sk-spinner { + width: 40px; + height: 40px; + + position: relative; + margin: $spinkit-spinner-margin; + } + + .sk-double-bounce1, .sk-double-bounce2 { + width: 100%; + height: 100%; + border-radius: 50%; + background-color: $spinkit-spinner-color; + opacity: 0.6; + position: absolute; + top: 0; + left: 0; + + animation: sk-doubleBounce 2.0s infinite ease-in-out; + } + + .sk-double-bounce2 { + animation-delay: -1.0s; + } +} + +@keyframes sk-doubleBounce { + 0%, 100% { transform: scale(0.0) } + 50% { transform: scale(1.0) } +} diff --git a/react-paris-or-angular-paris/bower_components/spinkit/scss/spinners/3-wave.scss b/react-paris-or-angular-paris/bower_components/spinkit/scss/spinners/3-wave.scss new file mode 100644 index 0000000..3324aa5 --- /dev/null +++ b/react-paris-or-angular-paris/bower_components/spinkit/scss/spinners/3-wave.scss @@ -0,0 +1,42 @@ +/* + * Usage: + * + *
+ *
+ *
+ *
+ *
+ *
+ *
+ * + */ +@import "../variables"; + +.sk-spinner-wave { + &.sk-spinner { + margin: $spinkit-spinner-margin; + width: 50px; + height: 30px; + text-align: center; + font-size: 10px; + } + + div { + background-color: $spinkit-spinner-color; + height: 100%; + width: 6px; + display: inline-block; + + animation: sk-waveStretchDelay 1.2s infinite ease-in-out; + } + + .sk-rect2 { animation-delay: -1.1s } + .sk-rect3 { animation-delay: -1.0s } + .sk-rect4 { animation-delay: -0.9s } + .sk-rect5 { animation-delay: -0.8s } +} + +@keyframes sk-waveStretchDelay { + 0%, 40%, 100% { transform: scaleY(0.4) } + 20% { transform: scaleY(1.0) } +} diff --git a/react-paris-or-angular-paris/bower_components/spinkit/scss/spinners/4-wandering-cubes.scss b/react-paris-or-angular-paris/bower_components/spinkit/scss/spinners/4-wandering-cubes.scss new file mode 100644 index 0000000..ca4995f --- /dev/null +++ b/react-paris-or-angular-paris/bower_components/spinkit/scss/spinners/4-wandering-cubes.scss @@ -0,0 +1,49 @@ +/* + * Usage: + * + *
+ *
+ *
+ *
+ * + */ +@import "../variables"; + +.sk-spinner-wandering-cubes { + &.sk-spinner { + margin: $spinkit-spinner-margin; + width: 32px; + height: 32px; + position: relative; + } + + .sk-cube1, .sk-cube2 { + background-color: $spinkit-spinner-color; + width: 10px; + height: 10px; + position: absolute; + top: 0; + left: 0; + + animation: sk-wanderingCubeMove 1.8s infinite ease-in-out; + } + + .sk-cube2 { + animation-delay: -0.9s; + } +} + +@keyframes sk-wanderingCubeMove { + 25% { + transform: translateX(42px) rotate(-90deg) scale(0.5); + } 50% { + /* Hack to make FF rotate in the right direction */ + transform: translateX(42px) translateY(42px) rotate(-179deg); + } 50.1% { + transform: translateX(42px) translateY(42px) rotate(-180deg); + } 75% { + transform: translateX(0px) translateY(42px) rotate(-270deg) scale(0.5); + } 100% { + transform: rotate(-360deg); + } +} diff --git a/react-paris-or-angular-paris/bower_components/spinkit/scss/spinners/5-pulse.scss b/react-paris-or-angular-paris/bower_components/spinkit/scss/spinners/5-pulse.scss new file mode 100644 index 0000000..b967937 --- /dev/null +++ b/react-paris-or-angular-paris/bower_components/spinkit/scss/spinners/5-pulse.scss @@ -0,0 +1,28 @@ +/* + * Usage: + * + *
+ * + */ +@import "../variables"; + +.sk-spinner-pulse { + &.sk-spinner { + width: 40px; + height: 40px; + margin: $spinkit-spinner-margin; + background-color: $spinkit-spinner-color; + + border-radius: 100%; + animation: sk-pulseScaleOut 1.0s infinite ease-in-out; + } +} + +@keyframes sk-pulseScaleOut { + 0% { + transform: scale(0.0); + } 100% { + transform: scale(1.0); + opacity: 0; + } +} diff --git a/react-paris-or-angular-paris/bower_components/spinkit/scss/spinners/6-chasing-dots.scss b/react-paris-or-angular-paris/bower_components/spinkit/scss/spinners/6-chasing-dots.scss new file mode 100644 index 0000000..557eb2f --- /dev/null +++ b/react-paris-or-angular-paris/bower_components/spinkit/scss/spinners/6-chasing-dots.scss @@ -0,0 +1,54 @@ +/* + * Usage: + * + *
+ *
+ *
+ *
+ * + */ +@import "../variables"; + +.sk-spinner-chasing-dots { + &.sk-spinner { + margin: $spinkit-spinner-margin; + width: 40px; + height: 40px; + position: relative; + text-align: center; + + animation: sk-chasingDotsRotate 2.0s infinite linear; + } + + .sk-dot1, .sk-dot2 { + width: 60%; + height: 60%; + display: inline-block; + position: absolute; + top: 0; + background-color: $spinkit-spinner-color; + border-radius: 100%; + + animation: sk-chasingDotsBounce 2.0s infinite ease-in-out; + } + + .sk-dot2 { + top: auto; + bottom: 0px; + animation-delay: -1.0s; + } +} + +@keyframes sk-chasingDotsRotate { + 100% { + transform: rotate(360deg); + } +} + +@keyframes sk-chasingDotsBounce { + 0%, 100% { + transform: scale(0.0); + } 50% { + transform: scale(1.0); + } +} diff --git a/react-paris-or-angular-paris/bower_components/spinkit/scss/spinners/7-three-bounce.scss b/react-paris-or-angular-paris/bower_components/spinkit/scss/spinners/7-three-bounce.scss new file mode 100644 index 0000000..0400f9d --- /dev/null +++ b/react-paris-or-angular-paris/bower_components/spinkit/scss/spinners/7-three-bounce.scss @@ -0,0 +1,47 @@ +/* + * Usage: + * + *
+ *
+ *
+ *
+ *
+ * + */ + @import "../variables"; + +.sk-spinner-three-bounce { + &.sk-spinner { + margin: $spinkit-spinner-margin; + width: 70px; + text-align: center; + } + + div { + width: 18px; + height: 18px; + background-color: $spinkit-spinner-color; + + border-radius: 100%; + display: inline-block; + animation: sk-threeBounceDelay 1.4s infinite ease-in-out; + /* Prevent first frame from flickering when animation starts */ + animation-fill-mode: both; + } + + .sk-bounce1 { + animation-delay: -0.32s; + } + + .sk-bounce2 { + animation-delay: -0.16s; + } +} + +@keyframes sk-threeBounceDelay { + 0%, 80%, 100% { + transform: scale(0.0); + } 40% { + transform: scale(1.0); + } +} diff --git a/react-paris-or-angular-paris/bower_components/spinkit/scss/spinners/8-circle.scss b/react-paris-or-angular-paris/bower_components/spinkit/scss/spinners/8-circle.scss new file mode 100644 index 0000000..6a71df3 --- /dev/null +++ b/react-paris-or-angular-paris/bower_components/spinkit/scss/spinners/8-circle.scss @@ -0,0 +1,80 @@ +/* + * Usage: + * + *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ * + */ +@import "../variables"; + +.sk-spinner-circle { + &.sk-spinner { + margin: $spinkit-spinner-margin; + width: 22px; + height: 22px; + position: relative; + } + + .sk-circle { + width: 100%; + height: 100%; + position: absolute; + left: 0; + top: 0; + } + + .sk-circle:before { + content: ''; + display: block; + margin: 0 auto; + width: 20%; + height: 20%; + background-color: $spinkit-spinner-color; + + border-radius: 100%; + animation: sk-circleBounceDelay 1.2s infinite ease-in-out; + /* Prevent first frame from flickering when animation starts */ + animation-fill-mode: both; + } + + .sk-circle2 { transform: rotate(30deg) } + .sk-circle3 { transform: rotate(60deg) } + .sk-circle4 { transform: rotate(90deg) } + .sk-circle5 { transform: rotate(120deg) } + .sk-circle6 { transform: rotate(150deg) } + .sk-circle7 { transform: rotate(180deg) } + .sk-circle8 { transform: rotate(210deg) } + .sk-circle9 { transform: rotate(240deg) } + .sk-circle10 { transform: rotate(270deg) } + .sk-circle11 { transform: rotate(300deg) } + .sk-circle12 { transform: rotate(330deg) } + + .sk-circle2:before { animation-delay: -1.1s } + .sk-circle3:before { animation-delay: -1.0s } + .sk-circle4:before { animation-delay: -0.9s } + .sk-circle5:before { animation-delay: -0.8s } + .sk-circle6:before { animation-delay: -0.7s } + .sk-circle7:before { animation-delay: -0.6s } + .sk-circle8:before { animation-delay: -0.5s } + .sk-circle9:before { animation-delay: -0.4s } + .sk-circle10:before { animation-delay: -0.3s } + .sk-circle11:before { animation-delay: -0.2s } + .sk-circle12:before { animation-delay: -0.1s } +} + +@keyframes sk-circleBounceDelay { + 0%, 80%, 100% { transform: scale(0.0) } + 40% { transform: scale(1.0) } +} diff --git a/react-paris-or-angular-paris/bower_components/spinkit/scss/spinners/9-cube-grid.scss b/react-paris-or-angular-paris/bower_components/spinkit/scss/spinners/9-cube-grid.scss new file mode 100644 index 0000000..44ba3e8 --- /dev/null +++ b/react-paris-or-angular-paris/bower_components/spinkit/scss/spinners/9-cube-grid.scss @@ -0,0 +1,55 @@ +/* + * Usage: + * + *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ * + */ +@import "../variables"; + +.sk-spinner-cube-grid { + &.sk-spinner { + width: 30px; + height: 30px; + margin: $spinkit-spinner-margin; + } + + .sk-cube { + width: 33%; + height: 33%; + background-color: $spinkit-spinner-color; + float: left; + animation: sk-cubeGridScaleDelay 1.3s infinite ease-in-out; + } + + /* + * Spinner positions + * 1 2 3 + * 4 5 6 + * 7 8 9 + */ + + .sk-cube:nth-child(1) { animation-delay: 0.2s } + .sk-cube:nth-child(2) { animation-delay: 0.3s } + .sk-cube:nth-child(3) { animation-delay: 0.4s } + .sk-cube:nth-child(4) { animation-delay: 0.1s } + .sk-cube:nth-child(5) { animation-delay: 0.2s } + .sk-cube:nth-child(6) { animation-delay: 0.3s } + .sk-cube:nth-child(7) { animation-delay: 0.0s } + .sk-cube:nth-child(8) { animation-delay: 0.1s } + .sk-cube:nth-child(9) { animation-delay: 0.2s } +} + +@keyframes sk-cubeGridScaleDelay { + 0%, 70%, 100% { transform:scale3D(1.0, 1.0, 1.0) } + 35% { transform:scale3D(0.0, 0.0, 1.0) } +} diff --git a/react-paris-or-angular-paris/bower_components/spinkit/scss/spinners/9-wordpress.scss b/react-paris-or-angular-paris/bower_components/spinkit/scss/spinners/9-wordpress.scss new file mode 100644 index 0000000..2b78e57 --- /dev/null +++ b/react-paris-or-angular-paris/bower_components/spinkit/scss/spinners/9-wordpress.scss @@ -0,0 +1,37 @@ +/* + * Usage: + * + *
+ * + *
+ * + */ +@import "../variables"; + +.sk-spinner-wordpress { + &.sk-spinner { + background-color: $spinkit-spinner-color; + width: 30px; + height: 30px; + border-radius: 30px; + position: relative; + margin: $spinkit-spinner-margin; + animation: sk-innerCircle 1s linear infinite; + } + + .sk-inner-circle { + display: block; + background-color: #fff; + width: 8px; + height: 8px; + position: absolute; + border-radius: 8px; + top: 5px; + left: 5px; + } +} + +@keyframes sk-innerCircle { + 0% { transform: rotate(0) } + 100% { transform: rotate(360deg) } +} diff --git a/react-paris-or-angular-paris/docs/ss1.png b/react-paris-or-angular-paris/docs/ss1.png new file mode 100644 index 0000000..36d6181 Binary files /dev/null and b/react-paris-or-angular-paris/docs/ss1.png differ diff --git a/react-paris-or-angular-paris/gulpfile.js b/react-paris-or-angular-paris/gulpfile.js new file mode 100644 index 0000000..5e1723f --- /dev/null +++ b/react-paris-or-angular-paris/gulpfile.js @@ -0,0 +1,103 @@ +'use strict'; + +var gulp = require('gulp'), + changed = require('gulp-changed'), + sass = require('gulp-sass'), + csso = require('gulp-csso'), + autoprefixer = require('autoprefixer-core'), + browserify = require('browserify'), + watchify = require('watchify'), + source = require('vinyl-source-stream'), + buffer = require('vinyl-buffer'), + eslint = require('gulp-eslint'), + babelify = require('babelify'), + uglify = require('gulp-uglify'), + del = require('del'), + notify = require('gulp-notify'), + browserSync = require('browser-sync'), + sourcemaps = require('gulp-sourcemaps'), + postcss = require('gulp-postcss'), + reload = browserSync.reload, + p = { + jsx: './scripts/app.jsx', + scss: 'styles/main.scss', + bundle: 'app.js', + distJs: 'public/js', + distCss: 'public/css' + }; + +gulp.task('clean', function(cb) { + del(['dist'], cb); +}); + +gulp.task('browserSync', function() { + browserSync({ + server: { + baseDir: './' + } + }); +}); + +gulp.task('watchify', function() { + var bundler = watchify(browserify(p.jsx, watchify.args)); + + function rebundle() { + return bundler + .bundle() + .on('error', notify.onError()) + .pipe(source(p.bundle)) + .pipe(gulp.dest(p.distJs)) + .pipe(reload({stream: true})); + } + + bundler.transform(babelify) + .on('update', rebundle); + return rebundle(); +}); + +gulp.task('browserify', function() { + browserify(p.jsx) + .transform(babelify) + .bundle() + .pipe(source(p.bundle)) + .pipe(buffer()) + .pipe(sourcemaps.init({loadMaps: true})) + .pipe(uglify()) + .pipe(sourcemaps.write('./')) + .pipe(gulp.dest(p.distJs)); +}); + +gulp.task('styles', function() { + return gulp.src(p.scss) + .pipe(changed(p.distCss)) + .pipe(sass({errLogToConsole: true})) + .on('error', notify.onError()) + .pipe(postcss([autoprefixer('last 1 version')])) + .pipe(csso()) + .pipe(gulp.dest(p.distCss)) + .pipe(reload({stream: true})); +}); + +gulp.task('lint', function() { + return gulp.src('scripts/**/*.jsx') + .pipe(eslint()) + .pipe(eslint.format()); +}); + +gulp.task('watchTask', function() { + gulp.watch(p.scss, ['styles']); + gulp.watch('scripts/**/*.jsx', ['lint']); +}); + +gulp.task('watch', ['clean'], function() { + gulp.start(['watchTask', 'watchify', 'styles']); +}); + +gulp.task('build', ['clean'], function() { + process.env.NODE_ENV = 'production'; + gulp.start(['browserify', 'styles']); +}); + +gulp.task('default', function() { + console.log('Run "gulp watch or gulp build"'); +}); diff --git a/react-paris-or-angular-paris/package.json b/react-paris-or-angular-paris/package.json new file mode 100644 index 0000000..dc605ea --- /dev/null +++ b/react-paris-or-angular-paris/package.json @@ -0,0 +1,50 @@ +{ + "name": "paris-react-angular", + "version": "0.0.0", + "private": true, + "scripts": { + "start": "node ./bin/www" + }, + "dependencies": { + "body-parser": "~1.12.4", + "cookie-parser": "~1.3.5", + "debug": "~2.2.0", + "express": "~4.12.4", + "jade": "~1.9.2", + "lodash": "^3.10.0", + "moment": "^2.10.3", + "morgan": "~1.5.3", + "nodemon": "^1.3.7", + "react": "^0.13.3", + "request": "^2.58.0", + "request-promise": "^0.4.2", + "serve-favicon": "~2.2.1", + "superagent": "^1.2.0" + }, + "devDependencies": { + "autoprefixer-core": "^5.2.1", + "babel": "^5.5.8", + "babel-eslint": "^3.1.15", + "babelify": "^6.1.2", + "browser-sync": "^2.7.11", + "browserify": "^10.2.4", + "chai": "^3.0.0", + "del": "^1.2.0", + "eslint": "^0.23.0", + "eslint-plugin-react": "^2.5.2", + "gulp": "^3.9.0", + "gulp-changed": "^1.2.1", + "gulp-csso": "^1.0.0", + "gulp-eslint": "^0.14.0", + "gulp-notify": "^2.2.0", + "gulp-postcss": "^5.1.9", + "gulp-sass": "^2.0.1", + "gulp-sourcemaps": "^1.5.2", + "gulp-uglify": "^1.2.0", + "mocha": "^2.2.5", + "react-tools": "^0.13.3", + "vinyl-buffer": "^1.0.0", + "vinyl-source-stream": "^1.1.0", + "watchify": "^3.2.2" + } +} diff --git a/react-paris-or-angular-paris/public/css/main.css b/react-paris-or-angular-paris/public/css/main.css new file mode 100644 index 0000000..b86d0b3 --- /dev/null +++ b/react-paris-or-angular-paris/public/css/main.css @@ -0,0 +1,5 @@ +/*! + * Bootstrap v3.3.5 (http://getbootstrap.com) + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */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}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0}mark{color:#000;background:#ff0}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}hr{height:0;box-sizing:content-box}pre{overflow:auto}samp{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[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}@media print{*,*:before,*:after{color:#000!important;text-shadow:none!important;background:transparent!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:400;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,.glyphicon-btc:before,.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before,.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before,.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"}*{box-sizing:border-box}*:before,*:after{box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:transparent}body{font-size:14px;line-height:1.42857143;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;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:400;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;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,.list-inline{padding-left:0;list-style:none}.list-inline{margin-left:-5px}.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: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[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{color:#c7254e;background-color:#f9f2f4;border-radius:4px}code,kbd{padding:2px 4px;font-size:90%}kbd{color:#fff;background-color:#333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;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{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{float:left}.col-xs-12{float:left;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{float:left}.col-sm-12{float:left;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{float:left}.col-md-12{float:left;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{float:left}.col-lg-12{float:left;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}caption,th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>thead>tr>th{padding:8px;line-height:1.42857143;border-top:1px solid #ddd}.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,.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:700}input[type="search"]{box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:1px 0 0;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{padding-top:7px}output,.form-control{display:block;font-size:14px;line-height:1.42857143;color:#555}.form-control{width:100%;height:34px;padding:6px 12px;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;box-shadow:inset 0 1px 1px rgba(0,0,0,.075);transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;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:400;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:400;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"],.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline,.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;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;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;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;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;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;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:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;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;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);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:400;color:#337ab7;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;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;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;transition-timing-function:ease;transition-duration:.35s;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;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;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;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: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 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{float:left}.btn-group>.btn,.btn-group-vertical>.btn{position:relative}.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{box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{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+.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{white-space:nowrap}.input-group-addon,.input-group-btn{width:1%;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="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{font-size:0;white-space:nowrap}.input-group-btn,.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,.nav>li>a{position:relative;display:block}.nav>li>a{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;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;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;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;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:8px -15px;border-top:1px solid transparent;border-bottom:1px solid transparent;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;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,.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,.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:700;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: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-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;background-color:#eee}.jumbotron,.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;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: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}}@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;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;box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);transition:width .6s ease}.progress-striped .progress-bar,.progress-bar-striped{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);background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-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: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: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: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: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;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}.panel-title,.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,.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,.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;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: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:0 0;border:0}.modal-open,.modal{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-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;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;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{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: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}.tooltip.top-left .tooltip-arrow,.tooltip.top-right .tooltip-arrow{bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{left:5px}.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: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;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;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,.carousel-inner{position:relative}.carousel-inner{width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;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{transition:-webkit-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: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: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:transparent;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,.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}}.sk-spinner-double-bounce.sk-spinner{width:40px;height:40px;position:relative;margin:0 auto}.sk-spinner-double-bounce .sk-double-bounce1,.sk-spinner-double-bounce .sk-double-bounce2{width:100%;height:100%;border-radius:50%;background-color:#fff;opacity:.6;position:absolute;top:0;left:0;-webkit-animation:sk-doubleBounce 2s infinite ease-in-out;animation:sk-doubleBounce 2s infinite ease-in-out}.sk-spinner-double-bounce .sk-double-bounce2{-webkit-animation-delay:-1s;animation-delay:-1s}@-webkit-keyframes sk-doubleBounce{0%,100%{-webkit-transform:scale(0);transform:scale(0)}50%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes sk-doubleBounce{0%,100%{-webkit-transform:scale(0);transform:scale(0)}50%{-webkit-transform:scale(1);transform:scale(1)}}html,body{height:100%}body{color:#fff;font-family:"avenir next",helvetica,arial,sans-serif;background-repeat:no-repeat;background-image:url(/images/paris.jpg);background-position:center;background-size:cover}.lead{font-weight:400}.container{padding:50px 0}.small-hr{margin-top:100px;margin-bottom:20px;width:25%}.small-hr,.text-quiet{opacity:.5} \ No newline at end of file diff --git a/react-paris-or-angular-paris/public/images/paris.jpg b/react-paris-or-angular-paris/public/images/paris.jpg new file mode 100644 index 0000000..41276d3 Binary files /dev/null and b/react-paris-or-angular-paris/public/images/paris.jpg differ diff --git a/react-paris-or-angular-paris/public/js/app.js b/react-paris-or-angular-paris/public/js/app.js new file mode 100644 index 0000000..6bfd990 --- /dev/null +++ b/react-paris-or-angular-paris/public/js/app.js @@ -0,0 +1,7 @@ +!function e(t,n,r){function o(i,s){if(!n[i]){if(!t[i]){var u="function"==typeof require&&require;if(!s&&u)return u(i,!0);if(a)return a(i,!0);var c=new Error("Cannot find module '"+i+"'");throw c.code="MODULE_NOT_FOUND",c}var l=n[i]={exports:{}};t[i][0].call(l.exports,function(e){var n=t[i][1][e];return o(n?n:e)},l,l.exports,e,t,n,r)}return n[i].exports}for(var a="function"==typeof require&&require,i=0;i0)for(n in kn)r=kn[n],o=t[r],"undefined"!=typeof o&&(e[r]=o);return e}function m(e){h(this,e),this._d=new Date(+e._d),An===!1&&(An=!0,n.updateOffset(this),An=!1)}function v(e){return e instanceof m||null!=e&&null!=e._isAMomentObject}function g(e){var t=+e,n=0;return 0!==t&&isFinite(t)&&(n=t>=0?Math.floor(t):Math.ceil(t)),n}function y(e,t,n){var r,o=Math.min(e.length,t.length),a=Math.abs(e.length-t.length),i=0;for(r=0;o>r;r++)(n&&e[r]!==t[r]||!n&&g(e[r])!==g(t[r]))&&i++;return i+a}function E(){}function C(e){return e?e.toLowerCase().replace("_","-"):e}function _(e){for(var t,n,r,o,a=0;a0;){if(r=M(o.slice(0,t).join("-")))return r;if(n&&n.length>=t&&y(o,n,!0)>=t-1)break;t--}a++}return null}function M(n){var r=null;if(!Un[n]&&"undefined"!=typeof t&&t&&t.exports)try{r=Nn._abbr,e("./locale/"+n),R(r)}catch(o){}return Un[n]}function R(e,t){var n;return e&&(n="undefined"==typeof t?D(e):b(e,t),n&&(Nn=n)),Nn._abbr}function b(e,t){return null!==t?(t.abbr=e,Un[e]||(Un[e]=new E),Un[e].set(t),R(e),Un[e]):(delete Un[e],null)}function D(e){var t;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return Nn;if(!o(e)){if(t=M(e))return t;e=[e]}return _(e)}function w(e,t){var n=e.toLowerCase();Ln[n]=Ln[n+"s"]=Ln[t]=e}function x(e){return"string"==typeof e?Ln[e]||Ln[e.toLowerCase()]:void 0}function O(e){var t,n,r={};for(n in e)s(e,n)&&(t=x(n),t&&(r[t]=e[n]));return r}function T(e,t){return function(r){return null!=r?(I(this,e,r),n.updateOffset(this,t),this):P(this,e)}}function P(e,t){return e._d["get"+(e._isUTC?"UTC":"")+t]()}function I(e,t,n){return e._d["set"+(e._isUTC?"UTC":"")+t](n)}function S(e,t){var n;if("object"==typeof e)for(n in e)this.set(n,e[n]);else if(e=x(e),"function"==typeof this[e])return this[e](t);return this}function N(e,t,n){for(var r=""+Math.abs(e),o=e>=0;r.lengtht;t++)r[t]=Yn[r[t]]?Yn[r[t]]:A(r[t]);return function(o){var a="";for(t=0;n>t;t++)a+=r[t]instanceof Function?r[t].call(o,e):r[t];return a}}function L(e,t){return e.isValid()?(t=F(t,e.localeData()),Bn[t]||(Bn[t]=U(t)),Bn[t](e)):e.localeData().invalidDate()}function F(e,t){function n(e){return t.longDateFormat(e)||e}var r=5;for(jn.lastIndex=0;r>=0&&jn.test(e);)e=e.replace(jn,n),jn.lastIndex=0,r-=1;return e}function j(e,t,n){nr[e]="function"==typeof t?t:function(e){return e&&n?n:t}}function B(e,t){return s(nr,e)?nr[e](t._strict,t._locale):new RegExp(Y(e))}function Y(e){return e.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(e,t,n,r,o){return t||n||r||o}).replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function V(e,t){var n,r=t;for("string"==typeof e&&(e=[e]),"number"==typeof t&&(r=function(e,n){n[t]=g(e)}),n=0;nr;r++){if(o=c([2e3,r]),n&&!this._longMonthsParse[r]&&(this._longMonthsParse[r]=new RegExp("^"+this.months(o,"").replace(".","")+"$","i"),this._shortMonthsParse[r]=new RegExp("^"+this.monthsShort(o,"").replace(".","")+"$","i")),n||this._monthsParse[r]||(a="^"+this.months(o,"")+"|^"+this.monthsShort(o,""),this._monthsParse[r]=new RegExp(a.replace(".",""),"i")),n&&"MMMM"===t&&this._longMonthsParse[r].test(e))return r;if(n&&"MMM"===t&&this._shortMonthsParse[r].test(e))return r;if(!n&&this._monthsParse[r].test(e))return r}}function Q(e,t){var n;return"string"==typeof t&&(t=e.localeData().monthsParse(t),"number"!=typeof t)?e:(n=Math.min(e.date(),G(e.year(),t)),e._d["set"+(e._isUTC?"UTC":"")+"Month"](t,n),e)}function X(e){return null!=e?(Q(this,e),n.updateOffset(this,!0),this):P(this,"Month")}function Z(){return G(this.year(),this.month())}function J(e){var t,n=e._a;return n&&-2===p(e).overflow&&(t=n[ar]<0||n[ar]>11?ar:n[ir]<1||n[ir]>G(n[or],n[ar])?ir:n[sr]<0||n[sr]>24||24===n[sr]&&(0!==n[ur]||0!==n[cr]||0!==n[lr])?sr:n[ur]<0||n[ur]>59?ur:n[cr]<0||n[cr]>59?cr:n[lr]<0||n[lr]>999?lr:-1,p(e)._overflowDayOfYear&&(or>t||t>ir)&&(t=ir),p(e).overflow=t),e}function $(e){n.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+e)}function ee(e,t){var n=!0,r=e+"\n"+(new Error).stack;return u(function(){return n&&($(r),n=!1),t.apply(this,arguments)},t)}function te(e,t){fr[e]||($(t),fr[e]=!0)}function ne(e){var t,n,r=e._i,o=hr.exec(r);if(o){for(p(e).iso=!0,t=0,n=mr.length;n>t;t++)if(mr[t][1].exec(r)){e._f=mr[t][0]+(o[6]||" ");break}for(t=0,n=vr.length;n>t;t++)if(vr[t][1].exec(r)){e._f+=vr[t][0];break}r.match($n)&&(e._f+="Z"),_e(e)}else e._isValid=!1}function re(e){var t=gr.exec(e._i);return null!==t?void(e._d=new Date(+t[1])):(ne(e),void(e._isValid===!1&&(delete e._isValid,n.createFromInputFallback(e))))}function oe(e,t,n,r,o,a,i){var s=new Date(e,t,n,r,o,a,i);return 1970>e&&s.setFullYear(e),s}function ae(e){var t=new Date(Date.UTC.apply(null,arguments));return 1970>e&&t.setUTCFullYear(e),t}function ie(e){return se(e)?366:365}function se(e){return e%4===0&&e%100!==0||e%400===0}function ue(){return se(this.year())}function ce(e,t,n){var r,o=n-t,a=n-e.day();return a>o&&(a-=7),o-7>a&&(a+=7),r=Oe(e).add(a,"d"),{week:Math.ceil(r.dayOfYear()/7),year:r.year()}}function le(e){return ce(e,this._week.dow,this._week.doy).week}function pe(){return this._week.dow}function de(){return this._week.doy}function fe(e){var t=this.localeData().week(this);return null==e?t:this.add(7*(e-t),"d")}function he(e){var t=ce(this,1,4).week;return null==e?t:this.add(7*(e-t),"d")}function me(e,t,n,r,o){var a,i,s=ae(e,0,1).getUTCDay();return s=0===s?7:s,n=null!=n?n:o,a=o-s+(s>r?7:0)-(o>s?7:0),i=7*(t-1)+(n-o)+a+1,{year:i>0?e:e-1,dayOfYear:i>0?i:ie(e-1)+i}}function ve(e){var t=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==e?t:this.add(e-t,"d")}function ge(e,t,n){return null!=e?e:null!=t?t:n}function ye(e){var t=new Date;return e._useUTC?[t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate()]:[t.getFullYear(),t.getMonth(),t.getDate()]}function Ee(e){var t,n,r,o,a=[];if(!e._d){for(r=ye(e),e._w&&null==e._a[ir]&&null==e._a[ar]&&Ce(e),e._dayOfYear&&(o=ge(e._a[or],r[or]),e._dayOfYear>ie(o)&&(p(e)._overflowDayOfYear=!0),n=ae(o,0,e._dayOfYear),e._a[ar]=n.getUTCMonth(),e._a[ir]=n.getUTCDate()),t=0;3>t&&null==e._a[t];++t)e._a[t]=a[t]=r[t];for(;7>t;t++)e._a[t]=a[t]=null==e._a[t]?2===t?1:0:e._a[t];24===e._a[sr]&&0===e._a[ur]&&0===e._a[cr]&&0===e._a[lr]&&(e._nextDay=!0,e._a[sr]=0),e._d=(e._useUTC?ae:oe).apply(null,a),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[sr]=24)}}function Ce(e){var t,n,r,o,a,i,s;t=e._w,null!=t.GG||null!=t.W||null!=t.E?(a=1,i=4,n=ge(t.GG,e._a[or],ce(Oe(),1,4).year),r=ge(t.W,1),o=ge(t.E,1)):(a=e._locale._week.dow,i=e._locale._week.doy,n=ge(t.gg,e._a[or],ce(Oe(),a,i).year),r=ge(t.w,1),null!=t.d?(o=t.d,a>o&&++r):o=null!=t.e?t.e+a:a),s=me(n,r,o,i,a),e._a[or]=s.year,e._dayOfYear=s.dayOfYear}function _e(e){if(e._f===n.ISO_8601)return void ne(e);e._a=[],p(e).empty=!0;var t,r,o,a,i,s=""+e._i,u=s.length,c=0;for(o=F(e._f,e._locale).match(Fn)||[],t=0;t0&&p(e).unusedInput.push(i),s=s.slice(s.indexOf(r)+r.length),c+=r.length),Yn[a]?(r?p(e).empty=!1:p(e).unusedTokens.push(a),W(a,r,e)):e._strict&&!r&&p(e).unusedTokens.push(a);p(e).charsLeftOver=u-c,s.length>0&&p(e).unusedInput.push(s),p(e).bigHour===!0&&e._a[sr]<=12&&e._a[sr]>0&&(p(e).bigHour=void 0),e._a[sr]=Me(e._locale,e._a[sr],e._meridiem),Ee(e),J(e)}function Me(e,t,n){var r;return null==n?t:null!=e.meridiemHour?e.meridiemHour(t,n):null!=e.isPM?(r=e.isPM(n),r&&12>t&&(t+=12),r||12!==t||(t=0),t):t}function Re(e){var t,n,r,o,a;if(0===e._f.length)return p(e).invalidFormat=!0,void(e._d=new Date(0/0));for(o=0;oa)&&(r=a,n=t));u(e,n||t)}function be(e){if(!e._d){var t=O(e._i);e._a=[t.year,t.month,t.day||t.date,t.hour,t.minute,t.second,t.millisecond],Ee(e)}}function De(e){var t,n=e._i,r=e._f;return e._locale=e._locale||D(e._l),null===n||void 0===r&&""===n?f({nullInput:!0}):("string"==typeof n&&(e._i=n=e._locale.preparse(n)),v(n)?new m(J(n)):(o(r)?Re(e):r?_e(e):a(n)?e._d=n:we(e),t=new m(J(e)),t._nextDay&&(t.add(1,"d"),t._nextDay=void 0),t))}function we(e){var t=e._i;void 0===t?e._d=new Date:a(t)?e._d=new Date(+t):"string"==typeof t?re(e):o(t)?(e._a=i(t.slice(0),function(e){return parseInt(e,10)}),Ee(e)):"object"==typeof t?be(e):"number"==typeof t?e._d=new Date(t):n.createFromInputFallback(e)}function xe(e,t,n,r,o){var a={};return"boolean"==typeof n&&(r=n,n=void 0),a._isAMomentObject=!0,a._useUTC=a._isUTC=o,a._l=n,a._i=e,a._f=t,a._strict=r,De(a)}function Oe(e,t,n,r){return xe(e,t,n,r,!1)}function Te(e,t){var n,r;if(1===t.length&&o(t[0])&&(t=t[0]),!t.length)return Oe();for(n=t[0],r=1;re&&(e=-e,n="-"),n+N(~~(e/60),2)+t+N(~~e%60,2)})}function Ae(e){var t=(e||"").match($n)||[],n=t[t.length-1]||[],r=(n+"").match(Mr)||["-",0,0],o=+(60*r[1])+g(r[2]);return"+"===r[0]?o:-o}function Ue(e,t){var r,o;return t._isUTC?(r=t.clone(),o=(v(e)||a(e)?+e:+Oe(e))-+r,r._d.setTime(+r._d+o),n.updateOffset(r,!1),r):Oe(e).local()}function Le(e){return 15*-Math.round(e._d.getTimezoneOffset()/15)}function Fe(e,t){var r,o=this._offset||0;return null!=e?("string"==typeof e&&(e=Ae(e)),Math.abs(e)<16&&(e=60*e),!this._isUTC&&t&&(r=Le(this)),this._offset=e,this._isUTC=!0,null!=r&&this.add(r,"m"),o!==e&&(!t||this._changeInProgress?et(this,Qe(e-o,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,n.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?o:Le(this)}function je(e,t){return null!=e?("string"!=typeof e&&(e=-e),this.utcOffset(e,t),this):-this.utcOffset()}function Be(e){return this.utcOffset(0,e)}function Ye(e){return this._isUTC&&(this.utcOffset(0,e),this._isUTC=!1,e&&this.subtract(Le(this),"m")),this}function Ve(){return this._tzm?this.utcOffset(this._tzm):"string"==typeof this._i&&this.utcOffset(Ae(this._i)),this}function He(e){return e=e?Oe(e).utcOffset():0,(this.utcOffset()-e)%60===0}function We(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Ge(){if(this._a){var e=this._isUTC?c(this._a):Oe(this._a);return this.isValid()&&y(this._a,e.toArray())>0}return!1}function qe(){return!this._isUTC}function Ke(){return this._isUTC}function ze(){return this._isUTC&&0===this._offset}function Qe(e,t){var n,r,o,a=e,i=null;return Ne(e)?a={ms:e._milliseconds,d:e._days,M:e._months}:"number"==typeof e?(a={},t?a[t]=e:a.milliseconds=e):(i=Rr.exec(e))?(n="-"===i[1]?-1:1,a={y:0,d:g(i[ir])*n,h:g(i[sr])*n,m:g(i[ur])*n,s:g(i[cr])*n,ms:g(i[lr])*n}):(i=br.exec(e))?(n="-"===i[1]?-1:1,a={y:Xe(i[2],n),M:Xe(i[3],n),d:Xe(i[4],n),h:Xe(i[5],n),m:Xe(i[6],n),s:Xe(i[7],n),w:Xe(i[8],n)}):null==a?a={}:"object"==typeof a&&("from"in a||"to"in a)&&(o=Je(Oe(a.from),Oe(a.to)),a={},a.ms=o.milliseconds,a.M=o.months),r=new Se(a),Ne(e)&&s(e,"_locale")&&(r._locale=e._locale),r}function Xe(e,t){var n=e&&parseFloat(e.replace(",","."));return(isNaN(n)?0:n)*t}function Ze(e,t){var n={milliseconds:0,months:0};return n.months=t.month()-e.month()+12*(t.year()-e.year()),e.clone().add(n.months,"M").isAfter(t)&&--n.months,n.milliseconds=+t-+e.clone().add(n.months,"M"),n}function Je(e,t){var n;return t=Ue(t,e),e.isBefore(t)?n=Ze(e,t):(n=Ze(t,e),n.milliseconds=-n.milliseconds,n.months=-n.months),n}function $e(e,t){return function(n,r){var o,a;return null===r||isNaN(+r)||(te(t,"moment()."+t+"(period, number) is deprecated. Please use moment()."+t+"(number, period)."),a=n,n=r,r=a),n="string"==typeof n?+n:n,o=Qe(n,r),et(this,o,e),this}}function et(e,t,r,o){var a=t._milliseconds,i=t._days,s=t._months;o=null==o?!0:o,a&&e._d.setTime(+e._d+a*r),i&&I(e,"Date",P(e,"Date")+i*r),s&&Q(e,P(e,"Month")+s*r),o&&n.updateOffset(e,i||s)}function tt(e){var t=e||Oe(),n=Ue(t,this).startOf("day"),r=this.diff(n,"days",!0),o=-6>r?"sameElse":-1>r?"lastWeek":0>r?"lastDay":1>r?"sameDay":2>r?"nextDay":7>r?"nextWeek":"sameElse";return this.format(this.localeData().calendar(o,this,Oe(t)))}function nt(){return new m(this)}function rt(e,t){var n;return t=x("undefined"!=typeof t?t:"millisecond"),"millisecond"===t?(e=v(e)?e:Oe(e),+this>+e):(n=v(e)?+e:+Oe(e),n<+this.clone().startOf(t))}function ot(e,t){var n;return t=x("undefined"!=typeof t?t:"millisecond"),"millisecond"===t?(e=v(e)?e:Oe(e),+e>+this):(n=v(e)?+e:+Oe(e),+this.clone().endOf(t)e?Math.ceil(e):Math.floor(e)}function ut(e,t,n){var r,o,a=Ue(e,this),i=6e4*(a.utcOffset()-this.utcOffset());return t=x(t),"year"===t||"month"===t||"quarter"===t?(o=ct(this,a),"quarter"===t?o/=3:"year"===t&&(o/=12)):(r=this-a,o="second"===t?r/1e3:"minute"===t?r/6e4:"hour"===t?r/36e5:"day"===t?(r-i)/864e5:"week"===t?(r-i)/6048e5:r),n?o:st(o)}function ct(e,t){var n,r,o=12*(t.year()-e.year())+(t.month()-e.month()),a=e.clone().add(o,"months");return 0>t-a?(n=e.clone().add(o-1,"months"),r=(t-a)/(a-n)):(n=e.clone().add(o+1,"months"),r=(t-a)/(n-a)),-(o+r)}function lt(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")}function pt(){var e=this.clone().utc();return 0t;t++)if(this._weekdaysParse[t]||(n=Oe([2e3,1]).day(t),r="^"+this.weekdays(n,"")+"|^"+this.weekdaysShort(n,"")+"|^"+this.weekdaysMin(n,""),this._weekdaysParse[t]=new RegExp(r.replace(".",""),"i")),this._weekdaysParse[t].test(e))return t}function Bt(e){var t=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=e?(e=At(e,this.localeData()),this.add(e-t,"d")):t}function Yt(e){var t=(this.day()+7-this.localeData()._week.dow)%7;return null==e?t:this.add(e-t,"d")}function Vt(e){return null==e?this.day()||7:this.day(this.day()%7?e:e-7)}function Ht(e,t){k(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)})}function Wt(e,t){return t._meridiemParse}function Gt(e){return"p"===(e+"").toLowerCase().charAt(0)}function qt(e,t,n){return e>11?n?"pm":"PM":n?"am":"AM"}function Kt(e){k(0,[e,3],0,"millisecond")}function zt(){return this._isUTC?"UTC":""}function Qt(){return this._isUTC?"Coordinated Universal Time":""}function Xt(e){return Oe(1e3*e)}function Zt(){return Oe.apply(null,arguments).parseZone()}function Jt(e,t,n){var r=this._calendar[e];return"function"==typeof r?r.call(t,n):r}function $t(e){var t=this._longDateFormat[e];return!t&&this._longDateFormat[e.toUpperCase()]&&(t=this._longDateFormat[e.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(e){return e.slice(1)}),this._longDateFormat[e]=t),t}function en(){return this._invalidDate}function tn(e){return this._ordinal.replace("%d",e)}function nn(e){return e}function rn(e,t,n,r){var o=this._relativeTime[n];return"function"==typeof o?o(e,t,n,r):o.replace(/%d/i,e)}function on(e,t){var n=this._relativeTime[e>0?"future":"past"];return"function"==typeof n?n(t):n.replace(/%s/i,t)}function an(e){var t,n;for(n in e)t=e[n],"function"==typeof t?this[n]=t:this["_"+n]=t;this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)}function sn(e,t,n,r){var o=D(),a=c().set(r,t);return o[n](a,e)}function un(e,t,n,r,o){if("number"==typeof e&&(t=e,e=void 0),e=e||"",null!=t)return sn(e,t,n,o);var a,i=[];for(a=0;r>a;a++)i[a]=sn(e,a,n,o);return i}function cn(e,t){return un(e,t,"months",12,"month")}function ln(e,t){return un(e,t,"monthsShort",12,"month")}function pn(e,t){return un(e,t,"weekdays",7,"day")}function dn(e,t){return un(e,t,"weekdaysShort",7,"day")}function fn(e,t){return un(e,t,"weekdaysMin",7,"day")}function hn(){var e=this._data;return this._milliseconds=qr(this._milliseconds),this._days=qr(this._days),this._months=qr(this._months),e.milliseconds=qr(e.milliseconds),e.seconds=qr(e.seconds),e.minutes=qr(e.minutes),e.hours=qr(e.hours),e.months=qr(e.months),e.years=qr(e.years),this}function mn(e,t,n,r){var o=Qe(t,n);return e._milliseconds+=r*o._milliseconds,e._days+=r*o._days,e._months+=r*o._months,e._bubble()}function vn(e,t){return mn(this,e,t,1)}function gn(e,t){return mn(this,e,t,-1)}function yn(){var e,t,n,r=this._milliseconds,o=this._days,a=this._months,i=this._data,s=0;return i.milliseconds=r%1e3,e=st(r/1e3),i.seconds=e%60,t=st(e/60),i.minutes=t%60,n=st(t/60),i.hours=n%24,o+=st(n/24),s=st(En(o)),o-=st(Cn(s)),a+=st(o/30),o%=30,s+=st(a/12),a%=12,i.days=o,i.months=a,i.years=s,this}function En(e){return 400*e/146097}function Cn(e){return 146097*e/400}function _n(e){var t,n,r=this._milliseconds;if(e=x(e),"month"===e||"year"===e)return t=this._days+r/864e5,n=this._months+12*En(t),"month"===e?n:n/12;switch(t=this._days+Math.round(Cn(this._months/12)),e){case"week":return t/7+r/6048e5;case"day":return t+r/864e5;case"hour":return 24*t+r/36e5;case"minute":return 1440*t+r/6e4;case"second":return 86400*t+r/1e3;case"millisecond":return Math.floor(864e5*t)+r;default:throw new Error("Unknown unit "+e)}}function Mn(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*g(this._months/12)}function Rn(e){return function(){return this.as(e)}}function bn(e){return e=x(e),this[e+"s"]()}function Dn(e){return function(){return this._data[e]}}function wn(){return st(this.days()/7)}function xn(e,t,n,r,o){return o.relativeTime(t||1,!!n,e,r)}function On(e,t,n){var r=Qe(e).abs(),o=uo(r.as("s")),a=uo(r.as("m")),i=uo(r.as("h")),s=uo(r.as("d")),u=uo(r.as("M")),c=uo(r.as("y")),l=o0,l[4]=n,xn.apply(null,l)}function Tn(e,t){return void 0===co[e]?!1:void 0===t?co[e]:(co[e]=t,!0)}function Pn(e){var t=this.localeData(),n=On(this,!e,t);return e&&(n=t.pastFuture(+this,n)),t.postformat(n)}function In(){var e=lo(this.years()),t=lo(this.months()),n=lo(this.days()),r=lo(this.hours()),o=lo(this.minutes()),a=lo(this.seconds()+this.milliseconds()/1e3),i=this.asSeconds();return i?(0>i?"-":"")+"P"+(e?e+"Y":"")+(t?t+"M":"")+(n?n+"D":"")+(r||o||a?"T":"")+(r?r+"H":"")+(o?o+"M":"")+(a?a+"S":""):"P0D"}var Sn,Nn,kn=n.momentProperties=[],An=!1,Un={},Ln={},Fn=/(\[[^\[]*\])|(\\)?(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,4}|x|X|zz?|ZZ?|.)/g,jn=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,Bn={},Yn={},Vn=/\d/,Hn=/\d\d/,Wn=/\d{3}/,Gn=/\d{4}/,qn=/[+-]?\d{6}/,Kn=/\d\d?/,zn=/\d{1,3}/,Qn=/\d{1,4}/,Xn=/[+-]?\d{1,6}/,Zn=/\d+/,Jn=/[+-]?\d+/,$n=/Z|[+-]\d\d:?\d\d/gi,er=/[+-]?\d+(\.\d{1,3})?/,tr=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,nr={},rr={},or=0,ar=1,ir=2,sr=3,ur=4,cr=5,lr=6;k("M",["MM",2],"Mo",function(){return this.month()+1}),k("MMM",0,0,function(e){return this.localeData().monthsShort(this,e)}),k("MMMM",0,0,function(e){return this.localeData().months(this,e)}),w("month","M"),j("M",Kn),j("MM",Kn,Hn),j("MMM",tr),j("MMMM",tr),V(["M","MM"],function(e,t){t[ar]=g(e)-1}),V(["MMM","MMMM"],function(e,t,n,r){var o=n._locale.monthsParse(e,r,n._strict);null!=o?t[ar]=o:p(n).invalidMonth=e});var pr="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),dr="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),fr={};n.suppressDeprecationWarnings=!1;var hr=/^\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)?)?$/,mr=[["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}/]],vr=[["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/]],gr=/^\/?Date\((\-?\d+)/i;n.createFromInputFallback=ee("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(e){e._d=new Date(e._i+(e._useUTC?" UTC":""))}),k(0,["YY",2],0,function(){return this.year()%100}),k(0,["YYYY",4],0,"year"),k(0,["YYYYY",5],0,"year"),k(0,["YYYYYY",6,!0],0,"year"),w("year","y"),j("Y",Jn),j("YY",Kn,Hn),j("YYYY",Qn,Gn),j("YYYYY",Xn,qn),j("YYYYYY",Xn,qn),V(["YYYY","YYYYY","YYYYYY"],or),V("YY",function(e,t){t[or]=n.parseTwoDigitYear(e)}),n.parseTwoDigitYear=function(e){return g(e)+(g(e)>68?1900:2e3)};var yr=T("FullYear",!1);k("w",["ww",2],"wo","week"),k("W",["WW",2],"Wo","isoWeek"),w("week","w"),w("isoWeek","W"),j("w",Kn),j("ww",Kn,Hn),j("W",Kn),j("WW",Kn,Hn),H(["w","ww","W","WW"],function(e,t,n,r){t[r.substr(0,1)]=g(e)});var Er={dow:0,doy:6};k("DDD",["DDDD",3],"DDDo","dayOfYear"),w("dayOfYear","DDD"),j("DDD",zn),j("DDDD",Wn),V(["DDD","DDDD"],function(e,t,n){n._dayOfYear=g(e)}),n.ISO_8601=function(){};var Cr=ee("moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548",function(){var e=Oe.apply(null,arguments);return this>e?this:e}),_r=ee("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(){var e=Oe.apply(null,arguments);return e>this?this:e});ke("Z",":"),ke("ZZ",""),j("Z",$n),j("ZZ",$n),V(["Z","ZZ"],function(e,t,n){n._useUTC=!0,n._tzm=Ae(e)});var Mr=/([\+\-]|\d\d)/gi;n.updateOffset=function(){};var Rr=/(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/,br=/^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/;Qe.fn=Se.prototype;var Dr=$e(1,"add"),wr=$e(-1,"subtract");n.defaultFormat="YYYY-MM-DDTHH:mm:ssZ";var xr=ee("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(e){return void 0===e?this.localeData():this.locale(e)});k(0,["gg",2],0,function(){return this.weekYear()%100}),k(0,["GG",2],0,function(){return this.isoWeekYear()%100}),Ot("gggg","weekYear"),Ot("ggggg","weekYear"),Ot("GGGG","isoWeekYear"),Ot("GGGGG","isoWeekYear"),w("weekYear","gg"),w("isoWeekYear","GG"),j("G",Jn),j("g",Jn),j("GG",Kn,Hn),j("gg",Kn,Hn),j("GGGG",Qn,Gn),j("gggg",Qn,Gn),j("GGGGG",Xn,qn),j("ggggg",Xn,qn),H(["gggg","ggggg","GGGG","GGGGG"],function(e,t,n,r){t[r.substr(0,2)]=g(e)}),H(["gg","GG"],function(e,t,r,o){t[o]=n.parseTwoDigitYear(e)}),k("Q",0,0,"quarter"),w("quarter","Q"),j("Q",Vn),V("Q",function(e,t){t[ar]=3*(g(e)-1)}),k("D",["DD",2],"Do","date"),w("date","D"),j("D",Kn),j("DD",Kn,Hn),j("Do",function(e,t){return e?t._ordinalParse:t._ordinalParseLenient}),V(["D","DD"],ir),V("Do",function(e,t){t[ir]=g(e.match(Kn)[0],10)});var Or=T("Date",!0);k("d",0,"do","day"),k("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)}),k("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)}),k("dddd",0,0,function(e){return this.localeData().weekdays(this,e)}),k("e",0,0,"weekday"),k("E",0,0,"isoWeekday"),w("day","d"),w("weekday","e"),w("isoWeekday","E"),j("d",Kn),j("e",Kn),j("E",Kn),j("dd",tr),j("ddd",tr),j("dddd",tr),H(["dd","ddd","dddd"],function(e,t,n){var r=n._locale.weekdaysParse(e);null!=r?t.d=r:p(n).invalidWeekday=e}),H(["d","e","E"],function(e,t,n,r){t[r]=g(e)});var Tr="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Pr="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Ir="Su_Mo_Tu_We_Th_Fr_Sa".split("_");k("H",["HH",2],0,"hour"),k("h",["hh",2],0,function(){return this.hours()%12||12}),Ht("a",!0),Ht("A",!1),w("hour","h"),j("a",Wt),j("A",Wt),j("H",Kn),j("h",Kn),j("HH",Kn,Hn),j("hh",Kn,Hn),V(["H","HH"],sr),V(["a","A"],function(e,t,n){n._isPm=n._locale.isPM(e),n._meridiem=e}),V(["h","hh"],function(e,t,n){t[sr]=g(e),p(n).bigHour=!0});var Sr=/[ap]\.?m?\.?/i,Nr=T("Hours",!0);k("m",["mm",2],0,"minute"),w("minute","m"),j("m",Kn),j("mm",Kn,Hn),V(["m","mm"],ur);var kr=T("Minutes",!1);k("s",["ss",2],0,"second"),w("second","s"),j("s",Kn),j("ss",Kn,Hn),V(["s","ss"],cr);var Ar=T("Seconds",!1);k("S",0,0,function(){return~~(this.millisecond()/100)}),k(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),Kt("SSS"),Kt("SSSS"),w("millisecond","ms"),j("S",zn,Vn),j("SS",zn,Hn),j("SSS",zn,Wn),j("SSSS",Zn),V(["S","SS","SSS","SSSS"],function(e,t){t[lr]=g(1e3*("0."+e))});var Ur=T("Milliseconds",!1);k("z",0,0,"zoneAbbr"),k("zz",0,0,"zoneName");var Lr=m.prototype;Lr.add=Dr,Lr.calendar=tt,Lr.clone=nt,Lr.diff=ut,Lr.endOf=Ct,Lr.format=dt,Lr.from=ft,Lr.fromNow=ht,Lr.to=mt,Lr.toNow=vt,Lr.get=S,Lr.invalidAt=xt,Lr.isAfter=rt,Lr.isBefore=ot,Lr.isBetween=at,Lr.isSame=it,Lr.isValid=Dt,Lr.lang=xr,Lr.locale=gt,Lr.localeData=yt,Lr.max=_r,Lr.min=Cr,Lr.parsingFlags=wt,Lr.set=S,Lr.startOf=Et,Lr.subtract=wr,Lr.toArray=bt,Lr.toDate=Rt,Lr.toISOString=pt,Lr.toJSON=pt,Lr.toString=lt,Lr.unix=Mt,Lr.valueOf=_t,Lr.year=yr,Lr.isLeapYear=ue,Lr.weekYear=Pt,Lr.isoWeekYear=It,Lr.quarter=Lr.quarters=kt,Lr.month=X,Lr.daysInMonth=Z,Lr.week=Lr.weeks=fe,Lr.isoWeek=Lr.isoWeeks=he,Lr.weeksInYear=Nt,Lr.isoWeeksInYear=St,Lr.date=Or,Lr.day=Lr.days=Bt,Lr.weekday=Yt,Lr.isoWeekday=Vt,Lr.dayOfYear=ve,Lr.hour=Lr.hours=Nr,Lr.minute=Lr.minutes=kr,Lr.second=Lr.seconds=Ar,Lr.millisecond=Lr.milliseconds=Ur,Lr.utcOffset=Fe,Lr.utc=Be,Lr.local=Ye,Lr.parseZone=Ve,Lr.hasAlignedHourOffset=He,Lr.isDST=We,Lr.isDSTShifted=Ge,Lr.isLocal=qe,Lr.isUtcOffset=Ke,Lr.isUtc=ze,Lr.isUTC=ze,Lr.zoneAbbr=zt,Lr.zoneName=Qt,Lr.dates=ee("dates accessor is deprecated. Use date instead.",Or),Lr.months=ee("months accessor is deprecated. Use month instead",X),Lr.years=ee("years accessor is deprecated. Use year instead",yr),Lr.zone=ee("moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779",je);var Fr=Lr,jr={sameDay:"[Today at] LT", +nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},Br={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY LT",LLLL:"dddd, MMMM D, YYYY LT"},Yr="Invalid date",Vr="%d",Hr=/\d{1,2}/,Wr={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"},Gr=E.prototype;Gr._calendar=jr,Gr.calendar=Jt,Gr._longDateFormat=Br,Gr.longDateFormat=$t,Gr._invalidDate=Yr,Gr.invalidDate=en,Gr._ordinal=Vr,Gr.ordinal=tn,Gr._ordinalParse=Hr,Gr.preparse=nn,Gr.postformat=nn,Gr._relativeTime=Wr,Gr.relativeTime=rn,Gr.pastFuture=on,Gr.set=an,Gr.months=q,Gr._months=pr,Gr.monthsShort=K,Gr._monthsShort=dr,Gr.monthsParse=z,Gr.week=le,Gr._week=Er,Gr.firstDayOfYear=de,Gr.firstDayOfWeek=pe,Gr.weekdays=Ut,Gr._weekdays=Tr,Gr.weekdaysMin=Ft,Gr._weekdaysMin=Ir,Gr.weekdaysShort=Lt,Gr._weekdaysShort=Pr,Gr.weekdaysParse=jt,Gr.isPM=Gt,Gr._meridiemParse=Sr,Gr.meridiem=qt,R("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10,n=1===g(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th";return e+n}}),n.lang=ee("moment.lang is deprecated. Use moment.locale instead.",R),n.langData=ee("moment.langData is deprecated. Use moment.localeData instead.",D);var qr=Math.abs,Kr=Rn("ms"),zr=Rn("s"),Qr=Rn("m"),Xr=Rn("h"),Zr=Rn("d"),Jr=Rn("w"),$r=Rn("M"),eo=Rn("y"),to=Dn("milliseconds"),no=Dn("seconds"),ro=Dn("minutes"),oo=Dn("hours"),ao=Dn("days"),io=Dn("months"),so=Dn("years"),uo=Math.round,co={s:45,m:45,h:22,d:26,M:11},lo=Math.abs,po=Se.prototype;po.abs=hn,po.add=vn,po.subtract=gn,po.as=_n,po.asMilliseconds=Kr,po.asSeconds=zr,po.asMinutes=Qr,po.asHours=Xr,po.asDays=Zr,po.asWeeks=Jr,po.asMonths=$r,po.asYears=eo,po.valueOf=Mn,po._bubble=yn,po.get=bn,po.milliseconds=to,po.seconds=no,po.minutes=ro,po.hours=oo,po.days=ao,po.weeks=wn,po.months=io,po.years=so,po.humanize=Pn,po.toISOString=In,po.toString=In,po.toJSON=In,po.locale=gt,po.localeData=yt,po.toIsoString=ee("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",In),po.lang=xr,k("X",0,0,"unix"),k("x",0,0,"valueOf"),j("x",Jn),j("X",er),V("X",function(e,t,n){n._d=new Date(1e3*parseFloat(e,10))}),V("x",function(e,t,n){n._d=new Date(g(e))}),n.version="2.10.3",r(Oe),n.fn=Fr,n.min=Pe,n.max=Ie,n.utc=c,n.unix=Xt,n.months=cn,n.isDate=a,n.locale=R,n.invalid=f,n.duration=Qe,n.isMoment=v,n.weekdays=pn,n.parseZone=Zt,n.localeData=D,n.isDuration=Ne,n.monthsShort=ln,n.weekdaysMin=fn,n.defineLocale=b,n.weekdaysShort=dn,n.normalizeUnits=x,n.relativeTimeThreshold=Tn;var fo=n;return fo})},{}],2:[function(e,t,n){"use strict";var r=e("./focusNode"),o={componentDidMount:function(){this.props.autoFocus&&r(this.getDOMNode())}};t.exports=o},{"./focusNode":120}],3:[function(e,t,n){"use strict";function r(){var e=window.opera;return"object"==typeof e&&"function"==typeof e.version&&parseInt(e.version(),10)<=12}function o(e){return(e.ctrlKey||e.altKey||e.metaKey)&&!(e.ctrlKey&&e.altKey)}function a(e){switch(e){case O.topCompositionStart:return T.compositionStart;case O.topCompositionEnd:return T.compositionEnd;case O.topCompositionUpdate:return T.compositionUpdate}}function i(e,t){return e===O.topKeyDown&&t.keyCode===_}function s(e,t){switch(e){case O.topKeyUp:return-1!==C.indexOf(t.keyCode);case O.topKeyDown:return t.keyCode!==_;case O.topKeyPress:case O.topMouseDown:case O.topBlur:return!0;default:return!1}}function u(e){var t=e.detail;return"object"==typeof t&&"data"in t?t.data:null}function c(e,t,n,r){var o,c;if(M?o=a(e):I?s(e,r)&&(o=T.compositionEnd):i(e,r)&&(o=T.compositionStart),!o)return null;D&&(I||o!==T.compositionStart?o===T.compositionEnd&&I&&(c=I.getData()):I=v.getPooled(t));var l=g.getPooled(o,n,r);if(c)l.data=c;else{var p=u(r);null!==p&&(l.data=p)}return h.accumulateTwoPhaseDispatches(l),l}function l(e,t){switch(e){case O.topCompositionEnd:return u(t);case O.topKeyPress:var n=t.which;return n!==w?null:(P=!0,x);case O.topTextInput:var r=t.data;return r===x&&P?null:r;default:return null}}function p(e,t){if(I){if(e===O.topCompositionEnd||s(e,t)){var n=I.getData();return v.release(I),I=null,n}return null}switch(e){case O.topPaste:return null;case O.topKeyPress:return t.which&&!o(t)?String.fromCharCode(t.which):null;case O.topCompositionEnd:return D?null:t.data;default:return null}}function d(e,t,n,r){var o;if(o=b?l(e,r):p(e,r),!o)return null;var a=y.getPooled(T.beforeInput,n,r);return a.data=o,h.accumulateTwoPhaseDispatches(a),a}var f=e("./EventConstants"),h=e("./EventPropagators"),m=e("./ExecutionEnvironment"),v=e("./FallbackCompositionState"),g=e("./SyntheticCompositionEvent"),y=e("./SyntheticInputEvent"),E=e("./keyOf"),C=[9,13,27,32],_=229,M=m.canUseDOM&&"CompositionEvent"in window,R=null;m.canUseDOM&&"documentMode"in document&&(R=document.documentMode);var b=m.canUseDOM&&"TextEvent"in window&&!R&&!r(),D=m.canUseDOM&&(!M||R&&R>8&&11>=R),w=32,x=String.fromCharCode(w),O=f.topLevelTypes,T={beforeInput:{phasedRegistrationNames:{bubbled:E({onBeforeInput:null}),captured:E({onBeforeInputCapture:null})},dependencies:[O.topCompositionEnd,O.topKeyPress,O.topTextInput,O.topPaste]},compositionEnd:{phasedRegistrationNames:{bubbled:E({onCompositionEnd:null}),captured:E({onCompositionEndCapture:null})},dependencies:[O.topBlur,O.topCompositionEnd,O.topKeyDown,O.topKeyPress,O.topKeyUp,O.topMouseDown]},compositionStart:{phasedRegistrationNames:{bubbled:E({onCompositionStart:null}),captured:E({onCompositionStartCapture:null})},dependencies:[O.topBlur,O.topCompositionStart,O.topKeyDown,O.topKeyPress,O.topKeyUp,O.topMouseDown]},compositionUpdate:{phasedRegistrationNames:{bubbled:E({onCompositionUpdate:null}),captured:E({onCompositionUpdateCapture:null})},dependencies:[O.topBlur,O.topCompositionUpdate,O.topKeyDown,O.topKeyPress,O.topKeyUp,O.topMouseDown]}},P=!1,I=null,S={eventTypes:T,extractEvents:function(e,t,n,r){return[c(e,t,n,r),d(e,t,n,r)]}};t.exports=S},{"./EventConstants":15,"./EventPropagators":20,"./ExecutionEnvironment":21,"./FallbackCompositionState":22,"./SyntheticCompositionEvent":94,"./SyntheticInputEvent":98,"./keyOf":142}],4:[function(e,t,n){"use strict";function r(e,t){return e+t.charAt(0).toUpperCase()+t.substring(1)}var o={boxFlex:!0,boxFlexGroup:!0,columnCount:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,strokeDashoffset:!0,strokeOpacity:!0,strokeWidth:!0},a=["Webkit","ms","Moz","O"];Object.keys(o).forEach(function(e){a.forEach(function(t){o[r(t,e)]=o[e]})});var i={background:{backgroundImage:!0,backgroundPosition:!0,backgroundRepeat:!0,backgroundColor:!0},border:{borderWidth:!0,borderStyle:!0,borderColor:!0},borderBottom:{borderBottomWidth:!0,borderBottomStyle:!0,borderBottomColor:!0},borderLeft:{borderLeftWidth:!0,borderLeftStyle:!0,borderLeftColor:!0},borderRight:{borderRightWidth:!0,borderRightStyle:!0,borderRightColor:!0},borderTop:{borderTopWidth:!0,borderTopStyle:!0,borderTopColor:!0},font:{fontStyle:!0,fontVariant:!0,fontWeight:!0,fontSize:!0,lineHeight:!0,fontFamily:!0}},s={isUnitlessNumber:o,shorthandPropertyExpansions:i};t.exports=s},{}],5:[function(e,t,n){"use strict";var r=e("./CSSProperty"),o=e("./ExecutionEnvironment"),a=(e("./camelizeStyleName"),e("./dangerousStyleValue")),i=e("./hyphenateStyleName"),s=e("./memoizeStringOnly"),u=(e("./warning"),s(function(e){return i(e)})),c="cssFloat";o.canUseDOM&&void 0===document.documentElement.style.cssFloat&&(c="styleFloat");var l={createMarkupForStyles:function(e){var t="";for(var n in e)if(e.hasOwnProperty(n)){var r=e[n];null!=r&&(t+=u(n)+":",t+=a(n,r)+";")}return t||null},setValueForStyles:function(e,t){var n=e.style;for(var o in t)if(t.hasOwnProperty(o)){var i=a(o,t[o]);if("float"===o&&(o=c),i)n[o]=i;else{var s=r.shorthandPropertyExpansions[o];if(s)for(var u in s)n[u]="";else n[o]=""}}}};t.exports=l},{"./CSSProperty":4,"./ExecutionEnvironment":21,"./camelizeStyleName":109,"./dangerousStyleValue":114,"./hyphenateStyleName":134,"./memoizeStringOnly":144,"./warning":155}],6:[function(e,t,n){"use strict";function r(){this._callbacks=null,this._contexts=null}var o=e("./PooledClass"),a=e("./Object.assign"),i=e("./invariant");a(r.prototype,{enqueue:function(e,t){this._callbacks=this._callbacks||[],this._contexts=this._contexts||[],this._callbacks.push(e),this._contexts.push(t)},notifyAll:function(){var e=this._callbacks,t=this._contexts;if(e){i(e.length===t.length),this._callbacks=null,this._contexts=null;for(var n=0,r=e.length;r>n;n++)e[n].call(t[n]);e.length=0,t.length=0}},reset:function(){this._callbacks=null,this._contexts=null},destructor:function(){this.reset()}}),o.addPoolingTo(r),t.exports=r},{"./Object.assign":27,"./PooledClass":28,"./invariant":136}],7:[function(e,t,n){"use strict";function r(e){return"SELECT"===e.nodeName||"INPUT"===e.nodeName&&"file"===e.type}function o(e){var t=R.getPooled(O.change,P,e);C.accumulateTwoPhaseDispatches(t),M.batchedUpdates(a,t)}function a(e){E.enqueueEvents(e),E.processEventQueue()}function i(e,t){T=e,P=t,T.attachEvent("onchange",o)}function s(){T&&(T.detachEvent("onchange",o),T=null,P=null)}function u(e,t,n){return e===x.topChange?n:void 0}function c(e,t,n){e===x.topFocus?(s(),i(t,n)):e===x.topBlur&&s()}function l(e,t){T=e,P=t,I=e.value,S=Object.getOwnPropertyDescriptor(e.constructor.prototype,"value"),Object.defineProperty(T,"value",A),T.attachEvent("onpropertychange",d)}function p(){T&&(delete T.value,T.detachEvent("onpropertychange",d),T=null,P=null,I=null,S=null)}function d(e){if("value"===e.propertyName){var t=e.srcElement.value;t!==I&&(I=t,o(e))}}function f(e,t,n){return e===x.topInput?n:void 0}function h(e,t,n){e===x.topFocus?(p(),l(t,n)):e===x.topBlur&&p()}function m(e,t,n){return e!==x.topSelectionChange&&e!==x.topKeyUp&&e!==x.topKeyDown||!T||T.value===I?void 0:(I=T.value,P)}function v(e){return"INPUT"===e.nodeName&&("checkbox"===e.type||"radio"===e.type)}function g(e,t,n){return e===x.topClick?n:void 0}var y=e("./EventConstants"),E=e("./EventPluginHub"),C=e("./EventPropagators"),_=e("./ExecutionEnvironment"),M=e("./ReactUpdates"),R=e("./SyntheticEvent"),b=e("./isEventSupported"),D=e("./isTextInputElement"),w=e("./keyOf"),x=y.topLevelTypes,O={change:{phasedRegistrationNames:{bubbled:w({onChange:null}),captured:w({onChangeCapture:null})},dependencies:[x.topBlur,x.topChange,x.topClick,x.topFocus,x.topInput,x.topKeyDown,x.topKeyUp,x.topSelectionChange]}},T=null,P=null,I=null,S=null,N=!1;_.canUseDOM&&(N=b("change")&&(!("documentMode"in document)||document.documentMode>8));var k=!1;_.canUseDOM&&(k=b("input")&&(!("documentMode"in document)||document.documentMode>9));var A={get:function(){return S.get.call(this)},set:function(e){I=""+e,S.set.call(this,e)}},U={eventTypes:O,extractEvents:function(e,t,n,o){var a,i;if(r(t)?N?a=u:i=c:D(t)?k?a=f:(a=m,i=h):v(t)&&(a=g),a){var s=a(e,t,n);if(s){var l=R.getPooled(O.change,s,o);return C.accumulateTwoPhaseDispatches(l),l}}i&&i(e,t,n)}};t.exports=U},{"./EventConstants":15,"./EventPluginHub":17,"./EventPropagators":20,"./ExecutionEnvironment":21,"./ReactUpdates":88,"./SyntheticEvent":96,"./isEventSupported":137,"./isTextInputElement":139,"./keyOf":142}],8:[function(e,t,n){"use strict";var r=0,o={createReactRootIndex:function(){return r++}};t.exports=o},{}],9:[function(e,t,n){"use strict";function r(e,t,n){e.insertBefore(t,e.childNodes[n]||null)}var o=e("./Danger"),a=e("./ReactMultiChildUpdateTypes"),i=e("./setTextContent"),s=e("./invariant"),u={dangerouslyReplaceNodeWithMarkup:o.dangerouslyReplaceNodeWithMarkup,updateTextContent:i,processUpdates:function(e,t){for(var n,u=null,c=null,l=0;lt||o.hasOverloadedBooleanValue[e]&&t===!1}var o=e("./DOMProperty"),a=e("./quoteAttributeValueForBrowser"),i=(e("./warning"),{createMarkupForID:function(e){return o.ID_ATTRIBUTE_NAME+"="+a(e)},createMarkupForProperty:function(e,t){if(o.isStandardName.hasOwnProperty(e)&&o.isStandardName[e]){if(r(e,t))return"";var n=o.getAttributeName[e];return o.hasBooleanValue[e]||o.hasOverloadedBooleanValue[e]&&t===!0?n:n+"="+a(t)}return o.isCustomAttribute(e)?null==t?"":e+"="+a(t):null},setValueForProperty:function(e,t,n){if(o.isStandardName.hasOwnProperty(t)&&o.isStandardName[t]){var a=o.getMutationMethod[t];if(a)a(e,n);else if(r(t,n))this.deleteValueForProperty(e,t);else if(o.mustUseAttribute[t])e.setAttribute(o.getAttributeName[t],""+n);else{var i=o.getPropertyName[t];o.hasSideEffects[t]&&""+e[i]==""+n||(e[i]=n)}}else o.isCustomAttribute(t)&&(null==n?e.removeAttribute(t):e.setAttribute(t,""+n))},deleteValueForProperty:function(e,t){if(o.isStandardName.hasOwnProperty(t)&&o.isStandardName[t]){var n=o.getMutationMethod[t];if(n)n(e,void 0);else if(o.mustUseAttribute[t])e.removeAttribute(o.getAttributeName[t]);else{var r=o.getPropertyName[t],a=o.getDefaultValueForProperty(e.nodeName,r);o.hasSideEffects[t]&&""+e[r]===a||(e[r]=a)}}else o.isCustomAttribute(t)&&e.removeAttribute(t)}});t.exports=i},{"./DOMProperty":10,"./quoteAttributeValueForBrowser":148,"./warning":155}],12:[function(e,t,n){"use strict";function r(e){return e.substring(1,e.indexOf(" "))}var o=e("./ExecutionEnvironment"),a=e("./createNodesFromMarkup"),i=e("./emptyFunction"),s=e("./getMarkupWrap"),u=e("./invariant"),c=/^(<[^ \/>]+)/,l="data-danger-index",p={dangerouslyRenderMarkup:function(e){u(o.canUseDOM);for(var t,n={},p=0;pu;u++){var l=s[u];if(l){var p=l.extractEvents(e,t,n,o);p&&(i=a(i,p))}}return i},enqueueEvents:function(e){e&&(c=a(c,e))},processEventQueue:function(){var e=c;c=null,i(e,l),s(!c)},__purge:function(){u={}},__getListenerBank:function(){return u}};t.exports=d},{"./EventPluginRegistry":18,"./EventPluginUtils":19,"./accumulateInto":106,"./forEachAccumulated":121,"./invariant":136}],18:[function(e,t,n){"use strict";function r(){if(s)for(var e in u){var t=u[e],n=s.indexOf(e);if(i(n>-1),!c.plugins[n]){i(t.extractEvents),c.plugins[n]=t;var r=t.eventTypes;for(var a in r)i(o(r[a],t,a))}}}function o(e,t,n){i(!c.eventNameDispatchConfigs.hasOwnProperty(n)),c.eventNameDispatchConfigs[n]=e;var r=e.phasedRegistrationNames;if(r){for(var o in r)if(r.hasOwnProperty(o)){var s=r[o];a(s,t,n)}return!0}return e.registrationName?(a(e.registrationName,t,n),!0):!1}function a(e,t,n){i(!c.registrationNameModules[e]),c.registrationNameModules[e]=t,c.registrationNameDependencies[e]=t.eventTypes[n].dependencies}var i=e("./invariant"),s=null,u={},c={plugins:[],eventNameDispatchConfigs:{},registrationNameModules:{},registrationNameDependencies:{},injectEventPluginOrder:function(e){i(!s),s=Array.prototype.slice.call(e),r()},injectEventPluginsByName:function(e){var t=!1;for(var n in e)if(e.hasOwnProperty(n)){var o=e[n];u.hasOwnProperty(n)&&u[n]===o||(i(!u[n]),u[n]=o,t=!0)}t&&r()},getPluginModuleForEvent:function(e){var t=e.dispatchConfig;if(t.registrationName)return c.registrationNameModules[t.registrationName]||null;for(var n in t.phasedRegistrationNames)if(t.phasedRegistrationNames.hasOwnProperty(n)){var r=c.registrationNameModules[t.phasedRegistrationNames[n]];if(r)return r}return null},_resetEventPlugins:function(){s=null;for(var e in u)u.hasOwnProperty(e)&&delete u[e];c.plugins.length=0;var t=c.eventNameDispatchConfigs;for(var n in t)t.hasOwnProperty(n)&&delete t[n];var r=c.registrationNameModules;for(var o in r)r.hasOwnProperty(o)&&delete r[o]}};t.exports=c},{"./invariant":136}],19:[function(e,t,n){"use strict";function r(e){return e===v.topMouseUp||e===v.topTouchEnd||e===v.topTouchCancel}function o(e){return e===v.topMouseMove||e===v.topTouchMove}function a(e){return e===v.topMouseDown||e===v.topTouchStart}function i(e,t){var n=e._dispatchListeners,r=e._dispatchIDs;if(Array.isArray(n))for(var o=0;oe&&n[e]===o[e];e++);var i=r-e;for(t=1;i>=t&&n[r-t]===o[a-t];t++);var s=t>1?1-t:void 0;return this._fallbackText=o.slice(e,s),this._fallbackText}}),o.addPoolingTo(r),t.exports=r},{"./Object.assign":27,"./PooledClass":28,"./getTextContentAccessor":131}],23:[function(e,t,n){"use strict";var r,o=e("./DOMProperty"),a=e("./ExecutionEnvironment"),i=o.injection.MUST_USE_ATTRIBUTE,s=o.injection.MUST_USE_PROPERTY,u=o.injection.HAS_BOOLEAN_VALUE,c=o.injection.HAS_SIDE_EFFECTS,l=o.injection.HAS_NUMERIC_VALUE,p=o.injection.HAS_POSITIVE_NUMERIC_VALUE,d=o.injection.HAS_OVERLOADED_BOOLEAN_VALUE;if(a.canUseDOM){var f=document.implementation;r=f&&f.hasFeature&&f.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1")}var h={isCustomAttribute:RegExp.prototype.test.bind(/^(data|aria)-[a-z_][a-z\d_.\-]*$/),Properties:{accept:null,acceptCharset:null,accessKey:null,action:null,allowFullScreen:i|u,allowTransparency:i,alt:null,async:u,autoComplete:null,autoPlay:u,cellPadding:null,cellSpacing:null,charSet:i,checked:s|u,classID:i,className:r?i:s,cols:i|p,colSpan:null,content:null,contentEditable:null,contextMenu:i,controls:s|u,coords:null,crossOrigin:null,data:null,dateTime:i,defer:u,dir:null,disabled:i|u,download:d,draggable:null,encType:null,form:i,formAction:i,formEncType:i,formMethod:i,formNoValidate:u,formTarget:i,frameBorder:i,headers:null,height:i,hidden:i|u,high:null,href:null,hrefLang:null,htmlFor:null,httpEquiv:null,icon:null,id:s,label:null,lang:null,list:i,loop:s|u,low:null,manifest:i,marginHeight:null,marginWidth:null,max:null,maxLength:i,media:i,mediaGroup:null,method:null,min:null,multiple:s|u,muted:s|u,name:null,noValidate:u,open:u,optimum:null,pattern:null,placeholder:null,poster:null,preload:null,radioGroup:null,readOnly:s|u,rel:null,required:u,role:i,rows:i|p,rowSpan:null,sandbox:null,scope:null,scoped:u,scrolling:null,seamless:i|u,selected:s|u,shape:null,size:i|p,sizes:i,span:p,spellCheck:null,src:null,srcDoc:s,srcSet:i,start:l,step:null,style:null,tabIndex:null,target:null,title:null,type:null,useMap:null,value:s|c,width:i,wmode:i,autoCapitalize:null,autoCorrect:null,itemProp:i,itemScope:i|u,itemType:i,itemID:i,itemRef:i,property:null,unselectable:i},DOMAttributeNames:{acceptCharset:"accept-charset",className:"class",htmlFor:"for",httpEquiv:"http-equiv"},DOMPropertyNames:{autoCapitalize:"autocapitalize",autoComplete:"autocomplete",autoCorrect:"autocorrect",autoFocus:"autofocus",autoPlay:"autoplay",encType:"encoding",hrefLang:"hreflang",radioGroup:"radiogroup",spellCheck:"spellcheck",srcDoc:"srcdoc",srcSet:"srcset"}};t.exports=h},{"./DOMProperty":10,"./ExecutionEnvironment":21}],24:[function(e,t,n){"use strict";function r(e){c(null==e.props.checkedLink||null==e.props.valueLink)}function o(e){r(e),c(null==e.props.value&&null==e.props.onChange)}function a(e){r(e),c(null==e.props.checked&&null==e.props.onChange)}function i(e){this.props.valueLink.requestChange(e.target.value)}function s(e){this.props.checkedLink.requestChange(e.target.checked)}var u=e("./ReactPropTypes"),c=e("./invariant"),l={button:!0,checkbox:!0,image:!0,hidden:!0,radio:!0,reset:!0,submit:!0},p={Mixin:{propTypes:{value:function(e,t,n){return!e[t]||l[e.type]||e.onChange||e.readOnly||e.disabled?null:new Error("You provided a `value` prop to a form field without an `onChange` handler. This will render a read-only field. If the field should be mutable use `defaultValue`. Otherwise, set either `onChange` or `readOnly`.")},checked:function(e,t,n){return!e[t]||e.onChange||e.readOnly||e.disabled?null:new Error("You provided a `checked` prop to a form field without an `onChange` handler. This will render a read-only field. If the field should be mutable use `defaultChecked`. Otherwise, set either `onChange` or `readOnly`.")},onChange:u.func}},getValue:function(e){return e.props.valueLink?(o(e),e.props.valueLink.value):e.props.value},getChecked:function(e){return e.props.checkedLink?(a(e),e.props.checkedLink.value):e.props.checked},getOnChange:function(e){return e.props.valueLink?(o(e),i):e.props.checkedLink?(a(e),s):e.props.onChange}};t.exports=p},{"./ReactPropTypes":79,"./invariant":136}],25:[function(e,t,n){"use strict";function r(e){e.remove()}var o=e("./ReactBrowserEventEmitter"),a=e("./accumulateInto"),i=e("./forEachAccumulated"),s=e("./invariant"),u={trapBubbledEvent:function(e,t){s(this.isMounted());var n=this.getDOMNode();s(n);var r=o.trapBubbledEvent(e,t,n);this._localEventListeners=a(this._localEventListeners,r)},componentWillUnmount:function(){this._localEventListeners&&i(this._localEventListeners,r)}};t.exports=u},{"./ReactBrowserEventEmitter":31,"./accumulateInto":106,"./forEachAccumulated":121,"./invariant":136}],26:[function(e,t,n){"use strict";var r=e("./EventConstants"),o=e("./emptyFunction"),a=r.topLevelTypes,i={eventTypes:null,extractEvents:function(e,t,n,r){if(e===a.topTouchStart){var i=r.target;i&&!i.onclick&&(i.onclick=o)}}};t.exports=i},{"./EventConstants":15,"./emptyFunction":115}],27:[function(e,t,n){"use strict";function r(e,t){if(null==e)throw new TypeError("Object.assign target cannot be null or undefined");for(var n=Object(e),r=Object.prototype.hasOwnProperty,o=1;oc;c++){var d=s[c];a.hasOwnProperty(d)&&a[d]||(d===u.topWheel?l("wheel")?v.ReactEventListener.trapBubbledEvent(u.topWheel,"wheel",n):l("mousewheel")?v.ReactEventListener.trapBubbledEvent(u.topWheel,"mousewheel",n):v.ReactEventListener.trapBubbledEvent(u.topWheel,"DOMMouseScroll",n):d===u.topScroll?l("scroll",!0)?v.ReactEventListener.trapCapturedEvent(u.topScroll,"scroll",n):v.ReactEventListener.trapBubbledEvent(u.topScroll,"scroll",v.ReactEventListener.WINDOW_HANDLE):d===u.topFocus||d===u.topBlur?(l("focus",!0)?(v.ReactEventListener.trapCapturedEvent(u.topFocus,"focus",n),v.ReactEventListener.trapCapturedEvent(u.topBlur,"blur",n)):l("focusin")&&(v.ReactEventListener.trapBubbledEvent(u.topFocus,"focusin",n),v.ReactEventListener.trapBubbledEvent(u.topBlur,"focusout",n)),a[u.topBlur]=!0,a[u.topFocus]=!0):h.hasOwnProperty(d)&&v.ReactEventListener.trapBubbledEvent(d,h[d],n),a[d]=!0)}},trapBubbledEvent:function(e,t,n){return v.ReactEventListener.trapBubbledEvent(e,t,n)},trapCapturedEvent:function(e,t,n){return v.ReactEventListener.trapCapturedEvent(e,t,n)},ensureScrollValueMonitoring:function(){if(!d){var e=u.refreshScrollValues;v.ReactEventListener.monitorScrollValue(e),d=!0}},eventNameDispatchConfigs:a.eventNameDispatchConfigs,registrationNameModules:a.registrationNameModules,putListener:a.putListener,getListener:a.getListener,deleteListener:a.deleteListener,deleteAllListeners:a.deleteAllListeners});t.exports=v},{"./EventConstants":15,"./EventPluginHub":17,"./EventPluginRegistry":18,"./Object.assign":27,"./ReactEventEmitterMixin":62,"./ViewportMetrics":105,"./isEventSupported":137}],32:[function(e,t,n){"use strict";var r=e("./ReactReconciler"),o=e("./flattenChildren"),a=e("./instantiateReactComponent"),i=e("./shouldUpdateReactComponent"),s={instantiateChildren:function(e,t,n){var r=o(e);for(var i in r)if(r.hasOwnProperty(i)){var s=r[i],u=a(s,null);r[i]=u}return r},updateChildren:function(e,t,n,s){var u=o(t);if(!u&&!e)return null;var c;for(c in u)if(u.hasOwnProperty(c)){var l=e&&e[c],p=l&&l._currentElement,d=u[c];if(i(p,d))r.receiveComponent(l,d,n,s),u[c]=l;else{l&&r.unmountComponent(l,c);var f=a(d,null);u[c]=f}}for(c in e)!e.hasOwnProperty(c)||u&&u.hasOwnProperty(c)||r.unmountComponent(e[c]);return u},unmountChildren:function(e){for(var t in e){var n=e[t];r.unmountComponent(n)}}};t.exports=s},{"./ReactReconciler":82,"./flattenChildren":119,"./instantiateReactComponent":135,"./shouldUpdateReactComponent":152}],33:[function(e,t,n){"use strict";function r(e,t){this.forEachFunction=e,this.forEachContext=t}function o(e,t,n,r){var o=e;o.forEachFunction.call(o.forEachContext,t,r)}function a(e,t,n){if(null==e)return e;var a=r.getPooled(t,n);f(e,o,a),r.release(a)}function i(e,t,n){this.mapResult=e,this.mapFunction=t,this.mapContext=n}function s(e,t,n,r){var o=e,a=o.mapResult,i=!a.hasOwnProperty(n);if(i){var s=o.mapFunction.call(o.mapContext,t,r);a[n]=s}}function u(e,t,n){if(null==e)return e;var r={},o=i.getPooled(r,t,n);return f(e,s,o),i.release(o),d.create(r)}function c(e,t,n,r){return null}function l(e,t){return f(e,c,null)}var p=e("./PooledClass"),d=e("./ReactFragment"),f=e("./traverseAllChildren"),h=(e("./warning"),p.twoArgumentPooler),m=p.threeArgumentPooler;p.addPoolingTo(r,h),p.addPoolingTo(i,m);var v={forEach:a,map:u,count:l};t.exports=v},{"./PooledClass":28,"./ReactFragment":64,"./traverseAllChildren":154,"./warning":155}],34:[function(e,t,n){"use strict";function r(e,t){var n=b.hasOwnProperty(t)?b[t]:null;w.hasOwnProperty(t)&&y(n===M.OVERRIDE_BASE),e.hasOwnProperty(t)&&y(n===M.DEFINE_MANY||n===M.DEFINE_MANY_MERGED)}function o(e,t){if(t){y("function"!=typeof t),y(!d.isValidElement(t));var n=e.prototype;t.hasOwnProperty(_)&&D.mixins(e,t.mixins);for(var o in t)if(t.hasOwnProperty(o)&&o!==_){var a=t[o];if(r(n,o),D.hasOwnProperty(o))D[o](e,a);else{var i=b.hasOwnProperty(o),c=n.hasOwnProperty(o),l=a&&a.__reactDontBind,p="function"==typeof a,f=p&&!i&&!c&&!l;if(f)n.__reactAutoBindMap||(n.__reactAutoBindMap={}),n.__reactAutoBindMap[o]=a,n[o]=a;else if(c){var h=b[o];y(i&&(h===M.DEFINE_MANY_MERGED||h===M.DEFINE_MANY)),h===M.DEFINE_MANY_MERGED?n[o]=s(n[o],a):h===M.DEFINE_MANY&&(n[o]=u(n[o],a))}else n[o]=a}}}}function a(e,t){if(t)for(var n in t){var r=t[n];if(t.hasOwnProperty(n)){var o=n in D;y(!o);var a=n in e;y(!a),e[n]=r}}}function i(e,t){y(e&&t&&"object"==typeof e&&"object"==typeof t);for(var n in t)t.hasOwnProperty(n)&&(y(void 0===e[n]),e[n]=t[n]);return e}function s(e,t){return function(){var n=e.apply(this,arguments),r=t.apply(this,arguments);if(null==n)return r;if(null==r)return n;var o={};return i(o,n),i(o,r),o}}function u(e,t){return function(){e.apply(this,arguments),t.apply(this,arguments)}}function c(e,t){var n=t.bind(e);return n}function l(e){for(var t in e.__reactAutoBindMap)if(e.__reactAutoBindMap.hasOwnProperty(t)){var n=e.__reactAutoBindMap[t];e[t]=c(e,f.guard(n,e.constructor.displayName+"."+t))}}var p=e("./ReactComponent"),d=(e("./ReactCurrentOwner"),e("./ReactElement")),f=e("./ReactErrorUtils"),h=e("./ReactInstanceMap"),m=e("./ReactLifeCycle"),v=(e("./ReactPropTypeLocations"),e("./ReactPropTypeLocationNames"),e("./ReactUpdateQueue")),g=e("./Object.assign"),y=e("./invariant"),E=e("./keyMirror"),C=e("./keyOf"),_=(e("./warning"),C({mixins:null})),M=E({DEFINE_ONCE:null,DEFINE_MANY:null,OVERRIDE_BASE:null,DEFINE_MANY_MERGED:null}),R=[],b={mixins:M.DEFINE_MANY,statics:M.DEFINE_MANY,propTypes:M.DEFINE_MANY,contextTypes:M.DEFINE_MANY,childContextTypes:M.DEFINE_MANY,getDefaultProps:M.DEFINE_MANY_MERGED,getInitialState:M.DEFINE_MANY_MERGED,getChildContext:M.DEFINE_MANY_MERGED,render:M.DEFINE_ONCE,componentWillMount:M.DEFINE_MANY,componentDidMount:M.DEFINE_MANY,componentWillReceiveProps:M.DEFINE_MANY,shouldComponentUpdate:M.DEFINE_ONCE,componentWillUpdate:M.DEFINE_MANY,componentDidUpdate:M.DEFINE_MANY,componentWillUnmount:M.DEFINE_MANY,updateComponent:M.OVERRIDE_BASE},D={displayName:function(e,t){e.displayName=t},mixins:function(e,t){if(t)for(var n=0;n";return this._createOpenTagMarkupAndPutListeners(t)+this._createContentMarkup(t,n)+o},_createOpenTagMarkupAndPutListeners:function(e){var t=this._currentElement.props,n="<"+this._tag;for(var r in t)if(t.hasOwnProperty(r)){var a=t[r];if(null!=a)if(_.hasOwnProperty(r))o(this._rootNodeID,r,a,e);else{r===R&&(a&&(a=this._previousStyleCopy=m({},t.style)),a=s.createMarkupForStyles(a));var i=c.createMarkupForProperty(r,a);i&&(n+=" "+i)}}if(e.renderToStaticMarkup)return n+">";var u=c.createMarkupForID(this._rootNodeID);return n+" "+u+">"},_createContentMarkup:function(e,t){var n="";("listing"===this._tag||"pre"===this._tag||"textarea"===this._tag)&&(n="\n");var r=this._currentElement.props,o=r.dangerouslySetInnerHTML;if(null!=o){if(null!=o.__html)return n+o.__html}else{var a=M[typeof r.children]?r.children:null,i=null!=a?null:r.children;if(null!=a)return n+v(a);if(null!=i){var s=this.mountChildren(i,e,t);return n+s.join("")}}return n},receiveComponent:function(e,t,n){var r=this._currentElement;this._currentElement=e,this.updateComponent(t,r,e,n)},updateComponent:function(e,t,n,o){r(this._currentElement.props),this._updateDOMProperties(t.props,e),this._updateDOMChildren(t.props,e,o)},_updateDOMProperties:function(e,t){var n,r,a,i=this._currentElement.props;for(n in e)if(!i.hasOwnProperty(n)&&e.hasOwnProperty(n))if(n===R){var s=this._previousStyleCopy;for(r in s)s.hasOwnProperty(r)&&(a=a||{},a[r]="");this._previousStyleCopy=null}else _.hasOwnProperty(n)?E(this._rootNodeID,n):(u.isStandardName[n]||u.isCustomAttribute(n))&&D.deletePropertyByID(this._rootNodeID,n);for(n in i){var c=i[n],l=n===R?this._previousStyleCopy:e[n];if(i.hasOwnProperty(n)&&c!==l)if(n===R)if(c?c=this._previousStyleCopy=m({},c):this._previousStyleCopy=null,l){for(r in l)!l.hasOwnProperty(r)||c&&c.hasOwnProperty(r)||(a=a||{},a[r]="");for(r in c)c.hasOwnProperty(r)&&l[r]!==c[r]&&(a=a||{},a[r]=c[r])}else a=c;else _.hasOwnProperty(n)?o(this._rootNodeID,n,c,t):(u.isStandardName[n]||u.isCustomAttribute(n))&&D.updatePropertyByID(this._rootNodeID,n,c)}a&&D.updateStylesByID(this._rootNodeID,a)},_updateDOMChildren:function(e,t,n){var r=this._currentElement.props,o=M[typeof e.children]?e.children:null,a=M[typeof r.children]?r.children:null,i=e.dangerouslySetInnerHTML&&e.dangerouslySetInnerHTML.__html,s=r.dangerouslySetInnerHTML&&r.dangerouslySetInnerHTML.__html,u=null!=o?null:e.children,c=null!=a?null:r.children,l=null!=o||null!=i,p=null!=a||null!=s;null!=u&&null==c?this.updateChildren(null,t,n):l&&!p&&this.updateTextContent(""),null!=a?o!==a&&this.updateTextContent(""+a):null!=s?i!==s&&D.updateInnerHTMLByID(this._rootNodeID,s):null!=c&&this.updateChildren(c,t,n)},unmountComponent:function(){this.unmountChildren(),l.deleteAllListeners(this._rootNodeID),p.unmountIDFromEnvironment(this._rootNodeID),this._rootNodeID=null}},h.measureMethods(i,"ReactDOMComponent",{mountComponent:"mountComponent",updateComponent:"updateComponent"}),m(i.prototype,i.Mixin,f.Mixin),i.injection={injectIDOperations:function(e){i.BackendIDOperations=D=e}},t.exports=i},{"./CSSPropertyOperations":5,"./DOMProperty":10,"./DOMPropertyOperations":11,"./Object.assign":27,"./ReactBrowserEventEmitter":31,"./ReactComponentBrowserEnvironment":36,"./ReactMount":71,"./ReactMultiChild":72,"./ReactPerf":76,"./escapeTextContentForBrowser":117,"./invariant":136,"./isEventSupported":137,"./keyOf":142,"./warning":155}],44:[function(e,t,n){"use strict";var r=e("./EventConstants"),o=e("./LocalEventTrapMixin"),a=e("./ReactBrowserComponentMixin"),i=e("./ReactClass"),s=e("./ReactElement"),u=s.createFactory("form"),c=i.createClass({displayName:"ReactDOMForm",tagName:"FORM",mixins:[a,o],render:function(){return u(this.props)},componentDidMount:function(){this.trapBubbledEvent(r.topLevelTypes.topReset,"reset"),this.trapBubbledEvent(r.topLevelTypes.topSubmit,"submit")}});t.exports=c},{"./EventConstants":15,"./LocalEventTrapMixin":25,"./ReactBrowserComponentMixin":30,"./ReactClass":34,"./ReactElement":58}],45:[function(e,t,n){"use strict";var r=e("./CSSPropertyOperations"),o=e("./DOMChildrenOperations"),a=e("./DOMPropertyOperations"),i=e("./ReactMount"),s=e("./ReactPerf"),u=e("./invariant"),c=e("./setInnerHTML"),l={dangerouslySetInnerHTML:"`dangerouslySetInnerHTML` must be set using `updateInnerHTMLByID()`.",style:"`style` must be set using `updateStylesByID()`."},p={updatePropertyByID:function(e,t,n){var r=i.getNode(e);u(!l.hasOwnProperty(t)),null!=n?a.setValueForProperty(r,t,n):a.deleteValueForProperty(r,t)},deletePropertyByID:function(e,t,n){var r=i.getNode(e);u(!l.hasOwnProperty(t)),a.deleteValueForProperty(r,t,n)},updateStylesByID:function(e,t){var n=i.getNode(e);r.setValueForStyles(n,t)},updateInnerHTMLByID:function(e,t){var n=i.getNode(e);c(n,t)},updateTextContentByID:function(e,t){var n=i.getNode(e);o.updateTextContent(n,t)},dangerouslyReplaceNodeWithMarkupByID:function(e,t){var n=i.getNode(e);o.dangerouslyReplaceNodeWithMarkup(n,t)},dangerouslyProcessChildrenUpdates:function(e,t){for(var n=0;nc;c++){var h=u[c];if(h!==a&&h.form===a.form){var v=l.getID(h);f(v);var g=m[v];f(g),p.asap(r,g)}}}return t}});t.exports=v},{"./AutoFocusMixin":2,"./DOMPropertyOperations":11,"./LinkedValueUtils":24,"./Object.assign":27,"./ReactBrowserComponentMixin":30,"./ReactClass":34,"./ReactElement":58,"./ReactMount":71,"./ReactUpdates":88,"./invariant":136}],49:[function(e,t,n){"use strict";var r=e("./ReactBrowserComponentMixin"),o=e("./ReactClass"),a=e("./ReactElement"),i=(e("./warning"),a.createFactory("option")),s=o.createClass({displayName:"ReactDOMOption",tagName:"OPTION",mixins:[r],componentWillMount:function(){},render:function(){return i(this.props,this.props.children)}});t.exports=s},{"./ReactBrowserComponentMixin":30,"./ReactClass":34,"./ReactElement":58,"./warning":155}],50:[function(e,t,n){"use strict";function r(){if(this._pendingUpdate){this._pendingUpdate=!1;var e=s.getValue(this);null!=e&&this.isMounted()&&a(this,e)}}function o(e,t,n){if(null==e[t])return null;if(e.multiple){if(!Array.isArray(e[t]))return new Error("The `"+t+"` prop supplied to must be a scalar value if `multiple` is false.")}function a(e,t){var n,r,o,a=e.getDOMNode().options;if(e.props.multiple){for(n={},r=0,o=t.length;o>r;r++)n[""+t[r]]=!0;for(r=0,o=a.length;o>r;r++){var i=n.hasOwnProperty(a[r].value);a[r].selected!==i&&(a[r].selected=i)}}else{for(n=""+t,r=0,o=a.length;o>r;r++)if(a[r].value===n)return void(a[r].selected=!0);a.length&&(a[0].selected=!0)}}var i=e("./AutoFocusMixin"),s=e("./LinkedValueUtils"),u=e("./ReactBrowserComponentMixin"),c=e("./ReactClass"),l=e("./ReactElement"),p=e("./ReactUpdates"),d=e("./Object.assign"),f=l.createFactory("select"),h=c.createClass({displayName:"ReactDOMSelect",tagName:"SELECT",mixins:[i,s.Mixin,u],propTypes:{defaultValue:o,value:o},render:function(){var e=d({},this.props);return e.onChange=this._handleChange,e.value=null,f(e,this.props.children)},componentWillMount:function(){this._pendingUpdate=!1},componentDidMount:function(){var e=s.getValue(this);null!=e?a(this,e):null!=this.props.defaultValue&&a(this,this.props.defaultValue)},componentDidUpdate:function(e){var t=s.getValue(this);null!=t?(this._pendingUpdate=!1,a(this,t)):!e.multiple!=!this.props.multiple&&(null!=this.props.defaultValue?a(this,this.props.defaultValue):a(this,this.props.multiple?[]:""))},_handleChange:function(e){var t,n=s.getOnChange(this);return n&&(t=n.call(this,e)),this._pendingUpdate=!0,p.asap(r,this),t}});t.exports=h},{"./AutoFocusMixin":2,"./LinkedValueUtils":24,"./Object.assign":27,"./ReactBrowserComponentMixin":30,"./ReactClass":34,"./ReactElement":58,"./ReactUpdates":88}],51:[function(e,t,n){"use strict";function r(e,t,n,r){return e===n&&t===r}function o(e){var t=document.selection,n=t.createRange(),r=n.text.length,o=n.duplicate();o.moveToElementText(e),o.setEndPoint("EndToStart",n);var a=o.text.length,i=a+r;return{start:a,end:i}}function a(e){var t=window.getSelection&&window.getSelection();if(!t||0===t.rangeCount)return null;var n=t.anchorNode,o=t.anchorOffset,a=t.focusNode,i=t.focusOffset,s=t.getRangeAt(0),u=r(t.anchorNode,t.anchorOffset,t.focusNode,t.focusOffset),c=u?0:s.toString().length,l=s.cloneRange();l.selectNodeContents(e),l.setEnd(s.startContainer,s.startOffset);var p=r(l.startContainer,l.startOffset,l.endContainer,l.endOffset),d=p?0:l.toString().length,f=d+c,h=document.createRange();h.setStart(n,o),h.setEnd(a,i);var m=h.collapsed;return{start:m?f:d,end:m?d:f}}function i(e,t){var n,r,o=document.selection.createRange().duplicate();"undefined"==typeof t.end?(n=t.start,r=n):t.start>t.end?(n=t.end,r=t.start):(n=t.start,r=t.end),o.moveToElementText(e),o.moveStart("character",n),o.setEndPoint("EndToStart",o),o.moveEnd("character",r-n),o.select()}function s(e,t){if(window.getSelection){var n=window.getSelection(),r=e[l()].length,o=Math.min(t.start,r),a="undefined"==typeof t.end?o:Math.min(t.end,r);if(!n.extend&&o>a){var i=a;a=o,o=i}var s=c(e,o),u=c(e,a);if(s&&u){var p=document.createRange();p.setStart(s.node,s.offset),n.removeAllRanges(),o>a?(n.addRange(p),n.extend(u.node,u.offset)):(p.setEnd(u.node,u.offset),n.addRange(p))}}}var u=e("./ExecutionEnvironment"),c=e("./getNodeForCharacterOffset"),l=e("./getTextContentAccessor"),p=u.canUseDOM&&"selection"in document&&!("getSelection"in window),d={getOffsets:p?o:a,setOffsets:p?i:s};t.exports=d},{"./ExecutionEnvironment":21,"./getNodeForCharacterOffset":129,"./getTextContentAccessor":131}],52:[function(e,t,n){"use strict";var r=e("./DOMPropertyOperations"),o=e("./ReactComponentBrowserEnvironment"),a=e("./ReactDOMComponent"),i=e("./Object.assign"),s=e("./escapeTextContentForBrowser"),u=function(e){};i(u.prototype,{construct:function(e){this._currentElement=e,this._stringText=""+e,this._rootNodeID=null,this._mountIndex=0},mountComponent:function(e,t,n){this._rootNodeID=e;var o=s(this._stringText);return t.renderToStaticMarkup?o:""+o+""},receiveComponent:function(e,t){if(e!==this._currentElement){this._currentElement=e;var n=""+e;n!==this._stringText&&(this._stringText=n,a.BackendIDOperations.updateTextContentByID(this._rootNodeID,n))}},unmountComponent:function(){o.unmountIDFromEnvironment(this._rootNodeID)}}),t.exports=u},{"./DOMPropertyOperations":11,"./Object.assign":27,"./ReactComponentBrowserEnvironment":36,"./ReactDOMComponent":43,"./escapeTextContentForBrowser":117}],53:[function(e,t,n){"use strict";function r(){this.isMounted()&&this.forceUpdate()}var o=e("./AutoFocusMixin"),a=e("./DOMPropertyOperations"),i=e("./LinkedValueUtils"),s=e("./ReactBrowserComponentMixin"),u=e("./ReactClass"),c=e("./ReactElement"),l=e("./ReactUpdates"),p=e("./Object.assign"),d=e("./invariant"),f=(e("./warning"),c.createFactory("textarea")),h=u.createClass({displayName:"ReactDOMTextarea",tagName:"TEXTAREA",mixins:[o,i.Mixin,s],getInitialState:function(){var e=this.props.defaultValue,t=this.props.children;null!=t&&(d(null==e),Array.isArray(t)&&(d(t.length<=1),t=t[0]),e=""+t),null==e&&(e="");var n=i.getValue(this);return{initialValue:""+(null!=n?n:e)}},render:function(){var e=p({},this.props);return d(null==e.dangerouslySetInnerHTML),e.defaultValue=null,e.value=null,e.onChange=this._handleChange,f(e,this.state.initialValue)},componentDidUpdate:function(e,t,n){var r=i.getValue(this);if(null!=r){var o=this.getDOMNode();a.setValueForProperty(o,"value",""+r)}},_handleChange:function(e){var t,n=i.getOnChange(this);return n&&(t=n.call(this,e)),l.asap(r,this),t}});t.exports=h},{"./AutoFocusMixin":2,"./DOMPropertyOperations":11,"./LinkedValueUtils":24,"./Object.assign":27,"./ReactBrowserComponentMixin":30,"./ReactClass":34,"./ReactElement":58,"./ReactUpdates":88,"./invariant":136,"./warning":155}],54:[function(e,t,n){"use strict";function r(){this.reinitializeTransaction()}var o=e("./ReactUpdates"),a=e("./Transaction"),i=e("./Object.assign"),s=e("./emptyFunction"),u={initialize:s,close:function(){d.isBatchingUpdates=!1}},c={initialize:s,close:o.flushBatchedUpdates.bind(o)},l=[c,u];i(r.prototype,a.Mixin,{getTransactionWrappers:function(){return l}});var p=new r,d={isBatchingUpdates:!1,batchedUpdates:function(e,t,n,r,o){var a=d.isBatchingUpdates;d.isBatchingUpdates=!0,a?e(t,n,r,o):p.perform(e,null,t,n,r,o)}};t.exports=d},{"./Object.assign":27,"./ReactUpdates":88,"./Transaction":104,"./emptyFunction":115}],55:[function(e,t,n){"use strict";function r(e){return h.createClass({tagName:e.toUpperCase(),render:function(){return new O(e,null,null,null,null,this.props)}})}function o(){P.EventEmitter.injectReactEventListener(T),P.EventPluginHub.injectEventPluginOrder(u),P.EventPluginHub.injectInstanceHandle(I),P.EventPluginHub.injectMount(S),P.EventPluginHub.injectEventPluginsByName({SimpleEventPlugin:U,EnterLeaveEventPlugin:c,ChangeEventPlugin:i,MobileSafariClickEventPlugin:d,SelectEventPlugin:k,BeforeInputEventPlugin:a}),P.NativeComponent.injectGenericComponentClass(g),P.NativeComponent.injectTextComponentClass(x),P.NativeComponent.injectAutoWrapper(r),P.Class.injectMixin(f),P.NativeComponent.injectComponentClasses({button:y,form:E,iframe:M,img:C,input:R,option:b,select:D,textarea:w,html:F("html"),head:F("head"),body:F("body")}),P.DOMProperty.injectDOMPropertyConfig(p),P.DOMProperty.injectDOMPropertyConfig(L),P.EmptyComponent.injectEmptyComponent("noscript"),P.Updates.injectReconcileTransaction(N),P.Updates.injectBatchingStrategy(v),P.RootIndex.injectCreateReactRootIndex(l.canUseDOM?s.createReactRootIndex:A.createReactRootIndex),P.Component.injectEnvironment(m),P.DOMComponent.injectIDOperations(_)}var a=e("./BeforeInputEventPlugin"),i=e("./ChangeEventPlugin"),s=e("./ClientReactRootIndex"),u=e("./DefaultEventPluginOrder"),c=e("./EnterLeaveEventPlugin"),l=e("./ExecutionEnvironment"),p=e("./HTMLDOMPropertyConfig"),d=e("./MobileSafariClickEventPlugin"),f=e("./ReactBrowserComponentMixin"),h=e("./ReactClass"),m=e("./ReactComponentBrowserEnvironment"),v=e("./ReactDefaultBatchingStrategy"),g=e("./ReactDOMComponent"),y=e("./ReactDOMButton"),E=e("./ReactDOMForm"),C=e("./ReactDOMImg"),_=e("./ReactDOMIDOperations"),M=e("./ReactDOMIframe"),R=e("./ReactDOMInput"),b=e("./ReactDOMOption"),D=e("./ReactDOMSelect"),w=e("./ReactDOMTextarea"),x=e("./ReactDOMTextComponent"),O=e("./ReactElement"),T=e("./ReactEventListener"),P=e("./ReactInjection"),I=e("./ReactInstanceHandles"),S=e("./ReactMount"),N=e("./ReactReconcileTransaction"),k=e("./SelectEventPlugin"),A=e("./ServerReactRootIndex"),U=e("./SimpleEventPlugin"),L=e("./SVGDOMPropertyConfig"),F=e("./createFullPageComponent");t.exports={inject:o}},{"./BeforeInputEventPlugin":3,"./ChangeEventPlugin":7,"./ClientReactRootIndex":8,"./DefaultEventPluginOrder":13,"./EnterLeaveEventPlugin":14,"./ExecutionEnvironment":21,"./HTMLDOMPropertyConfig":23,"./MobileSafariClickEventPlugin":26,"./ReactBrowserComponentMixin":30,"./ReactClass":34,"./ReactComponentBrowserEnvironment":36,"./ReactDOMButton":42,"./ReactDOMComponent":43,"./ReactDOMForm":44,"./ReactDOMIDOperations":45,"./ReactDOMIframe":46,"./ReactDOMImg":47,"./ReactDOMInput":48,"./ReactDOMOption":49,"./ReactDOMSelect":50,"./ReactDOMTextComponent":52,"./ReactDOMTextarea":53,"./ReactDefaultBatchingStrategy":54,"./ReactDefaultPerf":56,"./ReactElement":58,"./ReactEventListener":63,"./ReactInjection":65,"./ReactInstanceHandles":67,"./ReactMount":71,"./ReactReconcileTransaction":81,"./SVGDOMPropertyConfig":89,"./SelectEventPlugin":90,"./ServerReactRootIndex":91,"./SimpleEventPlugin":92,"./createFullPageComponent":112}],56:[function(e,t,n){"use strict";function r(e){return Math.floor(100*e)/100}function o(e,t,n){e[t]=(e[t]||0)+n}var a=e("./DOMProperty"),i=e("./ReactDefaultPerfAnalysis"),s=e("./ReactMount"),u=e("./ReactPerf"),c=e("./performanceNow"),l={_allMeasurements:[],_mountStack:[0],_injected:!1,start:function(){l._injected||u.injection.injectMeasure(l.measure),l._allMeasurements.length=0,u.enableMeasure=!0},stop:function(){u.enableMeasure=!1},getLastMeasurements:function(){return l._allMeasurements},printExclusive:function(e){e=e||l._allMeasurements;var t=i.getExclusiveSummary(e);console.table(t.map(function(e){return{"Component class name":e.componentName,"Total inclusive time (ms)":r(e.inclusive),"Exclusive mount time (ms)":r(e.exclusive),"Exclusive render time (ms)":r(e.render),"Mount time per instance (ms)":r(e.exclusive/e.count),"Render time per instance (ms)":r(e.render/e.count),Instances:e.count}}))},printInclusive:function(e){e=e||l._allMeasurements;var t=i.getInclusiveSummary(e);console.table(t.map(function(e){return{"Owner > component":e.componentName,"Inclusive time (ms)":r(e.time),Instances:e.count}})),console.log("Total time:",i.getTotalTime(e).toFixed(2)+" ms")},getMeasurementsSummaryMap:function(e){var t=i.getInclusiveSummary(e,!0);return t.map(function(e){return{"Owner > component":e.componentName,"Wasted time (ms)":e.time,Instances:e.count}})},printWasted:function(e){e=e||l._allMeasurements,console.table(l.getMeasurementsSummaryMap(e)),console.log("Total time:",i.getTotalTime(e).toFixed(2)+" ms")},printDOM:function(e){e=e||l._allMeasurements;var t=i.getDOMSummary(e);console.table(t.map(function(e){var t={};return t[a.ID_ATTRIBUTE_NAME]=e.id,t.type=e.type,t.args=JSON.stringify(e.args),t})),console.log("Total time:",i.getTotalTime(e).toFixed(2)+" ms")},_recordWrite:function(e,t,n,r){var o=l._allMeasurements[l._allMeasurements.length-1].writes;o[e]=o[e]||[],o[e].push({type:t,time:n,args:r})},measure:function(e,t,n){return function(){for(var r=[],a=0,i=arguments.length;i>a;a++)r.push(arguments[a]);var u,p,d;if("_renderNewRootComponent"===t||"flushBatchedUpdates"===t)return l._allMeasurements.push({exclusive:{},inclusive:{},render:{},counts:{},writes:{},displayNames:{},totalTime:0}),d=c(),p=n.apply(this,r),l._allMeasurements[l._allMeasurements.length-1].totalTime=c()-d,p;if("_mountImageIntoNode"===t||"ReactDOMIDOperations"===e){if(d=c(),p=n.apply(this,r),u=c()-d,"_mountImageIntoNode"===t){var f=s.getID(r[1]);l._recordWrite(f,t,u,r[0])}else"dangerouslyProcessChildrenUpdates"===t?r[0].forEach(function(e){var t={};null!==e.fromIndex&&(t.fromIndex=e.fromIndex),null!==e.toIndex&&(t.toIndex=e.toIndex),null!==e.textContent&&(t.textContent=e.textContent),null!==e.markupIndex&&(t.markup=r[1][e.markupIndex]),l._recordWrite(e.parentID,e.type,u,t)}):l._recordWrite(r[0],t,u,Array.prototype.slice.call(r,1));return p}if("ReactCompositeComponent"!==e||"mountComponent"!==t&&"updateComponent"!==t&&"_renderValidatedComponent"!==t)return n.apply(this,r);if("string"==typeof this._currentElement.type)return n.apply(this,r);var h="mountComponent"===t?r[0]:this._rootNodeID,m="_renderValidatedComponent"===t,v="mountComponent"===t,g=l._mountStack,y=l._allMeasurements[l._allMeasurements.length-1];if(m?o(y.counts,h,1):v&&g.push(0),d=c(),p=n.apply(this,r),u=c()-d,m)o(y.render,h,u);else if(v){var E=g.pop();g[g.length-1]+=u,o(y.exclusive,h,u-E),o(y.inclusive,h,u)}else o(y.inclusive,h,u);return y.displayNames[h]={current:this.getName(),owner:this._currentElement._owner?this._currentElement._owner.getName():""},p}}};t.exports=l},{"./DOMProperty":10,"./ReactDefaultPerfAnalysis":57,"./ReactMount":71,"./ReactPerf":76,"./performanceNow":147}],57:[function(e,t,n){function r(e){for(var t=0,n=0;n=c&&s.push(n[t]);return s.sort(function(e,t){return t.exclusive-e.exclusive}),s}function i(e,t){for(var n,r={},o=0;o "+d.current,r[n]=r[n]||{componentName:n,time:0,count:0},i.inclusive[p]&&(r[n].time+=i.inclusive[p]),i.counts[p]&&(r[n].count+=i.counts[p])}}var f=[];for(n in r)r[n].time>=c&&f.push(r[n]);return f.sort(function(e,t){return t.time-e.time}),f}function s(e){var t={},n=Object.keys(e.writes),r=u({},e.exclusive,e.inclusive);for(var o in r){for(var a=!1,i=0;i0&&(t[o]=!0)}return t}var u=e("./Object.assign"),c=1.2,l={_mountImageIntoNode:"set innerHTML",INSERT_MARKUP:"set innerHTML",MOVE_EXISTING:"move",REMOVE_NODE:"remove",TEXT_CONTENT:"set textContent",updatePropertyByID:"update attribute",deletePropertyByID:"delete attribute",updateStylesByID:"update styles",updateInnerHTMLByID:"set innerHTML",dangerouslyReplaceNodeWithMarkupByID:"replace"},p={getExclusiveSummary:a,getInclusiveSummary:i,getDOMSummary:o,getTotalTime:r};t.exports=p},{"./Object.assign":27}],58:[function(e,t,n){"use strict";var r=e("./ReactContext"),o=e("./ReactCurrentOwner"),a=e("./Object.assign"),i=(e("./warning"),{key:!0,ref:!0}),s=function(e,t,n,r,o,a){this.type=e,this.key=t,this.ref=n,this._owner=r,this._context=o,this.props=a};s.prototype={_isReactElement:!0},s.createElement=function(e,t,n){var a,u={},c=null,l=null;if(null!=t){l=void 0===t.ref?null:t.ref,c=void 0===t.key?null:""+t.key;for(a in t)t.hasOwnProperty(a)&&!i.hasOwnProperty(a)&&(u[a]=t[a])}var p=arguments.length-2;if(1===p)u.children=n;else if(p>1){for(var d=Array(p),f=0;p>f;f++)d[f]=arguments[f+2];u.children=d}if(e&&e.defaultProps){var h=e.defaultProps;for(a in h)"undefined"==typeof u[a]&&(u[a]=h[a])}return new s(e,c,l,o.current,r.current,u)},s.createFactory=function(e){var t=s.createElement.bind(null,e);return t.type=e,t},s.cloneAndReplaceProps=function(e,t){var n=new s(e.type,e.key,e.ref,e._owner,e._context,t);return n},s.cloneElement=function(e,t,n){var r,u=a({},e.props),c=e.key,l=e.ref,p=e._owner;if(null!=t){void 0!==t.ref&&(l=t.ref,p=o.current),void 0!==t.key&&(c=""+t.key);for(r in t)t.hasOwnProperty(r)&&!i.hasOwnProperty(r)&&(u[r]=t[r])}var d=arguments.length-2;if(1===d)u.children=n;else if(d>1){for(var f=Array(d),h=0;d>h;h++)f[h]=arguments[h+2];u.children=f}return new s(e.type,c,l,p,e._context,u)},s.isValidElement=function(e){var t=!(!e||!e._isReactElement);return t},t.exports=s},{"./Object.assign":27,"./ReactContext":39,"./ReactCurrentOwner":40,"./warning":155}],59:[function(e,t,n){"use strict";function r(){if(y.current){var e=y.current.getName();if(e)return" Check the render method of `"+e+"`."}return""}function o(e){var t=e&&e.getPublicInstance();if(!t)return void 0;var n=t.constructor;return n?n.displayName||n.name||void 0:void 0}function a(){var e=y.current;return e&&o(e)||void 0}function i(e,t){e._store.validated||null!=e.key||(e._store.validated=!0,u('Each child in an array or iterator should have a unique "key" prop.',e,t))}function s(e,t,n){b.test(e)&&u("Child objects should have non-numeric keys so ordering is preserved.",t,n)}function u(e,t,n){var r=a(),i="string"==typeof n?n:n.displayName||n.name,s=r||i,u=M[e]||(M[e]={});if(!u.hasOwnProperty(s)){u[s]=!0;var c="";if(t&&t._owner&&t._owner!==y.current){var l=o(t._owner);c=" It was passed a child from "+l+"."}}}function c(e,t){if(Array.isArray(e))for(var n=0;n");var s="";o&&(s=" The element was created by "+o+".")}}function d(e,t){return e!==e?t!==t:0===e&&0===t?1/e===1/t:e===t}function f(e){if(e._store){var t=e._store.originalProps,n=e.props;for(var r in n)n.hasOwnProperty(r)&&(t.hasOwnProperty(r)&&d(t[r],n[r])||(p(r,e),t[r]=n[r]))}}function h(e){if(null!=e.type){var t=E.getComponentClassForElement(e),n=t.displayName||t.name;t.propTypes&&l(n,t.propTypes,e.props,g.prop),"function"==typeof t.getDefaultProps}}var m=e("./ReactElement"),v=e("./ReactFragment"),g=e("./ReactPropTypeLocations"),y=(e("./ReactPropTypeLocationNames"),e("./ReactCurrentOwner")),E=e("./ReactNativeComponent"),C=e("./getIteratorFn"),_=e("./invariant"),M=(e("./warning"),{}),R={},b=/^\d+$/,D={},w={checkAndWarnForMutatedProps:f,createElement:function(e,t,n){var r=m.createElement.apply(this,arguments);if(null==r)return r;for(var o=2;oo;o++){t=e.ancestors[o];var i=p.getID(t)||"";v._handleTopLevel(e.topLevelType,t,i,e.nativeEvent)}}function i(e){var t=m(window);e(t)}var s=e("./EventListener"),u=e("./ExecutionEnvironment"),c=e("./PooledClass"),l=e("./ReactInstanceHandles"),p=e("./ReactMount"),d=e("./ReactUpdates"),f=e("./Object.assign"),h=e("./getEventTarget"),m=e("./getUnboundedScrollPosition");f(o.prototype,{destructor:function(){this.topLevelType=null,this.nativeEvent=null,this.ancestors.length=0}}),c.addPoolingTo(o,c.twoArgumentPooler);var v={_enabled:!0,_handleTopLevel:null,WINDOW_HANDLE:u.canUseDOM?window:null,setHandleTopLevel:function(e){v._handleTopLevel=e},setEnabled:function(e){v._enabled=!!e},isEnabled:function(){return v._enabled},trapBubbledEvent:function(e,t,n){var r=n;return r?s.listen(r,t,v.dispatchEvent.bind(null,e)):null},trapCapturedEvent:function(e,t,n){var r=n;return r?s.capture(r,t,v.dispatchEvent.bind(null,e)):null},monitorScrollValue:function(e){var t=i.bind(null,e);s.listen(window,"scroll",t)},dispatchEvent:function(e,t){if(v._enabled){var n=o.getPooled(e,t);try{d.batchedUpdates(a,n)}finally{o.release(n)}}}};t.exports=v},{"./EventListener":16,"./ExecutionEnvironment":21,"./Object.assign":27,"./PooledClass":28,"./ReactInstanceHandles":67,"./ReactMount":71,"./ReactUpdates":88,"./getEventTarget":126,"./getUnboundedScrollPosition":132}],64:[function(e,t,n){"use strict";var r=(e("./ReactElement"),e("./warning"),{create:function(e){return e},extract:function(e){return e},extractIfFragment:function(e){return e}});t.exports=r},{"./ReactElement":58,"./warning":155}],65:[function(e,t,n){"use strict";var r=e("./DOMProperty"),o=e("./EventPluginHub"),a=e("./ReactComponentEnvironment"),i=e("./ReactClass"),s=e("./ReactEmptyComponent"),u=e("./ReactBrowserEventEmitter"),c=e("./ReactNativeComponent"),l=e("./ReactDOMComponent"),p=e("./ReactPerf"),d=e("./ReactRootIndex"),f=e("./ReactUpdates"),h={Component:a.injection,Class:i.injection,DOMComponent:l.injection,DOMProperty:r.injection,EmptyComponent:s.injection,EventPluginHub:o.injection,EventEmitter:u.injection,NativeComponent:c.injection,Perf:p.injection,RootIndex:d.injection,Updates:f.injection};t.exports=h},{"./DOMProperty":10,"./EventPluginHub":17,"./ReactBrowserEventEmitter":31,"./ReactClass":34,"./ReactComponentEnvironment":37,"./ReactDOMComponent":43,"./ReactEmptyComponent":60,"./ReactNativeComponent":74,"./ReactPerf":76,"./ReactRootIndex":84,"./ReactUpdates":88}],66:[function(e,t,n){"use strict";function r(e){return a(document.documentElement,e)}var o=e("./ReactDOMSelection"),a=e("./containsNode"),i=e("./focusNode"),s=e("./getActiveElement"),u={hasSelectionCapabilities:function(e){return e&&("INPUT"===e.nodeName&&"text"===e.type||"TEXTAREA"===e.nodeName||"true"===e.contentEditable)},getSelectionInformation:function(){var e=s();return{focusedElem:e,selectionRange:u.hasSelectionCapabilities(e)?u.getSelection(e):null}},restoreSelection:function(e){var t=s(),n=e.focusedElem,o=e.selectionRange;t!==n&&r(n)&&(u.hasSelectionCapabilities(n)&&u.setSelection(n,o),i(n))},getSelection:function(e){var t;if("selectionStart"in e)t={start:e.selectionStart,end:e.selectionEnd};else if(document.selection&&"INPUT"===e.nodeName){var n=document.selection.createRange();n.parentElement()===e&&(t={start:-n.moveStart("character",-e.value.length),end:-n.moveEnd("character",-e.value.length)})}else t=o.getOffsets(e);return t||{start:0,end:0}},setSelection:function(e,t){var n=t.start,r=t.end;if("undefined"==typeof r&&(r=n),"selectionStart"in e)e.selectionStart=n,e.selectionEnd=Math.min(r,e.value.length);else if(document.selection&&"INPUT"===e.nodeName){var a=e.createTextRange();a.collapse(!0),a.moveStart("character",n),a.moveEnd("character",r-n),a.select()}else o.setOffsets(e,t)}};t.exports=u},{"./ReactDOMSelection":51,"./containsNode":110,"./focusNode":120,"./getActiveElement":122}],67:[function(e,t,n){"use strict";function r(e){return f+e.toString(36)}function o(e,t){return e.charAt(t)===f||t===e.length}function a(e){return""===e||e.charAt(0)===f&&e.charAt(e.length-1)!==f}function i(e,t){return 0===t.indexOf(e)&&o(t,e.length)}function s(e){return e?e.substr(0,e.lastIndexOf(f)):""}function u(e,t){if(d(a(e)&&a(t)),d(i(e,t)),e===t)return e;var n,r=e.length+h;for(n=r;n=i;i++)if(o(e,i)&&o(t,i))r=i;else if(e.charAt(i)!==t.charAt(i))break;var s=e.substr(0,r);return d(a(s)),s}function l(e,t,n,r,o,a){e=e||"",t=t||"",d(e!==t);var c=i(t,e);d(c||i(e,t));for(var l=0,p=c?s:u,f=e;;f=p(f,t)){var h;if(o&&f===e||a&&f===t||(h=n(f,c,r)),h===!1||f===t)break;d(l++1){var t=e.indexOf(f,1);return t>-1?e.substr(0,t):e}return null},traverseEnterLeave:function(e,t,n,r,o){var a=c(e,t);a!==e&&l(e,a,n,r,!1,!0),a!==t&&l(a,t,n,o,!0,!1)},traverseTwoPhase:function(e,t,n){e&&(l("",e,t,n,!0,!1),l(e,"",t,n,!1,!0))},traverseAncestors:function(e,t,n){l("",e,t,n,!0,!1)},_getFirstCommonAncestorID:c,_getNextDescendantID:u,isAncestorIDOf:i,SEPARATOR:f};t.exports=v},{"./ReactRootIndex":84,"./invariant":136}],68:[function(e,t,n){"use strict";var r={remove:function(e){e._reactInternalInstance=void 0},get:function(e){return e._reactInternalInstance},has:function(e){return void 0!==e._reactInternalInstance},set:function(e,t){e._reactInternalInstance=t}};t.exports=r},{}],69:[function(e,t,n){"use strict";var r={currentlyMountingInstance:null,currentlyUnmountingInstance:null};t.exports=r},{}],70:[function(e,t,n){"use strict";var r=e("./adler32"),o={CHECKSUM_ATTR_NAME:"data-react-checksum",addChecksumToMarkup:function(e){var t=r(e);return e.replace(">"," "+o.CHECKSUM_ATTR_NAME+'="'+t+'">')},canReuseMarkup:function(e,t){var n=t.getAttribute(o.CHECKSUM_ATTR_NAME);n=n&&parseInt(n,10);var a=r(e);return a===n}};t.exports=o},{"./adler32":107}],71:[function(e,t,n){"use strict";function r(e,t){for(var n=Math.min(e.length,t.length),r=0;n>r;r++)if(e.charAt(r)!==t.charAt(r))return r;return e.length===t.length?-1:n}function o(e){var t=T(e);return t&&H.getID(t)}function a(e){var t=i(e);if(t)if(U.hasOwnProperty(t)){var n=U[t];n!==e&&(I(!l(n,t)),U[t]=e)}else U[t]=e;return t}function i(e){return e&&e.getAttribute&&e.getAttribute(A)||""}function s(e,t){var n=i(e);n!==t&&delete U[n],e.setAttribute(A,t),U[t]=e}function u(e){return U.hasOwnProperty(e)&&l(U[e],e)||(U[e]=H.findReactNodeByID(e)),U[e]}function c(e){var t=_.get(e)._rootNodeID;return E.isNullComponentID(t)?null:(U.hasOwnProperty(t)&&l(U[t],t)||(U[t]=H.findReactNodeByID(t)),U[t])}function l(e,t){if(e){I(i(e)===t);var n=H.findReactContainerForID(t);if(n&&O(n,e))return!0}return!1}function p(e){delete U[e]}function d(e){var t=U[e];return t&&l(t,e)?void(V=t):!1}function f(e){V=null,C.traverseAncestors(e,d);var t=V;return V=null,t}function h(e,t,n,r,o){var a=b.mountComponent(e,t,r,x);e._isTopLevel=!0,H._mountImageIntoNode(a,n,o)}function m(e,t,n,r){var o=w.ReactReconcileTransaction.getPooled();o.perform(h,null,e,t,n,o,r),w.ReactReconcileTransaction.release(o)}var v=e("./DOMProperty"),g=e("./ReactBrowserEventEmitter"),y=(e("./ReactCurrentOwner"),e("./ReactElement")),E=(e("./ReactElementValidator"),e("./ReactEmptyComponent")),C=e("./ReactInstanceHandles"),_=e("./ReactInstanceMap"),M=e("./ReactMarkupChecksum"),R=e("./ReactPerf"),b=e("./ReactReconciler"),D=e("./ReactUpdateQueue"),w=e("./ReactUpdates"),x=e("./emptyObject"),O=e("./containsNode"),T=e("./getReactRootElementInContainer"),P=e("./instantiateReactComponent"),I=e("./invariant"),S=e("./setInnerHTML"),N=e("./shouldUpdateReactComponent"),k=(e("./warning"),C.SEPARATOR),A=v.ID_ATTRIBUTE_NAME,U={},L=1,F=9,j={},B={},Y=[],V=null,H={_instancesByReactRootID:j,scrollMonitor:function(e,t){t()},_updateRootComponent:function(e,t,n,r){return H.scrollMonitor(n,function(){D.enqueueElementInternal(e,t),r&&D.enqueueCallbackInternal(e,r)}),e},_registerComponent:function(e,t){I(t&&(t.nodeType===L||t.nodeType===F)),g.ensureScrollValueMonitoring();var n=H.registerContainer(t);return j[n]=e,n},_renderNewRootComponent:function(e,t,n){var r=P(e,null),o=H._registerComponent(r,t);return w.batchedUpdates(m,r,o,t,n),r},render:function(e,t,n){I(y.isValidElement(e));var r=j[o(t)];if(r){var a=r._currentElement;if(N(a,e))return H._updateRootComponent(r,e,t,n).getPublicInstance();H.unmountComponentAtNode(t)}var i=T(t),s=i&&H.isRenderedByReact(i),u=s&&!r,c=H._renderNewRootComponent(e,t,u).getPublicInstance();return n&&n.call(c),c},constructAndRenderComponent:function(e,t,n){var r=y.createElement(e,t);return H.render(r,n)},constructAndRenderComponentByID:function(e,t,n){var r=document.getElementById(n);return I(r),H.constructAndRenderComponent(e,t,r)},registerContainer:function(e){var t=o(e);return t&&(t=C.getReactRootIDFromNodeID(t)),t||(t=C.createReactRootID()),B[t]=e,t},unmountComponentAtNode:function(e){I(e&&(e.nodeType===L||e.nodeType===F));var t=o(e),n=j[t];return n?(H.unmountComponentFromNode(n,e),delete j[t],delete B[t],!0):!1},unmountComponentFromNode:function(e,t){for(b.unmountComponent(e), +t.nodeType===F&&(t=t.documentElement);t.lastChild;)t.removeChild(t.lastChild)},findReactContainerForID:function(e){var t=C.getReactRootIDFromNodeID(e),n=B[t];return n},findReactNodeByID:function(e){var t=H.findReactContainerForID(e);return H.findComponentRoot(t,e)},isRenderedByReact:function(e){if(1!==e.nodeType)return!1;var t=H.getID(e);return t?t.charAt(0)===k:!1},getFirstReactDOM:function(e){for(var t=e;t&&t.parentNode!==t;){if(H.isRenderedByReact(t))return t;t=t.parentNode}return null},findComponentRoot:function(e,t){var n=Y,r=0,o=f(t)||e;for(n[0]=o.firstChild,n.length=1;r>",M=s(),R=d(),b={array:o("array"),bool:o("boolean"),func:o("function"),number:o("number"),object:o("object"),string:o("string"),any:a(),arrayOf:i,element:M,instanceOf:u,node:R,objectOf:l,oneOf:c,oneOfType:p,shape:f};t.exports=b},{"./ReactElement":58,"./ReactFragment":64,"./ReactPropTypeLocationNames":77,"./emptyFunction":115}],80:[function(e,t,n){"use strict";function r(){this.listenersToPut=[]}var o=e("./PooledClass"),a=e("./ReactBrowserEventEmitter"),i=e("./Object.assign");i(r.prototype,{enqueuePutListener:function(e,t,n){this.listenersToPut.push({rootNodeID:e,propKey:t,propValue:n})},putListeners:function(){for(var e=0;en;n++){var r=g[n],o=r._pendingCallbacks;if(r._pendingCallbacks=null,f.performUpdateIfNecessary(r,e.reconcileTransaction),o)for(var a=0;a":">","<":"<",'"':""","'":"'"},i=/[&><"']/g;t.exports=o},{}],118:[function(e,t,n){"use strict";function r(e){return null==e?null:s(e)?e:o.has(e)?a.getNodeFromInstance(e):(i(null==e.render||"function"!=typeof e.render),void i(!1))}{var o=(e("./ReactCurrentOwner"),e("./ReactInstanceMap")),a=e("./ReactMount"),i=e("./invariant"),s=e("./isNode");e("./warning")}t.exports=r},{"./ReactCurrentOwner":40,"./ReactInstanceMap":68,"./ReactMount":71,"./invariant":136,"./isNode":138,"./warning":155}],119:[function(e,t,n){"use strict";function r(e,t,n){var r=e,o=!r.hasOwnProperty(n);o&&null!=t&&(r[n]=t)}function o(e){if(null==e)return e;var t={};return a(e,r,t),t}{var a=e("./traverseAllChildren");e("./warning")}t.exports=o},{"./traverseAllChildren":154,"./warning":155}],120:[function(e,t,n){"use strict";function r(e){try{e.focus()}catch(t){}}t.exports=r},{}],121:[function(e,t,n){"use strict";var r=function(e,t,n){Array.isArray(e)?e.forEach(t,n):e&&t.call(n,e)};t.exports=r},{}],122:[function(e,t,n){function r(){try{return document.activeElement||document.body}catch(e){return document.body}}t.exports=r},{}],123:[function(e,t,n){"use strict";function r(e){var t,n=e.keyCode;return"charCode"in e?(t=e.charCode,0===t&&13===n&&(t=13)):t=n,t>=32||13===t?t:0}t.exports=r},{}],124:[function(e,t,n){"use strict";function r(e){if(e.key){var t=a[e.key]||e.key;if("Unidentified"!==t)return t}if("keypress"===e.type){var n=o(e);return 13===n?"Enter":String.fromCharCode(n)}return"keydown"===e.type||"keyup"===e.type?i[e.keyCode]||"Unidentified":""}var o=e("./getEventCharCode"),a={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},i={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"};t.exports=r},{"./getEventCharCode":123}],125:[function(e,t,n){"use strict";function r(e){var t=this,n=t.nativeEvent;if(n.getModifierState)return n.getModifierState(e);var r=a[e];return r?!!n[r]:!1}function o(e){return r}var a={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};t.exports=o},{}],126:[function(e,t,n){"use strict";function r(e){var t=e.target||e.srcElement||window;return 3===t.nodeType?t.parentNode:t}t.exports=r},{}],127:[function(e,t,n){"use strict";function r(e){var t=e&&(o&&e[o]||e[a]);return"function"==typeof t?t:void 0}var o="function"==typeof Symbol&&Symbol.iterator,a="@@iterator";t.exports=r},{}],128:[function(e,t,n){function r(e){return a(!!i),d.hasOwnProperty(e)||(e="*"),s.hasOwnProperty(e)||(i.innerHTML="*"===e?"":"<"+e+">",s[e]=!i.firstChild),s[e]?d[e]:null}var o=e("./ExecutionEnvironment"),a=e("./invariant"),i=o.canUseDOM?document.createElement("div"):null,s={circle:!0,clipPath:!0,defs:!0,ellipse:!0,g:!0,line:!0,linearGradient:!0,path:!0,polygon:!0,polyline:!0,radialGradient:!0,rect:!0,stop:!0,text:!0},u=[1,'"],c=[1,"","
"],l=[3,"","
"],p=[1,"",""],d={"*":[1,"?
","
"],area:[1,"",""],col:[2,"","
"],legend:[1,"
","
"],param:[1,"",""],tr:[2,"","
"],optgroup:u,option:u,caption:c,colgroup:c,tbody:c,tfoot:c,thead:c,td:l,th:l,circle:p,clipPath:p,defs:p,ellipse:p,g:p,line:p,linearGradient:p,path:p,polygon:p,polyline:p,radialGradient:p,rect:p,stop:p,text:p};t.exports=r},{"./ExecutionEnvironment":21,"./invariant":136}],129:[function(e,t,n){"use strict";function r(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function o(e){for(;e;){if(e.nextSibling)return e.nextSibling;e=e.parentNode}}function a(e,t){for(var n=r(e),a=0,i=0;n;){if(3===n.nodeType){if(i=a+n.textContent.length,t>=a&&i>=t)return{node:n,offset:t-a};a=i}n=r(o(n))}}t.exports=a},{}],130:[function(e,t,n){"use strict";function r(e){return e?e.nodeType===o?e.documentElement:e.firstChild:null}var o=9;t.exports=r},{}],131:[function(e,t,n){"use strict";function r(){return!a&&o.canUseDOM&&(a="textContent"in document.documentElement?"textContent":"innerText"),a}var o=e("./ExecutionEnvironment"),a=null;t.exports=r},{"./ExecutionEnvironment":21}],132:[function(e,t,n){"use strict";function r(e){return e===window?{x:window.pageXOffset||document.documentElement.scrollLeft,y:window.pageYOffset||document.documentElement.scrollTop}:{x:e.scrollLeft,y:e.scrollTop}}t.exports=r},{}],133:[function(e,t,n){function r(e){return e.replace(o,"-$1").toLowerCase()}var o=/([A-Z])/g;t.exports=r},{}],134:[function(e,t,n){"use strict";function r(e){return o(e).replace(a,"-ms-")}var o=e("./hyphenate"),a=/^ms-/;t.exports=r},{"./hyphenate":133}],135:[function(e,t,n){"use strict";function r(e){return"function"==typeof e&&"undefined"!=typeof e.prototype&&"function"==typeof e.prototype.mountComponent&&"function"==typeof e.prototype.receiveComponent}function o(e,t){var n;if((null===e||e===!1)&&(e=i.emptyElement),"object"==typeof e){var o=e;n=t===o.type&&"string"==typeof o.type?s.createInternalComponent(o):r(o.type)?new o.type(o):new l}else"string"==typeof e||"number"==typeof e?n=s.createInstanceForText(e):c(!1);return n.construct(e),n._mountIndex=0,n._mountImage=null,n}var a=e("./ReactCompositeComponent"),i=e("./ReactEmptyComponent"),s=e("./ReactNativeComponent"),u=e("./Object.assign"),c=e("./invariant"),l=(e("./warning"),function(){});u(l.prototype,a.Mixin,{_instantiateReactComponent:o}),t.exports=o},{"./Object.assign":27,"./ReactCompositeComponent":38,"./ReactEmptyComponent":60,"./ReactNativeComponent":74,"./invariant":136,"./warning":155}],136:[function(e,t,n){"use strict";var r=function(e,t,n,r,o,a,i,s){if(!e){var u;if(void 0===t)u=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var c=[n,r,o,a,i,s],l=0;u=new Error("Invariant Violation: "+t.replace(/%s/g,function(){return c[l++]}))}throw u.framesToPop=1,u}};t.exports=r},{}],137:[function(e,t,n){"use strict";function r(e,t){if(!a.canUseDOM||t&&!("addEventListener"in document))return!1;var n="on"+e,r=n in document;if(!r){var i=document.createElement("div");i.setAttribute(n,"return;"),r="function"==typeof i[n]}return!r&&o&&"wheel"===e&&(r=document.implementation.hasFeature("Events.wheel","3.0")),r}var o,a=e("./ExecutionEnvironment");a.canUseDOM&&(o=document.implementation&&document.implementation.hasFeature&&document.implementation.hasFeature("","")!==!0),t.exports=r},{"./ExecutionEnvironment":21}],138:[function(e,t,n){function r(e){return!(!e||!("function"==typeof Node?e instanceof Node:"object"==typeof e&&"number"==typeof e.nodeType&&"string"==typeof e.nodeName))}t.exports=r},{}],139:[function(e,t,n){"use strict";function r(e){return e&&("INPUT"===e.nodeName&&o[e.type]||"TEXTAREA"===e.nodeName)}var o={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};t.exports=r},{}],140:[function(e,t,n){function r(e){return o(e)&&3==e.nodeType}var o=e("./isNode");t.exports=r},{"./isNode":138}],141:[function(e,t,n){"use strict";var r=e("./invariant"),o=function(e){var t,n={};r(e instanceof Object&&!Array.isArray(e));for(t in e)e.hasOwnProperty(t)&&(n[t]=t);return n};t.exports=o},{"./invariant":136}],142:[function(e,t,n){var r=function(e){var t;for(t in e)if(e.hasOwnProperty(t))return t;return null};t.exports=r},{}],143:[function(e,t,n){"use strict";function r(e,t,n){if(!e)return null;var r={};for(var a in e)o.call(e,a)&&(r[a]=t.call(n,e[a],a,e));return r}var o=Object.prototype.hasOwnProperty;t.exports=r},{}],144:[function(e,t,n){"use strict";function r(e){var t={};return function(n){return t.hasOwnProperty(n)||(t[n]=e.call(this,n)),t[n]}}t.exports=r},{}],145:[function(e,t,n){"use strict";function r(e){return a(o.isValidElement(e)),e}var o=e("./ReactElement"),a=e("./invariant");t.exports=r},{"./ReactElement":58,"./invariant":136}],146:[function(e,t,n){"use strict";var r,o=e("./ExecutionEnvironment");o.canUseDOM&&(r=window.performance||window.msPerformance||window.webkitPerformance),t.exports=r||{}},{"./ExecutionEnvironment":21}],147:[function(e,t,n){var r=e("./performance");r&&r.now||(r=Date);var o=r.now.bind(r);t.exports=o},{"./performance":146}],148:[function(e,t,n){"use strict";function r(e){return'"'+o(e)+'"'}var o=e("./escapeTextContentForBrowser");t.exports=r},{"./escapeTextContentForBrowser":117}],149:[function(e,t,n){"use strict";var r=e("./ExecutionEnvironment"),o=/^[ \r\n\t\f]/,a=/<(!--|link|noscript|meta|script|style)[ \r\n\t\f\/>]/,i=function(e,t){e.innerHTML=t};if("undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction&&(i=function(e,t){MSApp.execUnsafeLocalFunction(function(){e.innerHTML=t})}),r.canUseDOM){var s=document.createElement("div");s.innerHTML=" ",""===s.innerHTML&&(i=function(e,t){if(e.parentNode&&e.parentNode.replaceChild(e,e),o.test(t)||"<"===t[0]&&a.test(t)){e.innerHTML="\ufeff"+t;var n=e.firstChild;1===n.data.length?e.removeChild(n):n.deleteData(0,1)}else e.innerHTML=t})}t.exports=i},{"./ExecutionEnvironment":21}],150:[function(e,t,n){"use strict";var r=e("./ExecutionEnvironment"),o=e("./escapeTextContentForBrowser"),a=e("./setInnerHTML"),i=function(e,t){e.textContent=t};r.canUseDOM&&("textContent"in document.documentElement||(i=function(e,t){a(e,o(t))})),t.exports=i},{"./ExecutionEnvironment":21,"./escapeTextContentForBrowser":117,"./setInnerHTML":149}],151:[function(e,t,n){"use strict";function r(e,t){if(e===t)return!0;var n;for(n in e)if(e.hasOwnProperty(n)&&(!t.hasOwnProperty(n)||e[n]!==t[n]))return!1;for(n in t)if(t.hasOwnProperty(n)&&!e.hasOwnProperty(n))return!1;return!0}t.exports=r},{}],152:[function(e,t,n){"use strict";function r(e,t){if(null!=e&&null!=t){var n=typeof e,r=typeof t;if("string"===n||"number"===n)return"string"===r||"number"===r;if("object"===r&&e.type===t.type&&e.key===t.key){var o=e._owner===t._owner;return o}}return!1}e("./warning");t.exports=r},{"./warning":155}],153:[function(e,t,n){function r(e){var t=e.length;if(o(!Array.isArray(e)&&("object"==typeof e||"function"==typeof e)),o("number"==typeof t),o(0===t||t-1 in e),e.hasOwnProperty)try{return Array.prototype.slice.call(e)}catch(n){}for(var r=Array(t),a=0;t>a;a++)r[a]=e[a];return r}var o=e("./invariant");t.exports=r},{"./invariant":136}],154:[function(e,t,n){"use strict";function r(e){return v[e]}function o(e,t){return e&&null!=e.key?i(e.key):t.toString(36)}function a(e){return(""+e).replace(g,r)}function i(e){return"$"+a(e)}function s(e,t,n,r,a){var u=typeof e;if(("undefined"===u||"boolean"===u)&&(e=null),null===e||"string"===u||"number"===u||c.isValidElement(e))return r(a,e,""===t?h+o(e,0):t,n),1;var p,v,g,y=0;if(Array.isArray(e))for(var E=0;Ea;++a)n=o[a],t=n.split("="),r[decodeURIComponent(t[0])]=decodeURIComponent(t[1]);return r}function u(e){var t,n,r,o,a=e.split(/\r?\n/),i={};a.pop();for(var s=0,u=a.length;u>s;++s)n=a[s],t=n.indexOf(":"),r=n.slice(0,t).toLowerCase(),o=g(n.slice(t+1)),i[r]=o;return i}function c(e){return e.split(/ *; */).shift()}function l(e){return m(e.split(/ *; */),function(e,t){var n=t.split(/ *= */),r=n.shift(),o=n.shift();return r&&o&&(e[r]=o),e},{})}function p(e,t){t=t||{},this.req=e,this.xhr=this.req.xhr,this.text="HEAD"!=this.req.method&&(""===this.xhr.responseType||"text"===this.xhr.responseType)||"undefined"==typeof this.xhr.responseType?this.xhr.responseText:null,this.statusText=this.req.xhr.statusText,this.setStatusProperties(this.xhr.status),this.header=this.headers=u(this.xhr.getAllResponseHeaders()),this.header["content-type"]=this.xhr.getResponseHeader("content-type"),this.setHeaderProperties(this.header),this.body="HEAD"!=this.req.method?this.parseBody(this.text?this.text:this.xhr.response):null}function d(e,t){var n=this;h.call(this),this._query=this._query||[],this.method=e,this.url=t,this.header={},this._header={},this.on("end",function(){var e=null,t=null;try{t=new p(n)}catch(r){return e=new Error("Parser is unable to parse the response"),e.parse=!0,e.original=r,n.callback(e)}if(n.emit("response",t),e)return n.callback(e,t);if(t.status>=200&&t.status<300)return n.callback(e,t);var o=new Error(t.statusText||"Unsuccessful HTTP response");o.original=e,o.response=t,o.status=t.status,n.callback(e||o,t)})}function f(e,t){return"function"==typeof t?new d("GET",e).end(t):1==arguments.length?new d("GET",e):new d(e,t)}var h=e("emitter"),m=e("reduce"),v="undefined"==typeof window?this||self:window;f.getXHR=function(){if(!(!v.XMLHttpRequest||v.location&&"file:"==v.location.protocol&&v.ActiveXObject))return new XMLHttpRequest;try{return new ActiveXObject("Microsoft.XMLHTTP")}catch(e){}try{return new ActiveXObject("Msxml2.XMLHTTP.6.0")}catch(e){}try{return new ActiveXObject("Msxml2.XMLHTTP.3.0")}catch(e){}try{return new ActiveXObject("Msxml2.XMLHTTP")}catch(e){}return!1};var g="".trim?function(e){return e.trim()}:function(e){return e.replace(/(^\s*|\s*$)/g,"")};f.serializeObject=i,f.parseString=s,f.types={html:"text/html",json:"application/json",xml:"application/xml",urlencoded:"application/x-www-form-urlencoded",form:"application/x-www-form-urlencoded","form-data":"application/x-www-form-urlencoded"},f.serialize={"application/x-www-form-urlencoded":i,"application/json":JSON.stringify},f.parse={"application/x-www-form-urlencoded":s,"application/json":JSON.parse},p.prototype.get=function(e){return this.header[e.toLowerCase()]},p.prototype.setHeaderProperties=function(e){var t=this.header["content-type"]||"";this.type=c(t);var n=l(t);for(var r in n)this[r]=n[r]},p.prototype.parseBody=function(e){var t=f.parse[this.type];return t&&e&&(e.length||e instanceof Object)?t(e):null},p.prototype.setStatusProperties=function(e){1223===e&&(e=204);var t=e/100|0;this.status=e,this.statusType=t,this.info=1==t,this.ok=2==t,this.clientError=4==t,this.serverError=5==t,this.error=4==t||5==t?this.toError():!1,this.accepted=202==e,this.noContent=204==e,this.badRequest=400==e,this.unauthorized=401==e,this.notAcceptable=406==e,this.notFound=404==e,this.forbidden=403==e},p.prototype.toError=function(){var e=this.req,t=e.method,n=e.url,r="cannot "+t+" "+n+" ("+this.status+")",o=new Error(r);return o.status=this.status,o.method=t,o.url=n,o},f.Response=p,h(d.prototype),d.prototype.use=function(e){return e(this),this},d.prototype.timeout=function(e){return this._timeout=e,this},d.prototype.clearTimeout=function(){return this._timeout=0,clearTimeout(this._timer),this},d.prototype.abort=function(){return this.aborted?void 0:(this.aborted=!0,this.xhr.abort(),this.clearTimeout(),this.emit("abort"),this)},d.prototype.set=function(e,t){if(a(e)){for(var n in e)this.set(n,e[n]);return this}return this._header[e.toLowerCase()]=t,this.header[e]=t,this},d.prototype.unset=function(e){return delete this._header[e.toLowerCase()],delete this.header[e],this},d.prototype.getHeader=function(e){return this._header[e.toLowerCase()]},d.prototype.type=function(e){return this.set("Content-Type",f.types[e]||e),this},d.prototype.accept=function(e){return this.set("Accept",f.types[e]||e),this},d.prototype.auth=function(e,t){var n=btoa(e+":"+t);return this.set("Authorization","Basic "+n),this},d.prototype.query=function(e){return"string"!=typeof e&&(e=i(e)),e&&this._query.push(e),this},d.prototype.field=function(e,t){return this._formData||(this._formData=new v.FormData),this._formData.append(e,t),this},d.prototype.attach=function(e,t,n){return this._formData||(this._formData=new v.FormData),this._formData.append(e,t,n),this},d.prototype.send=function(e){var t=a(e),n=this.getHeader("Content-Type");if(t&&a(this._data))for(var r in e)this._data[r]=e[r];else"string"==typeof e?(n||this.type("form"),n=this.getHeader("Content-Type"),this._data="application/x-www-form-urlencoded"==n?this._data?this._data+"&"+e:e:(this._data||"")+e):this._data=e;return!t||o(e)?this:(n||this.type("json"),this)},d.prototype.callback=function(e,t){var n=this._callback;this.clearTimeout(),n(e,t)},d.prototype.crossDomainError=function(){var e=new Error("Origin is not allowed by Access-Control-Allow-Origin");e.crossDomain=!0,this.callback(e)},d.prototype.timeoutError=function(){var e=this._timeout,t=new Error("timeout of "+e+"ms exceeded");t.timeout=e,this.callback(t)},d.prototype.withCredentials=function(){return this._withCredentials=!0,this},d.prototype.end=function(e){var t=this,n=this.xhr=f.getXHR(),a=this._query.join("&"),i=this._timeout,s=this._formData||this._data;this._callback=e||r,n.onreadystatechange=function(){if(4==n.readyState){var e;try{e=n.status}catch(r){e=0}if(0==e){if(t.timedout)return t.timeoutError();if(t.aborted)return;return t.crossDomainError()}t.emit("end")}};var u=function(e){e.total>0&&(e.percent=e.loaded/e.total*100),t.emit("progress",e)};this.hasListeners("progress")&&(n.onprogress=u);try{n.upload&&this.hasListeners("progress")&&(n.upload.onprogress=u)}catch(c){}if(i&&!this._timer&&(this._timer=setTimeout(function(){t.timedout=!0,t.abort()},i)),a&&(a=f.serializeObject(a),this.url+=~this.url.indexOf("?")?"&"+a:"?"+a),n.open(this.method,this.url,!0),this._withCredentials&&(n.withCredentials=!0),"GET"!=this.method&&"HEAD"!=this.method&&"string"!=typeof s&&!o(s)){var l=f.serialize[this.getHeader("Content-Type")];l&&(s=l(s))}for(var p in this.header)null!=this.header[p]&&n.setRequestHeader(p,this.header[p]);return this.emit("request",this),n.send(s),this},f.Request=d,f.get=function(e,t,n){var r=f("GET",e);return"function"==typeof t&&(n=t,t=null),t&&r.query(t),n&&r.end(n),r},f.head=function(e,t,n){var r=f("HEAD",e);return"function"==typeof t&&(n=t,t=null),t&&r.send(t),n&&r.end(n),r},f.del=function(e,t){var n=f("DELETE",e);return t&&n.end(t),n},f.patch=function(e,t,n){var r=f("PATCH",e);return"function"==typeof t&&(n=t,t=null),t&&r.send(t),n&&r.end(n),r},f.post=function(e,t,n){var r=f("POST",e);return"function"==typeof t&&(n=t,t=null),t&&r.send(t),n&&r.end(n),r},f.put=function(e,t,n){var r=f("PUT",e);return"function"==typeof t&&(n=t,t=null),t&&r.send(t),n&&r.end(n),r},t.exports=f},{emitter:158,reduce:159}],158:[function(e,t,n){function r(e){return e?o(e):void 0}function o(e){for(var t in r.prototype)e[t]=r.prototype[t];return e}t.exports=r,r.prototype.on=r.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks[e]=this._callbacks[e]||[]).push(t),this},r.prototype.once=function(e,t){function n(){r.off(e,n),t.apply(this,arguments)}var r=this;return this._callbacks=this._callbacks||{},n.fn=t,this.on(e,n),this},r.prototype.off=r.prototype.removeListener=r.prototype.removeAllListeners=r.prototype.removeEventListener=function(e,t){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var n=this._callbacks[e];if(!n)return this;if(1==arguments.length)return delete this._callbacks[e],this;for(var r,o=0;or;++r)n[r].apply(this,t)}return this},r.prototype.listeners=function(e){return this._callbacks=this._callbacks||{},this._callbacks[e]||[]},r.prototype.hasListeners=function(e){return!!this.listeners(e).length}},{}],159:[function(e,t,n){t.exports=function(e,t,n){for(var r=0,o=e.length,a=3==arguments.length?n:e[r++];o>r;)a=t.call(null,a,e[r],++r,e);return a}},{}],160:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}var o=e("react"),a=r(o),i=e("./components/mycomponent.jsx"),s=r(i);window.React=a["default"],a["default"].render(a["default"].createElement(s["default"],null),document.getElementById("content"))},{"./components/mycomponent.jsx":161,react:156}],161:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(n,"__esModule",{value:!0});var o=e("react"),a=r(o),i=e("superagent"),s=r(i),u=e("moment"),c=r(u),l=a["default"].createClass({displayName:"Mycomponent",getInitialState:function(){return{score:0,numPeopleInReact:0,numPeopleInAngular:0,turn:0,data:[],displayingAnswer:!1,currentAnswer:null,currentAnswerCorrect:null}},componentWillMount:function(){var e=this;s["default"].get("/data").end(function(t,n){t||e.setState({data:JSON.parse(n.text)})})},renderLoading:function(){return a["default"].createElement("div",{className:"sk-spinner sk-spinner-double-bounce"},a["default"].createElement("div",{className:"sk-double-bounce1"}),a["default"].createElement("div",{className:"sk-double-bounce2"}))},currentPersonData:function(){return this.state.data[this.state.turn]},renderCurrentPersonPhoto:function(e){return e?a["default"].createElement("img",{src:e,width:"200",className:"img-thumbnail"}):a["default"].createElement("img",{src:"http://lorempixel.com/300/300/animals/p"+this.state.turn,width:"200",className:"img-thumbnail"})},checkAnswer:function(e){var t=this.currentPersonData(),n=t.reactOrAngular==e,r=n?this.state.score+1:this.state.score,o=this.state.numPeopleInReact,a=this.state.numPeopleInAngular;"react"===t.reactOrAngular?o++:a++,this.setState({currentAnswer:e,displayingAnswer:!0,currentAnswerCorrect:t.reactOrAngular==e,score:r,numPeopleInReact:o,numPeopleInAngular:a})},showNextPerson:function(){this.setState({displayingAnswer:!1,turn:this.state.turn+1})},renderChoicesOrAnswer:function(){var e=this;if(this.state.displayingAnswer){var t="",n="",r="",o="";return"react"==this.state.currentAnswer?(t=this.state.currentAnswerCorrect?"✓ ":"✗ ",r=this.state.currentAnswerCorrect?"btn-success":"btn-danger",o="disabled"):(n=this.state.currentAnswerCorrect?"✓ ":"✗ ",o=this.state.currentAnswerCorrect?"btn-success":"btn-danger",r="disabled"),a["default"].createElement("div",null,a["default"].createElement("button",{className:"btn btn-default btn-lg "+r},a["default"].createElement("strong",null,t,"ReactJS")," Paris Meetup?")," ",a["default"].createElement("button",{className:"btn btn-default btn-lg "+o},a["default"].createElement("strong",null,n,"AngularJS")," Paris Meetup?"),a["default"].createElement("h3",null,this.state.currentAnswerCorrect?"Correct!":"Incorrect!","  Score: ",a["default"].createElement("strong",null,this.state.score)," out of ",a["default"].createElement("strong",null,this.state.turn+1)),a["default"].createElement("br",null),a["default"].createElement("button",{className:"btn btn-primary btn-lg",onClick:this.showNextPerson},a["default"].createElement("strong",null,"Next Person →")))}return a["default"].createElement("div",null,a["default"].createElement("button",{className:"btn btn-default btn-lg",onClick:function(){return e.checkAnswer("react")}},a["default"].createElement("strong",null,"ReactJS")," Paris Meetup?")," ",a["default"].createElement("button",{className:"btn btn-default btn-lg",onClick:function(){return e.checkAnswer("angular")}},a["default"].createElement("strong",null,"AngularJS")," Paris Meetup?"),a["default"].createElement("hr",{className:"small-hr"}),this.renderStats())},renderCurrentPerson:function(){var e=this.currentPersonData();return a["default"].createElement("div",null,this.renderCurrentPersonPhoto(e.photoUrl),a["default"].createElement("h2",null,a["default"].createElement("strong",null,e.name)),a["default"].createElement("p",{className:"lead"},"On ",c["default"](e.joined).format("Do MMM YYYY"),", this person joined..."),this.renderChoicesOrAnswer())},renderStats:function(){return a["default"].createElement("div",null,a["default"].createElement("h4",null,a["default"].createElement("strong",null,"Stats")),a["default"].createElement("p",null,"Score: ",a["default"].createElement("strong",null,this.state.score)," out of ",a["default"].createElement("strong",null,this.state.turn)),a["default"].createElement("p",null,a["default"].createElement("strong",null,this.state.numPeopleInReact)," People in ReactJS Paris"),a["default"].createElement("p",null,a["default"].createElement("strong",null,this.state.numPeopleInAngular)," People in AngularJS Paris"))},render:function(){return this.state.data.length?this.state.turn==this.state.data.length?a["default"].createElement("div",null,a["default"].createElement("h1",null,"Game Over!"),this.renderStats()):a["default"].createElement("div",null,a["default"].createElement("p",{className:"text-quiet"},a["default"].createElement("strong",null,"React Paris or Angular Paris")," by Shu Uesugi (@chibicode)"),this.renderCurrentPerson()):this.renderLoading()}});n["default"]=l,t.exports=n["default"]},{moment:1,react:156,superagent:157}]},{},[160]); +//# sourceMappingURL=app.js.map \ No newline at end of file diff --git a/react-paris-or-angular-paris/public/js/app.js.map b/react-paris-or-angular-paris/public/js/app.js.map new file mode 100644 index 0000000..375a027 --- /dev/null +++ b/react-paris-or-angular-paris/public/js/app.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["app.js"],"names":["e","t","n","r","s","o","u","a","require","i","f","Error","code","l","exports","call","length",1,"module","global","factory","define","amd","moment","this","utils_hooks__hooks","hookCallback","apply","arguments","setHookCallback","callback","isArray","input","Object","prototype","toString","isDate","Date","map","arr","fn","res","push","hasOwnProp","b","hasOwnProperty","extend","valueOf","create_utc__createUTC","format","locale","strict","createLocalOrUTC","utc","defaultParsingFlags","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","getParsingFlags","m","_pf","valid__isValid","_isValid","flags","isNaN","_d","getTime","_strict","undefined","bigHour","valid__createInvalid","NaN","copyConfig","to","from","prop","val","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_offset","_locale","momentProperties","Moment","config","updateInProgress","updateOffset","isMoment","obj","toInt","argumentForCoercion","coercedNumber","value","isFinite","Math","floor","ceil","compareArrays","array1","array2","dontConvert","len","min","lengthDiff","abs","diffs","Locale","normalizeLocale","key","toLowerCase","replace","chooseLocale","names","j","next","split","loadLocale","slice","join","name","oldLocale","locales","globalLocale","_abbr","locale_locales__getSetGlobalLocale","values","data","locale_locales__getLocale","defineLocale","abbr","set","addUnitAlias","unit","shorthand","lowerCase","aliases","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","makeGetSet","keepTime","get_set__set","get_set__get","mom","getSet","zeroFill","number","targetLength","forceSign","output","sign","addFormatToken","token","padded","ordinal","func","formatTokenFunctions","localeData","removeFormattingTokens","match","makeFormatFunction","array","formattingTokens","Function","formatMoment","isValid","expandFormat","formatFunctions","invalidDate","replaceLongDateFormatTokens","longDateFormat","localFormattingTokens","lastIndex","test","addRegexToken","regex","strictRegex","regexes","isStrict","getParseRegexForToken","RegExp","unescapeFormat","matched","p1","p2","p3","p4","addParseToken","tokens","addWeekParseToken","_w","addTimeToArrayFromToken","_a","daysInMonth","year","month","UTC","getUTCDate","localeMonths","_months","localeMonthsShort","_monthsShort","localeMonthsParse","monthName","_monthsParse","_longMonthsParse","_shortMonthsParse","months","monthsShort","setMonth","dayOfMonth","monthsParse","date","getSetMonth","getDaysInMonth","checkOverflow","MONTH","DATE","YEAR","HOUR","MINUTE","SECOND","MILLISECOND","_overflowDayOfYear","warn","msg","suppressDeprecationWarnings","console","deprecate","firstTime","msgWithStack","stack","deprecateSimple","deprecations","configFromISO","string","from_string__isoRegex","exec","isoDates","isoTimes","matchOffset","configFromStringAndFormat","configFromString","aspNetJsonRegex","createFromInputFallback","createDate","y","d","h","M","ms","setFullYear","createUTCDate","setUTCFullYear","daysInYear","isLeapYear","getIsLeapYear","weekOfYear","firstDayOfWeek","firstDayOfWeekOfYear","adjustedMoment","end","daysToDayOfWeek","day","local__createLocal","add","week","dayOfYear","localeWeek","_week","dow","doy","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","getSetISOWeek","dayOfYearFromWeeks","weekday","daysToAdd","getUTCDay","getSetDayOfYear","round","clone","startOf","defaults","c","currentDateArray","now","_useUTC","getUTCFullYear","getUTCMonth","getFullYear","getMonth","getDate","configFromArray","currentDate","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","setUTCMinutes","getUTCMinutes","w","weekYear","temp","GG","W","E","gg","ISO_8601","parsedInput","skipped","stringLength","totalParsedInputLength","substr","indexOf","meridiemFixWrap","_meridiem","hour","meridiem","isPm","meridiemHour","isPM","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","score","configFromObject","minute","second","millisecond","createFromConfig","preparse","configFromInput","parseInt","isUTC","pickBy","moments","args","max","Duration","duration","years","quarters","quarter","weeks","days","hours","minutes","seconds","milliseconds","_milliseconds","_days","_data","_bubble","isDuration","offset","separator","utcOffset","offsetFromString","matches","chunk","parts","chunkOffset","cloneWithOffset","model","diff","setTime","local","getDateOffset","getTimezoneOffset","getSetOffset","keepLocalTime","localAdjust","_changeInProgress","add_subtract__addSubtract","create__createDuration","getSetZone","setOffsetToUTC","setOffsetToLocal","subtract","setOffsetToParsedOffset","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","other","toArray","isLocal","isUtcOffset","isUtc","ret","diffRes","aspNetRegex","create__isoRegex","parseIso","momentsDifference","inp","parseFloat","positiveMomentsDifference","base","isAfter","isBefore","createAdder","direction","period","dur","tmp","isAdding","moment_calendar__calendar","time","sod","calendar","inputMs","endOf","isBetween","isSame","absFloor","asFloat","delta","that","zoneDelta","monthDiff","anchor2","adjust","wholeMonthDiff","anchor","moment_format__toISOString","toISOString","toDate","inputString","defaultFormat","postformat","withoutSuffix","humanize","fromNow","toNow","newLocaleData","isoWeekday","to_type__valueOf","unix","moment_valid__isValid","parsingFlags","invalidAt","addWeekYearFormatToken","getter","weeksInYear","getSetWeekYear","getSetISOWeekYear","getISOWeeksInYear","getWeeksInYear","weekInfo","getSetQuarter","parseWeekday","weekdaysParse","localeWeekdays","_weekdays","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","localeWeekdaysParse","weekdayName","_weekdaysParse","weekdays","weekdaysShort","weekdaysMin","getSetDayOfWeek","getDay","getSetLocaleDayOfWeek","getSetISODayOfWeek","lowercase","matchMeridiem","_meridiemParse","localeIsPM","charAt","localeMeridiem","isLower","millisecond__milliseconds","getZoneAbbr","getZoneName","moment__createUnix","moment__createInZone","parseZone","locale_calendar__calendar","_calendar","_longDateFormat","toUpperCase","_invalidDate","_ordinal","preParsePostFormat","relative__relativeTime","isFuture","_relativeTime","pastFuture","locale_set__set","_ordinalParseLenient","_ordinalParse","source","lists__get","index","field","setter","list","count","out","lists__listMonths","lists__listMonthsShort","lists__listWeekdays","lists__listWeekdaysShort","lists__listWeekdaysMin","duration_abs__abs","mathAbs","duration_add_subtract__addSubtract","duration_add_subtract__add","duration_add_subtract__subtract","bubble","daysToYears","yearsToDays","as","duration_as__valueOf","makeAs","alias","duration_get__get","makeGetter","substituteTimeAgo","relativeTime","duration_humanize__relativeTime","posNegDuration","thresholds","duration_humanize__getSetRelativeTimeThreshold","threshold","limit","withSuffix","iso_string__toISOString","Y","iso_string__abs","D","total","asSeconds","match1","match2","match3","match4","match6","match1to2","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchTimestamp","matchWord","defaultLocaleMonths","defaultLocaleMonthsShort","parseTwoDigitYear","getSetYear","defaultLocaleWeek","prototypeMin","prototypeMax","add_subtract__add","add_subtract__subtract","lang","isoWeekYear","getSetDayOfMonth","invalidWeekday","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","_isPm","defaultLocaleMeridiemParse","getSetHour","getSetMinute","getSetSecond","getSetMillisecond","momentPrototype__proto","get","toJSON","isoWeek","isoWeeks","isoWeeksInYear","isDST","isDSTShifted","zoneAbbr","zoneName","dates","zone","momentPrototype","defaultCalendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","defaultLongDateFormat","LTS","LT","L","LL","LLL","LLLL","defaultInvalidDate","defaultOrdinal","defaultOrdinalParse","defaultRelativeTime","future","past","mm","hh","dd","MM","yy","prototype__proto","firstDayOfYear","ordinalParse","langData","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","duration_get__milliseconds","duration_prototype__proto","toIsoString","version","invalid","relativeTimeThreshold","_moment",2,"focusNode","AutoFocusMixin","componentDidMount","props","autoFocus","getDOMNode","./focusNode",3,"isPresto","opera","window","isKeypressCommand","nativeEvent","ctrlKey","altKey","metaKey","getCompositionEventType","topLevelType","topLevelTypes","topCompositionStart","eventTypes","compositionStart","topCompositionEnd","compositionEnd","topCompositionUpdate","compositionUpdate","isFallbackCompositionStart","topKeyDown","keyCode","START_KEYCODE","isFallbackCompositionEnd","topKeyUp","END_KEYCODES","topKeyPress","topMouseDown","topBlur","getDataFromCustomEvent","detail","extractCompositionEvent","topLevelTarget","topLevelTargetID","eventType","fallbackData","canUseCompositionEvent","currentComposition","useFallbackCompositionData","getData","FallbackCompositionState","getPooled","event","SyntheticCompositionEvent","customData","EventPropagators","accumulateTwoPhaseDispatches","getNativeBeforeInputChars","which","SPACEBAR_CODE","hasSpaceKeypress","SPACEBAR_CHAR","topTextInput","chars","getFallbackBeforeInputChars","release","topPaste","String","fromCharCode","extractBeforeInputEvent","canUseTextInputEvent","SyntheticInputEvent","beforeInput","EventConstants","ExecutionEnvironment","keyOf","canUseDOM","documentMode","document","phasedRegistrationNames","bubbled","onBeforeInput","captured","onBeforeInputCapture","dependencies","onCompositionEnd","onCompositionEndCapture","onCompositionStart","onCompositionStartCapture","onCompositionUpdate","onCompositionUpdateCapture","BeforeInputEventPlugin","extractEvents","./EventConstants","./EventPropagators","./ExecutionEnvironment","./FallbackCompositionState","./SyntheticCompositionEvent","./SyntheticInputEvent","./keyOf",4,"prefixKey","prefix","substring","isUnitlessNumber","boxFlex","boxFlexGroup","columnCount","flex","flexGrow","flexPositive","flexShrink","flexNegative","fontWeight","lineClamp","lineHeight","opacity","order","orphans","widows","zIndex","zoom","fillOpacity","strokeDashoffset","strokeOpacity","strokeWidth","prefixes","keys","forEach","shorthandPropertyExpansions","background","backgroundImage","backgroundPosition","backgroundRepeat","backgroundColor","border","borderWidth","borderStyle","borderColor","borderBottom","borderBottomWidth","borderBottomStyle","borderBottomColor","borderLeft","borderLeftWidth","borderLeftStyle","borderLeftColor","borderRight","borderRightWidth","borderRightStyle","borderRightColor","borderTop","borderTopWidth","borderTopStyle","borderTopColor","font","fontStyle","fontVariant","fontSize","fontFamily","CSSProperty",5,"dangerousStyleValue","hyphenateStyleName","memoizeStringOnly","processStyleName","styleName","styleFloatAccessor","documentElement","style","cssFloat","CSSPropertyOperations","createMarkupForStyles","styles","serialized","styleValue","setValueForStyles","node","expansion","individualStyleName","./CSSProperty","./camelizeStyleName","./dangerousStyleValue","./hyphenateStyleName","./memoizeStringOnly","./warning",6,"CallbackQueue","_callbacks","_contexts","PooledClass","assign","invariant","enqueue","context","notifyAll","callbacks","contexts","reset","destructor","addPoolingTo","./Object.assign","./PooledClass","./invariant",7,"shouldUseChangeEvent","elem","nodeName","type","manualDispatchChangeEvent","SyntheticEvent","change","activeElementID","ReactUpdates","batchedUpdates","runEventInBatch","EventPluginHub","enqueueEvents","processEventQueue","startWatchingForChangeEventIE8","target","targetID","activeElement","attachEvent","stopWatchingForChangeEventIE8","detachEvent","getTargetIDForChangeEvent","topChange","handleEventsForChangeEventIE8","topFocus","startWatchingForValueChange","activeElementValue","activeElementValueProp","getOwnPropertyDescriptor","constructor","defineProperty","newValueProp","handlePropertyChange","stopWatchingForValueChange","propertyName","srcElement","getTargetIDForInputEvent","topInput","handleEventsForInputEventIE","getTargetIDForInputEventIE","topSelectionChange","shouldUseClickEvent","getTargetIDForClickEvent","topClick","isEventSupported","isTextInputElement","onChange","onChangeCapture","doesChangeEventBubble","isInputEventSupported","ChangeEventPlugin","getTargetIDFunc","handleEventFunc","./EventPluginHub","./ReactUpdates","./SyntheticEvent","./isEventSupported","./isTextInputElement",8,"nextReactRootIndex","ClientReactRootIndex","createReactRootIndex",9,"insertChildAt","parentNode","childNode","insertBefore","childNodes","Danger","ReactMultiChildUpdateTypes","setTextContent","DOMChildrenOperations","dangerouslyReplaceNodeWithMarkup","updateTextContent","processUpdates","updates","markupList","update","initialChildren","updatedChildren","MOVE_EXISTING","REMOVE_NODE","updatedIndex","fromIndex","updatedChild","parentID","renderedMarkup","dangerouslyRenderMarkup","removeChild","k","INSERT_MARKUP","markupIndex","toIndex","TEXT_CONTENT","textContent","./Danger","./ReactMultiChildUpdateTypes","./setTextContent",10,"checkMask","bitmask","DOMPropertyInjection","MUST_USE_ATTRIBUTE","MUST_USE_PROPERTY","HAS_SIDE_EFFECTS","HAS_BOOLEAN_VALUE","HAS_NUMERIC_VALUE","HAS_POSITIVE_NUMERIC_VALUE","HAS_OVERLOADED_BOOLEAN_VALUE","injectDOMPropertyConfig","domPropertyConfig","Properties","DOMAttributeNames","DOMPropertyNames","DOMMutationMethods","isCustomAttribute","DOMProperty","_isCustomAttributeFunctions","propName","isStandardName","lowerCased","getPossibleStandardName","attributeName","getAttributeName","getPropertyName","getMutationMethod","propConfig","mustUseAttribute","mustUseProperty","hasSideEffects","hasBooleanValue","hasNumericValue","hasPositiveNumericValue","hasOverloadedBooleanValue","defaultValueCache","ID_ATTRIBUTE_NAME","isCustomAttributeFn","getDefaultValueForProperty","testElement","nodeDefaults","createElement","injection",11,"shouldIgnoreValue","quoteAttributeValueForBrowser","DOMPropertyOperations","createMarkupForID","id","createMarkupForProperty","setValueForProperty","mutationMethod","deleteValueForProperty","setAttribute","removeAttribute","defaultValue","./DOMProperty","./quoteAttributeValueForBrowser",12,"getNodeName","markup","createNodesFromMarkup","emptyFunction","getMarkupWrap","OPEN_TAG_NAME_EXP","RESULT_INDEX_ATTR","markupByNodeName","resultList","resultListAssignmentCount","resultIndex","markupListByNodeName","renderNodes","renderNode","hasAttribute","getAttribute","oldChild","tagName","newChild","replaceChild","./createNodesFromMarkup","./emptyFunction","./getMarkupWrap",13,"DefaultEventPluginOrder","ResponderEventPlugin","SimpleEventPlugin","TapEventPlugin","EnterLeaveEventPlugin","SelectEventPlugin","AnalyticsEventPlugin","MobileSafariClickEventPlugin",14,"SyntheticMouseEvent","ReactMount","getFirstReactDOM","mouseEnter","registrationName","onMouseEnter","topMouseOut","topMouseOver","mouseLeave","onMouseLeave","extractedEvents","relatedTarget","fromElement","win","doc","ownerDocument","defaultView","parentWindow","toElement","fromID","getID","toID","leave","enter","accumulateEnterLeaveDispatches","./ReactMount","./SyntheticMouseEvent",15,"keyMirror","PropagationPhases","topContextMenu","topCopy","topCut","topDoubleClick","topDrag","topDragEnd","topDragEnter","topDragExit","topDragLeave","topDragOver","topDragStart","topDrop","topError","topLoad","topMouseMove","topMouseUp","topReset","topScroll","topSubmit","topTouchCancel","topTouchEnd","topTouchMove","topTouchStart","topWheel","./keyMirror",16,"EventListener","listen","addEventListener","remove","removeEventListener","capture","registerDefault",17,"EventPluginRegistry","EventPluginUtils","accumulateInto","forEachAccumulated","listenerBank","eventQueue","executeDispatchesAndRelease","executeDispatch","PluginModule","getPluginModuleForEvent","executeDispatchesInOrder","isPersistent","InstanceHandle","injectMount","injectInstanceHandle","InjectedInstanceHandle","getInstanceHandle","injectEventPluginOrder","injectEventPluginsByName","eventNameDispatchConfigs","registrationNameModules","putListener","listener","bankForRegistrationName","getListener","deleteListener","deleteAllListeners","events","plugins","possiblePlugin","processingEventQueue","__purge","__getListenerBank","./EventPluginRegistry","./EventPluginUtils","./accumulateInto","./forEachAccumulated",18,"recomputePluginOrdering","EventPluginOrder","pluginName","namesToPlugins","pluginIndex","publishedEvents","eventName","publishEventForPlugin","dispatchConfig","phaseName","phasedRegistrationName","publishRegistrationName","registrationNameDependencies","InjectedEventPluginOrder","Array","injectedNamesToPlugins","isOrderingDirty","phase","_resetEventPlugins",19,"isEndish","isMoveish","isStartish","forEachEventDispatch","cb","dispatchListeners","_dispatchListeners","dispatchIDs","_dispatchIDs","isPropagationStopped","domID","currentTarget","Mount","getNode","returnValue","executeDispatchesInOrderStopAtTrueImpl","executeDispatchesInOrderStopAtTrue","executeDirectDispatch","dispatchListener","dispatchID","hasDispatches","InjectedMount","useTouchEvents",20,"listenerAtPhase","propagationPhase","accumulateDirectionalDispatches","upwards","accumulateTwoPhaseDispatchesSingle","traverseTwoPhase","dispatchMarker","accumulateDispatches","ignoredDirection","accumulateDirectDispatchesSingle","traverseEnterLeave","accumulateDirectDispatches",21,"canUseWorkers","Worker","canUseEventListeners","canUseViewport","screen","isInWorker",22,"root","_root","_startText","getText","_fallbackText","getTextContentAccessor","start","startValue","startLength","endValue","endLength","minEnd","sliceTail","./getTextContentAccessor",23,"hasSVG","implementation","hasFeature","HTMLDOMPropertyConfig","bind","accept","acceptCharset","accessKey","action","allowFullScreen","allowTransparency","alt","async","autoComplete","autoPlay","cellPadding","cellSpacing","charSet","checked","classID","className","cols","colSpan","content","contentEditable","contextMenu","controls","coords","crossOrigin","dateTime","defer","dir","disabled","download","draggable","encType","form","formAction","formEncType","formMethod","formNoValidate","formTarget","frameBorder","headers","height","hidden","high","href","hrefLang","htmlFor","httpEquiv","icon","label","loop","low","manifest","marginHeight","marginWidth","maxLength","media","mediaGroup","method","multiple","muted","noValidate","open","optimum","pattern","placeholder","poster","preload","radioGroup","readOnly","rel","required","role","rows","rowSpan","sandbox","scope","scoped","scrolling","seamless","selected","shape","size","sizes","span","spellCheck","src","srcDoc","srcSet","step","tabIndex","title","useMap","width","wmode","autoCapitalize","autoCorrect","itemProp","itemScope","itemType","itemID","itemRef","property","unselectable",24,"_assertSingleLink","checkedLink","valueLink","_assertValueLink","_assertCheckedLink","_handleLinkedValueChange","requestChange","_handleLinkedCheckChange","ReactPropTypes","hasReadOnlyValue","button","checkbox","image","radio","submit","LinkedValueUtils","Mixin","propTypes","componentName","getValue","getChecked","getOnChange","./ReactPropTypes",25,"ReactBrowserEventEmitter","LocalEventTrapMixin","trapBubbledEvent","handlerBaseName","isMounted","_localEventListeners","componentWillUnmount","./ReactBrowserEventEmitter",26,"onclick",27,"sources","TypeError","nextIndex","nextSource",28,"oneArgumentPooler","copyFieldsFrom","Klass","instancePool","instance","pop","twoArgumentPooler","a1","a2","threeArgumentPooler","a3","fiveArgumentPooler","a4","a5","standardReleaser","poolSize","DEFAULT_POOL_SIZE","DEFAULT_POOLER","CopyConstructor","pooler","NewKlass",29,"ReactChildren","ReactComponent","ReactClass","ReactContext","ReactCurrentOwner","ReactElement","ReactDOM","ReactDOMTextComponent","ReactDefaultInjection","ReactInstanceHandles","ReactPerf","ReactReconciler","ReactServerRendering","findDOMNode","onlyChild","inject","createFactory","cloneElement","render","measure","React","Children","only","Component","DOM","PropTypes","initializeTouchEvents","shouldUseTouch","createClass","createMixin","mixin","constructAndRenderComponent","constructAndRenderComponentByID","renderToString","renderToStaticMarkup","unmountComponentAtNode","isValidElement","withContext","__spread","__REACT_DEVTOOLS_GLOBAL_HOOK__","CurrentOwner","InstanceHandles","Reconciler","TextComponent","./ReactChildren","./ReactClass","./ReactComponent","./ReactContext","./ReactCurrentOwner","./ReactDOM","./ReactDOMTextComponent","./ReactDefaultInjection","./ReactElement","./ReactElementValidator","./ReactInstanceHandles","./ReactPerf","./ReactReconciler","./ReactServerRendering","./findDOMNode","./onlyChild",30,"ReactBrowserComponentMixin",31,"getListeningForDocument","mountAt","topListenersIDKey","reactTopListenersCounter","alreadyListeningTo","ReactEventEmitterMixin","ViewportMetrics","isMonitoringScrollValue","topEventMapping","random","ReactEventListener","injectReactEventListener","setHandleTopLevel","handleTopLevel","setEnabled","enabled","isEnabled","listenTo","contentDocumentHandle","isListening","dependency","trapCapturedEvent","WINDOW_HANDLE","handle","ensureScrollValueMonitoring","refresh","refreshScrollValues","monitorScrollValue","./ReactEventEmitterMixin","./ViewportMetrics",32,"flattenChildren","instantiateReactComponent","shouldUpdateReactComponent","ReactChildReconciler","instantiateChildren","nestedChildNodes","transaction","children","child","childInstance","updateChildren","prevChildren","nextNestedChildNodes","nextChildren","prevChild","prevElement","_currentElement","nextElement","receiveComponent","unmountComponent","nextChildInstance","unmountChildren","renderedChildren","renderedChild","./flattenChildren","./instantiateReactComponent","./shouldUpdateReactComponent",33,"ForEachBookKeeping","forEachFunction","forEachContext","forEachSingleChild","traverseContext","forEachBookKeeping","forEachChildren","forEachFunc","traverseAllChildren","MapBookKeeping","mapResult","mapFunction","mapContext","mapSingleChildIntoContext","mapBookKeeping","keyUnique","mappedChild","mapChildren","ReactFragment","create","forEachSingleChildDummy","countChildren","./ReactFragment","./traverseAllChildren",34,"validateMethodOverride","proto","specPolicy","ReactClassInterface","ReactClassMixin","SpecPolicy","OVERRIDE_BASE","DEFINE_MANY","DEFINE_MANY_MERGED","mixSpecIntoComponent","Constructor","spec","MIXINS_KEY","RESERVED_SPEC_KEYS","mixins","isReactClassMethod","isAlreadyDefined","markedDontBind","__reactDontBind","isFunction","shouldAutoBind","__reactAutoBindMap","createMergedResultFunction","createChainedFunction","mixStaticSpecIntoComponent","statics","isReserved","isInherited","mergeIntoWithNoDuplicateKeys","one","two","bindAutoBindMethod","component","boundMethod","bindAutoBindMethods","autoBindKey","ReactErrorUtils","guard","displayName","ReactInstanceMap","ReactLifeCycle","ReactUpdateQueue","DEFINE_ONCE","injectedMixins","contextTypes","childContextTypes","getDefaultProps","getInitialState","getChildContext","componentWillMount","componentWillReceiveProps","shouldComponentUpdate","componentWillUpdate","componentDidUpdate","updateComponent","replaceState","newState","enqueueReplaceState","enqueueCallback","internalInstance","currentlyMountingInstance","setProps","partialProps","enqueueSetProps","replaceProps","newProps","enqueueReplaceProps","ReactClassComponent","state","initialState","defaultProps","methodName","injectMixin","./ReactErrorUtils","./ReactInstanceMap","./ReactLifeCycle","./ReactPropTypeLocationNames","./ReactPropTypeLocations","./ReactUpdateQueue",35,"setState","partialState","enqueueSetState","forceUpdate","enqueueForceUpdate",36,"ReactDOMIDOperations","ReactComponentBrowserEnvironment","processChildrenUpdates","dangerouslyProcessChildrenUpdates","replaceNodeWithMarkupByID","dangerouslyReplaceNodeWithMarkupByID","unmountIDFromEnvironment","rootNodeID","purgeID","./ReactDOMIDOperations",37,"injected","ReactComponentEnvironment","injectEnvironment","environment",38,"getDeclarationErrorAddendum","owner","_owner","getName","ReactNativeComponent","ReactPropTypeLocations","emptyObject","nextMountID","ReactCompositeComponentMixin","construct","element","_rootNodeID","_instance","_pendingElement","_pendingStateQueue","_pendingReplaceState","_pendingForceUpdate","_renderedComponent","_context","_mountOrder","_isTopLevel","_pendingCallbacks","mountComponent","rootID","publicProps","_processProps","publicContext","_processContext","getComponentClassForElement","inst","refs","childContext","renderedElement","previouslyMounting","_processPendingState","_getValidatedChildContext","_renderValidatedComponent","_instantiateReactComponent","_mergeChildContext","getReactMountReady","previouslyUnmounting","currentlyUnmountingInstance","_setPropsInternal","cloneAndReplaceProps","enqueueUpdate","_maskContext","maskedContext","contextName","currentContext","_checkPropTypes","location","error","ex","nextContext","prevContext","performUpdateIfNecessary","_warnIfContextsDiffer","ownerBasedContext","parentBasedContext","parentKeys","sort","prevParentElement","nextParentElement","prevUnmaskedContext","nextUnmaskedContext","nextProps","nextState","shouldUpdate","_performComponentUpdate","queue","partial","unmaskedContext","prevProps","prevState","_updateRenderedComponent","prevComponentInstance","prevRenderedElement","nextRenderedElement","thisID","prevComponentID","nextMarkup","_replaceNodeWithMarkupByID","_renderValidatedComponentWithoutOwnerOrContext","renderedComponent","previousContext","current","attachRef","ref","getPublicInstance","detachRef","measureMethods","ReactCompositeComponent","./ReactComponentEnvironment","./ReactNativeComponent","./emptyObject",39,"newContext","scopedCallback","result",40,41,"createDOMFactory","tag","mapObject","address","area","article","aside","audio","bdi","bdo","big","blockquote","body","br","canvas","caption","cite","col","colgroup","datalist","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","img","ins","kbd","keygen","legend","li","link","main","mark","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","p","param","picture","pre","progress","q","rp","rt","ruby","samp","script","section","select","small","strong","sub","summary","sup","table","tbody","td","textarea","tfoot","th","thead","tr","track","ul","var","video","wbr","circle","clipPath","defs","ellipse","g","line","linearGradient","mask","path","polygon","polyline","radialGradient","rect","stop","svg","text","tspan","./mapObject",42,"mouseListenerNames","onClick","onDoubleClick","onMouseDown","onMouseMove","onMouseUp","onClickCapture","onDoubleClickCapture","onMouseDownCapture","onMouseMoveCapture","onMouseUpCapture","ReactDOMButton","./AutoFocusMixin","./ReactBrowserComponentMixin",43,"assertValidProps","dangerouslySetInnerHTML","container","findReactContainerForID","nodeType","ELEMENT_NODE_TYPE","getPutListenerQueue","enqueuePutListener","validateDangerousTag","validatedTagCache","VALID_TAG_REGEX","ReactDOMComponent","_tag","_renderedChildren","_previousStyleCopy","ReactMultiChild","escapeTextContentForBrowser","CONTENT_TYPES","STYLE","BackendIDOperations","omittedCloseTags","closeTag","_createOpenTagMarkupAndPutListeners","_createContentMarkup","propKey","propValue","markupForID","innerHTML","__html","contentToUse","childrenToUse","mountImages","mountChildren","_updateDOMProperties","_updateDOMChildren","lastProps","styleUpdates","lastStyle","deletePropertyByID","nextProp","lastProp","updatePropertyByID","updateStylesByID","lastContent","nextContent","lastHtml","nextHtml","lastChildren","lastHasContentOrHtml","nextHasContentOrHtml","updateInnerHTMLByID","injectIDOperations","IDOperations","./CSSPropertyOperations","./DOMPropertyOperations","./ReactComponentBrowserEnvironment","./ReactMultiChild","./escapeTextContentForBrowser",44,"ReactDOMForm","./LocalEventTrapMixin",45,"setInnerHTML","INVALID_PROPERTY_ERRORS","updateTextContentByID","./DOMChildrenOperations","./setInnerHTML",46,"ReactDOMIframe",47,"ReactDOMImg",48,"forceUpdateIfMounted","instancesByReactID","ReactDOMInput","initialChecked","defaultChecked","initialValue","_handleChange","rootNode","asap","queryRoot","group","querySelectorAll","JSON","stringify","groupLen","otherNode","otherID","otherInstance","./LinkedValueUtils",49,"ReactDOMOption",50,"updateOptionsIfPendingUpdateAndMounted","_pendingUpdate","updateOptions","selectValueType","selectedValue","options","ReactDOMSelect",51,"isCollapsed","anchorNode","anchorOffset","focusOffset","getIEOffsets","selection","selectedRange","createRange","selectedLength","fromStart","duplicate","moveToElementText","setEndPoint","startOffset","endOffset","getModernOffsets","getSelection","rangeCount","currentRange","getRangeAt","isSelectionCollapsed","rangeLength","tempRange","cloneRange","selectNodeContents","setEnd","startContainer","isTempRangeCollapsed","endContainer","detectionRange","setStart","isBackward","collapsed","setIEOffsets","offsets","range","moveStart","moveEnd","setModernOffsets","startMarker","getNodeForCharacterOffset","endMarker","removeAllRanges","addRange","useIEOffsets","ReactDOMSelection","getOffsets","setOffsets","./getNodeForCharacterOffset",52,"_stringText","_mountIndex","escapedText","nextText","nextStringText","./ReactDOMComponent",53,"ReactDOMTextarea",54,"ReactDefaultBatchingStrategyTransaction","reinitializeTransaction","Transaction","RESET_BATCHED_UPDATES","initialize","close","ReactDefaultBatchingStrategy","isBatchingUpdates","FLUSH_BATCHED_UPDATES","flushBatchedUpdates","TRANSACTION_WRAPPERS","getTransactionWrappers","alreadyBatchingUpdates","perform","./Transaction",55,"autoGenerateWrapperClass","ReactInjection","EventEmitter","NativeComponent","injectGenericComponentClass","injectTextComponentClass","injectAutoWrapper","Class","injectComponentClasses","createFullPageComponent","SVGDOMPropertyConfig","EmptyComponent","injectEmptyComponent","Updates","injectReconcileTransaction","ReactReconcileTransaction","injectBatchingStrategy","RootIndex","injectCreateReactRootIndex","ServerReactRootIndex","DOMComponent","./BeforeInputEventPlugin","./ChangeEventPlugin","./ClientReactRootIndex","./DefaultEventPluginOrder","./EnterLeaveEventPlugin","./HTMLDOMPropertyConfig","./MobileSafariClickEventPlugin","./ReactDOMButton","./ReactDOMForm","./ReactDOMIframe","./ReactDOMImg","./ReactDOMInput","./ReactDOMOption","./ReactDOMSelect","./ReactDOMTextarea","./ReactDefaultBatchingStrategy","./ReactDefaultPerf","./ReactEventListener","./ReactInjection","./ReactReconcileTransaction","./SVGDOMPropertyConfig","./SelectEventPlugin","./ServerReactRootIndex","./SimpleEventPlugin","./createFullPageComponent",56,"roundFloat","addValue","ReactDefaultPerfAnalysis","performanceNow","ReactDefaultPerf","_allMeasurements","_mountStack","_injected","injectMeasure","enableMeasure","getLastMeasurements","printExclusive","measurements","getExclusiveSummary","item","Component class name","Total inclusive time (ms)","inclusive","Exclusive mount time (ms)","exclusive","Exclusive render time (ms)","Mount time per instance (ms)","Render time per instance (ms)","Instances","printInclusive","getInclusiveSummary","Owner > component","Inclusive time (ms)","log","getTotalTime","toFixed","getMeasurementsSummaryMap","Wasted time (ms)","printWasted","printDOM","getDOMSummary","_recordWrite","fnName","totalTime","writes","moduleName","$__0","$__1","rv","counts","displayNames","mountID","writeArgs","isRender","isMount","mountStack","entry","subMountTime","./ReactDefaultPerfAnalysis","./performanceNow",57,"measurement","items","write","DOM_OPERATION_TYPES","candidates","allIDs","DONT_CARE_THRESHOLD","onlyClean","inclusiveKey","cleanComponents","getUnchangedComponents","dirtyLeafIDs","isDirty","_mountImageIntoNode",58,"RESERVED_PROPS","_isReactElement","childrenLength","childArray","oldElement","newElement","isElement",59,"publicInstance","getCurrentOwnerDisplayName","validateExplicitKey","parentType","_store","validated","warnAndMonitorForKeyUse","validatePropertyKey","NUMERIC_PROPERTY_REGEX","message","ownerName","parentName","useName","memoizer","ownerHasKeyUseWarning","childOwnerAddendum","childOwnerName","validateChildKeys","iteratorFn","getIteratorFn","entries","iterator","done","fragment","extractIfFragment","checkPropTypes","loggedTypeFailures","warnForPropsMutation","elementName","warningKey","warnedPropsMutations","elementInfo","ownerInfo","is","checkAndWarnForMutatedProps","originalProps","validatePropTypes","componentClass","ReactElementValidator","validatedFactory","./getIteratorFn",60,"registerNullComponentID","nullComponentIDsRegistry","deregisterNullComponentID","isNullComponentID","ReactEmptyComponentInjection","emptyComponent","ReactEmptyComponentType","emptyElement","ReactEmptyComponent",61,62,"runEventQueueInBatch",63,"findParent","nodeID","getReactRootIDFromNodeID","parent","TopLevelCallbackBookKeeping","ancestors","handleTopLevelImpl","bookKeeping","getEventTarget","ancestor","_handleTopLevel","scrollValueMonitor","scrollPosition","getUnboundedScrollPosition","_enabled","dispatchEvent","./EventListener","./getEventTarget","./getUnboundedScrollPosition",64,"extract",65,"ReactRootIndex","Perf","./ReactEmptyComponent","./ReactRootIndex",66,"isInDocument","containsNode","getActiveElement","ReactInputSelection","hasSelectionCapabilities","getSelectionInformation","focusedElem","selectionRange","restoreSelection","priorSelectionInformation","curFocusedElem","priorFocusedElem","priorSelectionRange","setSelection","selectionStart","selectionEnd","parentElement","createTextRange","collapse","./ReactDOMSelection","./containsNode","./getActiveElement",67,"getReactRootIDString","SEPARATOR","isBoundary","isValidID","isAncestorIDOf","ancestorID","descendantID","getParentID","lastIndexOf","getNextDescendantID","destinationID","SEPARATOR_LENGTH","getFirstCommonAncestorID","oneID","twoID","minLength","lastCommonMarkerIndex","longestCommonID","traverseParentPath","arg","skipFirst","skipLast","traverseUp","depth","traverse","MAX_TREE_DEPTH","createReactRootID","createReactID","leaveID","enterID","upArg","downArg","traverseAncestors","_getFirstCommonAncestorID","_getNextDescendantID",68,"_reactInternalInstance","has",69,70,"adler32","ReactMarkupChecksum","CHECKSUM_ATTR_NAME","addChecksumToMarkup","checksum","canReuseMarkup","existingChecksum","markupChecksum","./adler32",71,"firstDifferenceIndex","string1","string2","minLen","getReactRootID","rootElement","getReactRootElementInContainer","internalGetID","nodeCache","cached","ATTR_NAME","setID","oldID","findReactNodeByID","getNodeFromInstance","findDeepestCachedAncestorImpl","deepestNodeSoFar","findDeepestCachedAncestor","foundNode","mountComponentIntoNode","componentInstance","shouldReuseMarkup","batchedMountComponentIntoNode","DOC_NODE_TYPE","instancesByReactRootID","containersByReactRootID","findComponentRootReusableArray","_instancesByReactRootID","scrollMonitor","renderCallback","_updateRootComponent","prevComponent","enqueueElementInternal","enqueueCallbackInternal","_registerComponent","nextComponent","reactRootID","registerContainer","_renderNewRootComponent","reactRootElement","containerHasReactMarkup","isRenderedByReact","domNode","getElementById","unmountComponentFromNode","lastChild","reactRoot","findComponentRoot","ancestorNode","firstChildren","childIndex","deepestAncestor","firstChild","targetChild","childID","nextSibling","rootMarkup","outerHTML","diffIndex","./ReactMarkupChecksum","./getReactRootElementInContainer",72,"enqueueMarkup","updateQueue","markupQueue","enqueueMove","enqueueRemove","enqueueTextContent","processQueue","clearQueue","updateDepth","nestedChildren","mountImage","errorThrown","_unmountChildByName","nextNestedChildren","_updateChildren","nextChild","moveChild","_mountChildByNameAtIndex","createChild","./ReactChildReconciler",73,74,"tagToComponentClass","createInternalComponent","genericComponentClass","createInstanceForText","textComponentClass","isTextComponent","ReactNativeComponentInjection","componentClasses","wrapperFactory",75,"ReactOwner","isValidOwner","addComponentAsRefTo","removeComponentAsRefFrom",76,"_noMeasure","objName","storedMeasure","objectName","methodNames",77,"ReactPropTypeLocationNames",78,79,"createChainableTypeChecker","validate","checkType","isRequired","ANONYMOUS","locationName","chainedCheckType","createPrimitiveTypeChecker","expectedType","propType","getPropType","preciseType","getPreciseType","createAnyTypeChecker","thatReturns","createArrayOfTypeChecker","typeChecker","createElementTypeChecker","createInstanceTypeChecker","expectedClass","expectedClassName","createEnumTypeChecker","expectedValues","valuesString","createObjectOfTypeChecker","createUnionTypeChecker","arrayOfTypeCheckers","checker","createNodeChecker","isNode","createShapeTypeChecker","shapeTypes","every","elementTypeChecker","nodeTypeChecker","bool","any","arrayOf","instanceOf","objectOf","oneOf","oneOfType",80,"ReactPutListenerQueue","listenersToPut","putListeners","listenerToPut",81,"reactMountReady","putListenerQueue","SELECTION_RESTORATION","EVENT_SUPPRESSION","currentlyEnabled","previouslyEnabled","ON_DOM_READY_QUEUEING","PUT_LISTENER_QUEUEING","./CallbackQueue","./ReactInputSelection","./ReactPutListenerQueue",82,"attachRefs","ReactRef","detachRefs","refsChanged","shouldUpdateRefs","./ReactRef",83,"./ReactOwner",84,"ReactRootIndexInjection","_createReactRootIndex",85,"ReactServerRenderingTransaction","./ReactServerRenderingTransaction",86,87,"getInternalInstanceReadyForUpdate","callerName","completeState",88,"ensureInjected","batchingStrategy","ReactUpdatesFlushTransaction","dirtyComponentsLength","callbackQueue","reconcileTransaction","mountOrderComparator","c1","c2","runBatchedUpdates","dirtyComponents","asapCallbackQueue","asapEnqueued","NESTED_UPDATES","splice","UPDATE_QUEUEING","ReactUpdatesInjection","ReconcileTransaction","_batchingStrategy",89,"cx","cy","dx","dy","fill","fx","fy","gradientTransform","gradientUnits","markerEnd","markerMid","markerStart","patternContentUnits","patternUnits","points","preserveAspectRatio","rx","ry","spreadMethod","stopColor","stopOpacity","stroke","strokeDasharray","strokeLinecap","textAnchor","transform","viewBox","x1","x2","x","y1","y2",90,"top","boundingTop","left","boundingLeft","constructSelectEvent","mouseDown","currentSelection","lastSelection","shallowEqual","syntheticEvent","onSelect","onSelectCapture","./shallowEqual",91,"GLOBAL_MOUNT_POINT_MAX","pow",92,"SyntheticClipboardEvent","SyntheticFocusEvent","SyntheticKeyboardEvent","SyntheticDragEvent","SyntheticTouchEvent","SyntheticUIEvent","SyntheticWheelEvent","getEventCharCode","blur","onBlur","onBlurCapture","click","onContextMenu","onContextMenuCapture","copy","onCopy","onCopyCapture","cut","onCut","onCutCapture","doubleClick","drag","onDrag","onDragCapture","dragEnd","onDragEnd","onDragEndCapture","dragEnter","onDragEnter","onDragEnterCapture","dragExit","onDragExit","onDragExitCapture","dragLeave","onDragLeave","onDragLeaveCapture","dragOver","onDragOver","onDragOverCapture","dragStart","onDragStart","onDragStartCapture","drop","onDrop","onDropCapture","focus","onFocus","onFocusCapture","onInput","onInputCapture","keyDown","onKeyDown","onKeyDownCapture","keyPress","onKeyPress","onKeyPressCapture","keyUp","onKeyUp","onKeyUpCapture","load","onLoad","onLoadCapture","onError","onErrorCapture","mouseMove","mouseOut","onMouseOut","onMouseOutCapture","mouseOver","onMouseOver","onMouseOverCapture","mouseUp","paste","onPaste","onPasteCapture","onReset","onResetCapture","scroll","onScroll","onScrollCapture","onSubmit","onSubmitCapture","touchCancel","onTouchCancel","onTouchCancelCapture","touchEnd","onTouchEnd","onTouchEndCapture","touchMove","onTouchMove","onTouchMoveCapture","touchStart","onTouchStart","onTouchStartCapture","wheel","onWheel","onWheelCapture","topLevelEventsToDispatchConfig","stopPropagation","preventDefault","EventConstructor","./SyntheticClipboardEvent","./SyntheticDragEvent","./SyntheticFocusEvent","./SyntheticKeyboardEvent","./SyntheticTouchEvent","./SyntheticUIEvent","./SyntheticWheelEvent","./getEventCharCode",93,"ClipboardEventInterface","clipboardData","augmentClass",94,"CompositionEventInterface",95,"DragEventInterface","dataTransfer",96,"Interface","normalize","defaultPrevented","isDefaultPrevented","thatReturnsTrue","thatReturnsFalse","EventInterface","thatReturnsNull","eventPhase","bubbles","cancelable","timeStamp","isTrusted","cancelBubble","persist","Super",97,"FocusEventInterface",98,"InputEventInterface",99,"getEventKey","getEventModifierState","KeyboardEventInterface","shiftKey","repeat","getModifierState","charCode","./getEventKey","./getEventModifierState",100,"MouseEventInterface","screenX","screenY","clientX","clientY","buttons","pageX","currentScrollLeft","pageY","currentScrollTop",101,"TouchEventInterface","touches","targetTouches","changedTouches",102,"UIEventInterface","view",103,"WheelEventInterface","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode",104,"transactionWrappers","wrapperInitData","_isInTransaction","isInTransaction","initializeAll","closeAll","err","startIndex","wrapper","OBSERVED_ERROR","initData",105,106,"currentIsArray","nextIsArray","concat",107,"charCodeAt","MOD",108,"camelize","_hyphenPattern","_","character",109,"camelizeStyleName","msPattern","./camelize",110,"outerNode","innerNode","isTextNode","contains","compareDocumentPosition","./isTextNode",111,"hasArrayNature","createArrayFromMixed","./toArray",112,"elementFactory","FullPageComponent",113,"nodeNameMatch","nodeNamePattern","handleScript","dummyNode","wrap","wrapDepth","scripts","getElementsByTagName","nodes","./createArrayFromMixed",114,"isEmpty","isNonNumeric","trim",115,"makeEmptyFunction","thatReturnsThis","thatReturnsArgument",116,117,"escaper","ESCAPE_LOOKUP","ESCAPE_REGEX","&",">","<","\"","'",118,"componentOrElement","./isNode",119,"flattenSingleChildIntoContext",120,121,122,123,124,"normalizeKey","translateToKey","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey",144,145,224,125,"modifierStateGetter","keyArg","keyProp","modifierKeyToProp","Alt","Control","Meta","Shift",126,127,"maybeIterable","ITERATOR_SYMBOL","FAUX_ITERATOR_SYMBOL","Symbol",128,"markupWrap","shouldWrap","selectWrap","tableWrap","trWrap","svgWrap","*",129,"getLeafNode","getSiblingNode","nodeStart","nodeEnd",130,131,"contentKey",132,"scrollable","pageXOffset","scrollLeft","pageYOffset","scrollTop",133,"hyphenate","_uppercasePattern",134,"./hyphenate",135,"isInternalComponentType","parentCompositeType","ReactCompositeComponentWrapper","_mountImage","./ReactCompositeComponent",136,"condition","argIndex","framesToPop",137,"eventNameSuffix","isSupported","useHasFeature",138,"Node",139,"supportedInputTypes","color","datetime","datetime-local","email","password","search","tel","url",140,141,142,"oneKeyObj",143,"cache",146,"performance","msPerformance","webkitPerformance",147,"./performance",148,149,"WHITESPACE_TEST","NONVISIBLE_TEST","MSApp","execUnsafeLocalFunction","textNode","deleteData",150,151,"objA","objB",152,"prevType","nextType","ownersMatch",153,"ii",154,"userProvidedKeyEscaper","userProvidedKeyEscaperLookup","getComponentKey","wrapUserProvidedKey","escapeUserProvidedKey","userProvidedKeyEscapeRegex","traverseAllChildrenImpl","nameSoFar","indexSoFar","nextName","subtreeCount","SUBSEPARATOR","=",".",":",155,"warning",156,"./lib/React",157,"noop","isHost","str","isObject","serialize","pairs","encodeURIComponent","parseString","pair","decodeURIComponent","parseHeader","lines","fields","shift","params","reduce","Response","req","xhr","responseType","responseText","statusText","setStatusProperties","status","getAllResponseHeaders","getResponseHeader","setHeaderProperties","parseBody","response","Request","self","Emitter","_query","_header","on","parse","original","emit","new_err","request","getXHR","XMLHttpRequest","protocol","ActiveXObject","serializeObject","types","json","xml","urlencoded","form-data","application/x-www-form-urlencoded","application/json","ct","statusType","info","ok","clientError","serverError","toError","accepted","noContent","badRequest","unauthorized","notAcceptable","notFound","forbidden","use","timeout","_timeout","clearTimeout","_timer","abort","aborted","unset","getHeader","auth","user","pass","btoa","query","_formData","FormData","append","attach","file","filename","send","_callback","crossDomainError","crossDomain","timeoutError","withCredentials","_withCredentials","onreadystatechange","readyState","timedout","handleProgress","percent","loaded","hasListeners","onprogress","upload","setTimeout","setRequestHeader","patch","post","put","emitter",158,"once","off","removeListener","removeAllListeners","listeners",159,"initial","idx","curr",160,"_interopRequireDefault","__esModule","default","_react","_react2","_componentsMycomponentJsx","_componentsMycomponentJsx2","./components/mycomponent.jsx","react",161,"_superagent","_superagent2","_moment2","Mycomponent","numPeopleInReact","numPeopleInAngular","turn","displayingAnswer","currentAnswer","currentAnswerCorrect","renderLoading","currentPersonData","renderCurrentPersonPhoto","photoUrl","checkAnswer","reactOrAngular","showNextPerson","renderChoicesOrAnswer","_this","reactButtonPrefix","angularButtonPrefix","reactButtonClass","angularButtonClass","renderStats","renderCurrentPerson","joined","superagent"],"mappings":"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","file":"app.js","sourcesContent":["(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o 0) {\n for (i in momentProperties) {\n prop = momentProperties[i];\n val = from[prop];\n if (typeof val !== 'undefined') {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n var updateInProgress = false;\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(+config._d);\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n utils_hooks__hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment (obj) {\n return obj instanceof Moment || (obj != null && obj._isAMomentObject != null);\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n if (coercedNumber >= 0) {\n value = Math.floor(coercedNumber);\n } else {\n value = Math.ceil(coercedNumber);\n }\n }\n\n return value;\n }\n\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if ((dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n function Locale() {\n }\n\n var locales = {};\n var globalLocale;\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0, j, next, locale, split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return null;\n }\n\n function loadLocale(name) {\n var oldLocale = null;\n // TODO: Find a better way to register and load all the locales in Node\n if (!locales[name] && typeof module !== 'undefined' &&\n module && module.exports) {\n try {\n oldLocale = globalLocale._abbr;\n require('./locale/' + name);\n // because defineLocale currently also sets the global locale, we\n // want to undo that for lazy loaded locales\n locale_locales__getSetGlobalLocale(oldLocale);\n } catch (e) { }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function locale_locales__getSetGlobalLocale (key, values) {\n var data;\n if (key) {\n if (typeof values === 'undefined') {\n data = locale_locales__getLocale(key);\n }\n else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale (name, values) {\n if (values !== null) {\n values.abbr = name;\n if (!locales[name]) {\n locales[name] = new Locale();\n }\n locales[name].set(values);\n\n // backwards compat for now: also set the locale\n locale_locales__getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n // returns locale data\n function locale_locales__getLocale (key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n var aliases = {};\n\n function addUnitAlias (unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n function makeGetSet (unit, keepTime) {\n return function (value) {\n if (value != null) {\n get_set__set(this, unit, value);\n utils_hooks__hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get_set__get(this, unit);\n }\n };\n }\n\n function get_set__get (mom, unit) {\n return mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]();\n }\n\n function get_set__set (mom, unit, value) {\n return mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n\n // MOMENTS\n\n function getSet (units, value) {\n var unit;\n if (typeof units === 'object') {\n for (unit in units) {\n this.set(unit, units[unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (typeof this[units] === 'function') {\n return this[units](value);\n }\n }\n return this;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var output = '' + Math.abs(number),\n sign = number >= 0;\n\n while (output.length < targetLength) {\n output = '0' + output;\n }\n return (sign ? (forceSign ? '+' : '') : '-') + output;\n }\n\n 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,4}|x|X|zz?|ZZ?|.)/g;\n\n var localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g;\n\n var formatFunctions = {};\n\n var formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken (token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(func.apply(this, arguments), token);\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens), i, length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '';\n for (i = 0; i < length; i++) {\n output += array[i] instanceof Function ? array[i].call(mom, format) : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n\n if (!formatFunctions[format]) {\n formatFunctions[format] = makeFormatFunction(format);\n }\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var match1 = /\\d/; // 0 - 9\n var match2 = /\\d\\d/; // 00 - 99\n var match3 = /\\d{3}/; // 000 - 999\n var match4 = /\\d{4}/; // 0000 - 9999\n var match6 = /[+-]?\\d{6}/; // -999999 - 999999\n var match1to2 = /\\d\\d?/; // 0 - 99\n var match1to3 = /\\d{1,3}/; // 0 - 999\n var match1to4 = /\\d{1,4}/; // 0 - 9999\n var match1to6 = /[+-]?\\d{1,6}/; // -999999 - 999999\n\n var matchUnsigned = /\\d+/; // 0 - inf\n var matchSigned = /[+-]?\\d+/; // -inf - inf\n\n var matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi; // +00:00 -00:00 +0000 -0000 or Z\n\n var matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/; // 123456789 123456789.123\n\n // any word (or two) characters or numbers including two/three word month in arabic.\n var matchWord = /[0-9]*['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]+|[\\u0600-\\u06FF\\/]+(\\s*?[\\u0600-\\u06FF]+){1,2}/i;\n\n var regexes = {};\n\n function addRegexToken (token, regex, strictRegex) {\n regexes[token] = typeof regex === 'function' ? regex : function (isStrict) {\n return (isStrict && strictRegex) ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken (token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return s.replace('\\\\', '').replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }).replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken (token, callback) {\n var i, func = callback;\n if (typeof token === 'string') {\n token = [token];\n }\n if (typeof callback === 'number') {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n for (i = 0; i < token.length; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken (token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0;\n var MONTH = 1;\n var DATE = 2;\n var HOUR = 3;\n var MINUTE = 4;\n var SECOND = 5;\n var MILLISECOND = 6;\n\n function daysInMonth(year, month) {\n return new Date(Date.UTC(year, month + 1, 0)).getUTCDate();\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', matchWord);\n addRegexToken('MMMM', matchWord);\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_');\n function localeMonths (m) {\n return this._months[m.month()];\n }\n\n var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_');\n function localeMonthsShort (m) {\n return this._monthsShort[m.month()];\n }\n\n function localeMonthsParse (monthName, format, strict) {\n var i, mom, regex;\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = create_utc__createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i');\n this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');\n }\n if (!strict && !this._monthsParse[i]) {\n regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {\n return i;\n } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth (mom, value) {\n var dayOfMonth;\n\n // TODO: Move this out of here!\n if (typeof value === 'string') {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (typeof value !== 'number') {\n return mom;\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth (value) {\n if (value != null) {\n setMonth(this, value);\n utils_hooks__hooks.updateOffset(this, true);\n return this;\n } else {\n return get_set__get(this, 'Month');\n }\n }\n\n function getDaysInMonth () {\n return daysInMonth(this.year(), this.month());\n }\n\n function checkOverflow (m) {\n var overflow;\n var a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11 ? MONTH :\n a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE :\n a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR :\n a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE :\n a[SECOND] < 0 || a[SECOND] > 59 ? SECOND :\n a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND :\n -1;\n\n if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {\n overflow = DATE;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n function warn(msg) {\n if (utils_hooks__hooks.suppressDeprecationWarnings === false && typeof console !== 'undefined' && console.warn) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true,\n msgWithStack = msg + '\\n' + (new Error()).stack;\n\n return extend(function () {\n if (firstTime) {\n warn(msgWithStack);\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n utils_hooks__hooks.suppressDeprecationWarnings = false;\n\n 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)?)?$/;\n\n var isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d{2}-\\d{2}/],\n ['YYYY-MM-DD', /\\d{4}-\\d{2}-\\d{2}/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d{2}-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d{2}/],\n ['YYYY-DDD', /\\d{4}-\\d{3}/]\n ];\n\n // iso time formats and regexes\n var isoTimes = [\n ['HH:mm:ss.SSSS', /(T| )\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss', /(T| )\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /(T| )\\d\\d:\\d\\d/],\n ['HH', /(T| )\\d\\d/]\n ];\n\n var aspNetJsonRegex = /^\\/?Date\\((\\-?\\d+)/i;\n\n // date from iso format\n function configFromISO(config) {\n var i, l,\n string = config._i,\n match = from_string__isoRegex.exec(string);\n\n if (match) {\n getParsingFlags(config).iso = true;\n for (i = 0, l = isoDates.length; i < l; i++) {\n if (isoDates[i][1].exec(string)) {\n // match[5] should be 'T' or undefined\n config._f = isoDates[i][0] + (match[6] || ' ');\n break;\n }\n }\n for (i = 0, l = isoTimes.length; i < l; i++) {\n if (isoTimes[i][1].exec(string)) {\n config._f += isoTimes[i][0];\n break;\n }\n }\n if (string.match(matchOffset)) {\n config._f += 'Z';\n }\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n // date from iso format or fallback\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n utils_hooks__hooks.createFromInputFallback(config);\n }\n }\n\n utils_hooks__hooks.createFromInputFallback = deprecate(\n 'moment construction falls back to js Date. This is ' +\n 'discouraged and will be removed in upcoming major ' +\n 'release. Please refer to ' +\n 'https://github.com/moment/moment/issues/1407 for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n function createDate (y, m, d, h, M, s, ms) {\n //can't just apply() to create a date:\n //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply\n var date = new Date(y, m, d, h, M, s, ms);\n\n //the date constructor doesn't accept years < 1970\n if (y < 1970) {\n date.setFullYear(y);\n }\n return date;\n }\n\n function createUTCDate (y) {\n var date = new Date(Date.UTC.apply(null, arguments));\n if (y < 1970) {\n date.setUTCFullYear(y);\n }\n return date;\n }\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYY', 'YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YY', function (input, array) {\n array[YEAR] = utils_hooks__hooks.parseTwoDigitYear(input);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n // HOOKS\n\n utils_hooks__hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', false);\n\n function getIsLeapYear () {\n return isLeapYear(this.year());\n }\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n });\n\n // HELPERS\n\n // firstDayOfWeek 0 = sun, 6 = sat\n // the day of the week that starts the week\n // (usually sunday or monday)\n // firstDayOfWeekOfYear 0 = sun, 6 = sat\n // the first week is the week that contains the first\n // of this day of the week\n // (eg. ISO weeks use thursday (4))\n function weekOfYear(mom, firstDayOfWeek, firstDayOfWeekOfYear) {\n var end = firstDayOfWeekOfYear - firstDayOfWeek,\n daysToDayOfWeek = firstDayOfWeekOfYear - mom.day(),\n adjustedMoment;\n\n\n if (daysToDayOfWeek > end) {\n daysToDayOfWeek -= 7;\n }\n\n if (daysToDayOfWeek < end - 7) {\n daysToDayOfWeek += 7;\n }\n\n adjustedMoment = local__createLocal(mom).add(daysToDayOfWeek, 'd');\n return {\n week: Math.ceil(adjustedMoment.dayOfYear() / 7),\n year: adjustedMoment.year()\n };\n }\n\n // LOCALES\n\n function localeWeek (mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 1st is the first week of the year.\n };\n\n function localeFirstDayOfWeek () {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear () {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek (input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek (input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, firstDayOfWeekOfYear, firstDayOfWeek) {\n var d = createUTCDate(year, 0, 1).getUTCDay();\n var daysToAdd;\n var dayOfYear;\n\n d = d === 0 ? 7 : d;\n weekday = weekday != null ? weekday : firstDayOfWeek;\n daysToAdd = firstDayOfWeek - d + (d > firstDayOfWeekOfYear ? 7 : 0) - (d < firstDayOfWeek ? 7 : 0);\n dayOfYear = 7 * (week - 1) + (weekday - firstDayOfWeek) + daysToAdd + 1;\n\n return {\n year : dayOfYear > 0 ? year : year - 1,\n dayOfYear : dayOfYear > 0 ? dayOfYear : daysInYear(year - 1) + dayOfYear\n };\n }\n\n // MOMENTS\n\n function getSetDayOfYear (input) {\n var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1;\n return input == null ? dayOfYear : this.add((input - dayOfYear), 'd');\n }\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n var now = new Date();\n if (config._useUTC) {\n return [now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate()];\n }\n return [now.getFullYear(), now.getMonth(), now.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray (config) {\n var i, date, input = [], currentDate, yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (config._dayOfYear > daysInYear(yearToUse)) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(local__createLocal(), 1, 4).year);\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n weekYear = defaults(w.gg, config._a[YEAR], weekOfYear(local__createLocal(), dow, doy).year);\n week = defaults(w.w, 1);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < dow) {\n ++week;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from begining of week\n weekday = w.e + dow;\n } else {\n // default to begining of week\n weekday = dow;\n }\n }\n temp = dayOfYearFromWeeks(weekYear, week, weekday, doy, dow);\n\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n\n utils_hooks__hooks.ISO_8601 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === utils_hooks__hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i, parsedInput, tokens, token, skipped,\n stringLength = string.length,\n totalParsedInputLength = 0;\n\n tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(string.indexOf(parsedInput) + parsedInput.length);\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n }\n else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n }\n else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (getParsingFlags(config).bigHour === true &&\n config._a[HOUR] <= 12 &&\n config._a[HOUR] > 0) {\n getParsingFlags(config).bigHour = undefined;\n }\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem);\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n\n function meridiemFixWrap (locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n\n scoreToBeat,\n i,\n currentScore;\n\n if (config._f.length === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < config._f.length; i++) {\n currentScore = 0;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (!valid__isValid(tempConfig)) {\n continue;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (scoreToBeat == null || currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i);\n config._a = [i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond];\n\n configFromArray(config);\n }\n\n function createFromConfig (config) {\n var input = config._i,\n format = config._f,\n res;\n\n config._locale = config._locale || locale_locales__getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return valid__createInvalid({nullInput: true});\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else if (isDate(input)) {\n config._d = input;\n } else {\n configFromInput(config);\n }\n\n res = new Moment(checkOverflow(config));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (input === undefined) {\n config._d = new Date();\n } else if (isDate(input)) {\n config._d = new Date(+input);\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (typeof(input) === 'object') {\n configFromObject(config);\n } else if (typeof(input) === 'number') {\n // from milliseconds\n config._d = new Date(input);\n } else {\n utils_hooks__hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC (input, format, locale, strict, isUTC) {\n var c = {};\n\n if (typeof(locale) === 'boolean') {\n strict = locale;\n locale = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function local__createLocal (input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548',\n function () {\n var other = local__createLocal.apply(null, arguments);\n return other < this ? this : other;\n }\n );\n\n var prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548',\n function () {\n var other = local__createLocal.apply(null, arguments);\n return other > this ? this : other;\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return local__createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min () {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max () {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n function Duration (duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n // representation for dateAddRemove\n this._milliseconds = +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 36e5; // 1000 * 60 * 60\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days +\n weeks * 7;\n // It is impossible translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months +\n quarters * 3 +\n years * 12;\n\n this._data = {};\n\n this._locale = locale_locales__getLocale();\n\n this._bubble();\n }\n\n function isDuration (obj) {\n return obj instanceof Duration;\n }\n\n function offset (token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset();\n var sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2);\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchOffset);\n addRegexToken('ZZ', matchOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(string) {\n var matches = ((string || '').match(matchOffset) || []);\n var chunk = matches[matches.length - 1] || [];\n var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n var minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff = (isMoment(input) || isDate(input) ? +input : +local__createLocal(input)) - (+res);\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(+res._d + diff);\n utils_hooks__hooks.updateOffset(res, false);\n return res;\n } else {\n return local__createLocal(input).local();\n }\n return model._isUTC ? local__createLocal(input).zone(model._offset || 0) : local__createLocal(input).local();\n }\n\n function getDateOffset (m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset() / 15) * 15;\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n utils_hooks__hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset (input, keepLocalTime) {\n var offset = this._offset || 0,\n localAdjust;\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(input);\n }\n if (Math.abs(input) < 16) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n add_subtract__addSubtract(this, create__createDuration(input - offset, 'm'), 1, false);\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n utils_hooks__hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone (input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC (keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal (keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset () {\n if (this._tzm) {\n this.utcOffset(this._tzm);\n } else if (typeof this._i === 'string') {\n this.utcOffset(offsetFromString(this._i));\n }\n return this;\n }\n\n function hasAlignedHourOffset (input) {\n if (!input) {\n input = 0;\n }\n else {\n input = local__createLocal(input).utcOffset();\n }\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime () {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted () {\n if (this._a) {\n var other = this._isUTC ? create_utc__createUTC(this._a) : local__createLocal(this._a);\n return this.isValid() && compareArrays(this._a, other.toArray()) > 0;\n }\n\n return false;\n }\n\n function isLocal () {\n return !this._isUTC;\n }\n\n function isUtcOffset () {\n return this._isUTC;\n }\n\n function isUtc () {\n return this._isUTC && this._offset === 0;\n }\n\n var aspNetRegex = /(\\-)?(?:(\\d*)\\.)?(\\d+)\\:(\\d+)(?:\\:(\\d+)\\.?(\\d{3})?)?/;\n\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n 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)$/;\n\n function create__createDuration (input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms : input._milliseconds,\n d : input._days,\n M : input._months\n };\n } else if (typeof input === 'number') {\n duration = {};\n if (key) {\n duration[key] = input;\n } else {\n duration.milliseconds = input;\n }\n } else if (!!(match = aspNetRegex.exec(input))) {\n sign = (match[1] === '-') ? -1 : 1;\n duration = {\n y : 0,\n d : toInt(match[DATE]) * sign,\n h : toInt(match[HOUR]) * sign,\n m : toInt(match[MINUTE]) * sign,\n s : toInt(match[SECOND]) * sign,\n ms : toInt(match[MILLISECOND]) * sign\n };\n } else if (!!(match = create__isoRegex.exec(input))) {\n sign = (match[1] === '-') ? -1 : 1;\n duration = {\n y : parseIso(match[2], sign),\n M : parseIso(match[3], sign),\n d : parseIso(match[4], sign),\n h : parseIso(match[5], sign),\n m : parseIso(match[6], sign),\n s : parseIso(match[7], sign),\n w : parseIso(match[8], sign)\n };\n } else if (duration == null) {// checks for null or undefined\n duration = {};\n } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) {\n diffRes = momentsDifference(local__createLocal(duration.from), local__createLocal(duration.to));\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n return ret;\n }\n\n create__createDuration.fn = Duration.prototype;\n\n function parseIso (inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {milliseconds: 0, months: 0};\n\n res.months = other.month() - base.month() +\n (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +(base.clone().add(res.months, 'M'));\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period).');\n tmp = val; val = period; period = tmp;\n }\n\n val = typeof val === 'string' ? +val : val;\n dur = create__createDuration(val, period);\n add_subtract__addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function add_subtract__addSubtract (mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = duration._days,\n months = duration._months;\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (milliseconds) {\n mom._d.setTime(+mom._d + milliseconds * isAdding);\n }\n if (days) {\n get_set__set(mom, 'Date', get_set__get(mom, 'Date') + days * isAdding);\n }\n if (months) {\n setMonth(mom, get_set__get(mom, 'Month') + months * isAdding);\n }\n if (updateOffset) {\n utils_hooks__hooks.updateOffset(mom, days || months);\n }\n }\n\n var add_subtract__add = createAdder(1, 'add');\n var add_subtract__subtract = createAdder(-1, 'subtract');\n\n function moment_calendar__calendar (time) {\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || local__createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n diff = this.diff(sod, 'days', true),\n format = diff < -6 ? 'sameElse' :\n diff < -1 ? 'lastWeek' :\n diff < 0 ? 'lastDay' :\n diff < 1 ? 'sameDay' :\n diff < 2 ? 'nextDay' :\n diff < 7 ? 'nextWeek' : 'sameElse';\n return this.format(this.localeData().calendar(format, this, local__createLocal(now)));\n }\n\n function clone () {\n return new Moment(this);\n }\n\n function isAfter (input, units) {\n var inputMs;\n units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond');\n if (units === 'millisecond') {\n input = isMoment(input) ? input : local__createLocal(input);\n return +this > +input;\n } else {\n inputMs = isMoment(input) ? +input : +local__createLocal(input);\n return inputMs < +this.clone().startOf(units);\n }\n }\n\n function isBefore (input, units) {\n var inputMs;\n units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond');\n if (units === 'millisecond') {\n input = isMoment(input) ? input : local__createLocal(input);\n return +this < +input;\n } else {\n inputMs = isMoment(input) ? +input : +local__createLocal(input);\n return +this.clone().endOf(units) < inputMs;\n }\n }\n\n function isBetween (from, to, units) {\n return this.isAfter(from, units) && this.isBefore(to, units);\n }\n\n function isSame (input, units) {\n var inputMs;\n units = normalizeUnits(units || 'millisecond');\n if (units === 'millisecond') {\n input = isMoment(input) ? input : local__createLocal(input);\n return +this === +input;\n } else {\n inputMs = +local__createLocal(input);\n return +(this.clone().startOf(units)) <= inputMs && inputMs <= +(this.clone().endOf(units));\n }\n }\n\n function absFloor (number) {\n if (number < 0) {\n return Math.ceil(number);\n } else {\n return Math.floor(number);\n }\n }\n\n function diff (input, units, asFloat) {\n var that = cloneWithOffset(input, this),\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4,\n delta, output;\n\n units = normalizeUnits(units);\n\n if (units === 'year' || units === 'month' || units === 'quarter') {\n output = monthDiff(this, that);\n if (units === 'quarter') {\n output = output / 3;\n } else if (units === 'year') {\n output = output / 12;\n }\n } else {\n delta = this - that;\n output = units === 'second' ? delta / 1e3 : // 1000\n units === 'minute' ? delta / 6e4 : // 1000 * 60\n units === 'hour' ? delta / 36e5 : // 1000 * 60 * 60\n units === 'day' ? (delta - zoneDelta) / 864e5 : // 1000 * 60 * 60 * 24, negate dst\n units === 'week' ? (delta - zoneDelta) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst\n delta;\n }\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff (a, b) {\n // difference in months\n var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2, adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n return -(wholeMonthDiff + adjust);\n }\n\n utils_hooks__hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n\n function toString () {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function moment_format__toISOString () {\n var m = this.clone().utc();\n if (0 < m.year() && m.year() <= 9999) {\n if ('function' === typeof Date.prototype.toISOString) {\n // native implementation is ~50x faster, use it when we can\n return this.toDate().toISOString();\n } else {\n return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]');\n }\n } else {\n return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]');\n }\n }\n\n function format (inputString) {\n var output = formatMoment(this, inputString || utils_hooks__hooks.defaultFormat);\n return this.localeData().postformat(output);\n }\n\n function from (time, withoutSuffix) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n return create__createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix);\n }\n\n function fromNow (withoutSuffix) {\n return this.from(local__createLocal(), withoutSuffix);\n }\n\n function to (time, withoutSuffix) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n return create__createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix);\n }\n\n function toNow (withoutSuffix) {\n return this.to(local__createLocal(), withoutSuffix);\n }\n\n function locale (key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = locale_locales__getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData () {\n return this._locale;\n }\n\n function startOf (units) {\n units = normalizeUnits(units);\n // the following switch intentionally omits break keywords\n // to utilize falling through the cases.\n switch (units) {\n case 'year':\n this.month(0);\n /* falls through */\n case 'quarter':\n case 'month':\n this.date(1);\n /* falls through */\n case 'week':\n case 'isoWeek':\n case 'day':\n this.hours(0);\n /* falls through */\n case 'hour':\n this.minutes(0);\n /* falls through */\n case 'minute':\n this.seconds(0);\n /* falls through */\n case 'second':\n this.milliseconds(0);\n }\n\n // weeks are a special case\n if (units === 'week') {\n this.weekday(0);\n }\n if (units === 'isoWeek') {\n this.isoWeekday(1);\n }\n\n // quarters are also special\n if (units === 'quarter') {\n this.month(Math.floor(this.month() / 3) * 3);\n }\n\n return this;\n }\n\n function endOf (units) {\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond') {\n return this;\n }\n return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms');\n }\n\n function to_type__valueOf () {\n return +this._d - ((this._offset || 0) * 60000);\n }\n\n function unix () {\n return Math.floor(+this / 1000);\n }\n\n function toDate () {\n return this._offset ? new Date(+this) : this._d;\n }\n\n function toArray () {\n var m = this;\n return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()];\n }\n\n function moment_valid__isValid () {\n return valid__isValid(this);\n }\n\n function parsingFlags () {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt () {\n return getParsingFlags(this).overflow;\n }\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken (token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n });\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = utils_hooks__hooks.parseTwoDigitYear(input);\n });\n\n // HELPERS\n\n function weeksInYear(year, dow, doy) {\n return weekOfYear(local__createLocal([year, 11, 31 + dow - doy]), dow, doy).week;\n }\n\n // MOMENTS\n\n function getSetWeekYear (input) {\n var year = weekOfYear(this, this.localeData()._week.dow, this.localeData()._week.doy).year;\n return input == null ? year : this.add((input - year), 'y');\n }\n\n function getSetISOWeekYear (input) {\n var year = weekOfYear(this, 1, 4).year;\n return input == null ? year : this.add((input - year), 'y');\n }\n\n function getISOWeeksInYear () {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getWeeksInYear () {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n addFormatToken('Q', 0, 0, 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter (input) {\n return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);\n }\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n return isStrict ? locale._ordinalParse : locale._ordinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0], 10);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', matchWord);\n addRegexToken('ddd', matchWord);\n addRegexToken('dddd', matchWord);\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config) {\n var weekday = config._locale.weekdaysParse(input);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input === 'string') {\n if (!isNaN(input)) {\n input = parseInt(input, 10);\n }\n else {\n input = locale.weekdaysParse(input);\n if (typeof input !== 'number') {\n return null;\n }\n }\n }\n return input;\n }\n\n // LOCALES\n\n var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_');\n function localeWeekdays (m) {\n return this._weekdays[m.day()];\n }\n\n var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_');\n function localeWeekdaysShort (m) {\n return this._weekdaysShort[m.day()];\n }\n\n var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_');\n function localeWeekdaysMin (m) {\n return this._weekdaysMin[m.day()];\n }\n\n function localeWeekdaysParse (weekdayName) {\n var i, mom, regex;\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n if (!this._weekdaysParse[i]) {\n mom = local__createLocal([2000, 1]).day(i);\n regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek (input) {\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek (input) {\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek (input) {\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n return input == null ? this.day() || 7 : this.day(this.day() % 7 ? input : input - 7);\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, function () {\n return this.hours() % 12 || 12;\n });\n\n function meridiem (token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(this.hours(), this.minutes(), lowercase);\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PARSING\n\n function matchMeridiem (isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n\n // LOCALES\n\n function localeIsPM (input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return ((input + '').toLowerCase().charAt(0) === 'p');\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i;\n function localeMeridiem (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n\n // MOMENTS\n\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour he wants. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n var getSetHour = makeGetSet('Hours', true);\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n function millisecond__milliseconds (token) {\n addFormatToken(0, [token, 3], 0, 'millisecond');\n }\n\n millisecond__milliseconds('SSS');\n millisecond__milliseconds('SSSS');\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n addRegexToken('SSSS', matchUnsigned);\n addParseToken(['S', 'SS', 'SSS', 'SSSS'], function (input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n });\n\n // MOMENTS\n\n var getSetMillisecond = makeGetSet('Milliseconds', false);\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr () {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName () {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var momentPrototype__proto = Moment.prototype;\n\n momentPrototype__proto.add = add_subtract__add;\n momentPrototype__proto.calendar = moment_calendar__calendar;\n momentPrototype__proto.clone = clone;\n momentPrototype__proto.diff = diff;\n momentPrototype__proto.endOf = endOf;\n momentPrototype__proto.format = format;\n momentPrototype__proto.from = from;\n momentPrototype__proto.fromNow = fromNow;\n momentPrototype__proto.to = to;\n momentPrototype__proto.toNow = toNow;\n momentPrototype__proto.get = getSet;\n momentPrototype__proto.invalidAt = invalidAt;\n momentPrototype__proto.isAfter = isAfter;\n momentPrototype__proto.isBefore = isBefore;\n momentPrototype__proto.isBetween = isBetween;\n momentPrototype__proto.isSame = isSame;\n momentPrototype__proto.isValid = moment_valid__isValid;\n momentPrototype__proto.lang = lang;\n momentPrototype__proto.locale = locale;\n momentPrototype__proto.localeData = localeData;\n momentPrototype__proto.max = prototypeMax;\n momentPrototype__proto.min = prototypeMin;\n momentPrototype__proto.parsingFlags = parsingFlags;\n momentPrototype__proto.set = getSet;\n momentPrototype__proto.startOf = startOf;\n momentPrototype__proto.subtract = add_subtract__subtract;\n momentPrototype__proto.toArray = toArray;\n momentPrototype__proto.toDate = toDate;\n momentPrototype__proto.toISOString = moment_format__toISOString;\n momentPrototype__proto.toJSON = moment_format__toISOString;\n momentPrototype__proto.toString = toString;\n momentPrototype__proto.unix = unix;\n momentPrototype__proto.valueOf = to_type__valueOf;\n\n // Year\n momentPrototype__proto.year = getSetYear;\n momentPrototype__proto.isLeapYear = getIsLeapYear;\n\n // Week Year\n momentPrototype__proto.weekYear = getSetWeekYear;\n momentPrototype__proto.isoWeekYear = getSetISOWeekYear;\n\n // Quarter\n momentPrototype__proto.quarter = momentPrototype__proto.quarters = getSetQuarter;\n\n // Month\n momentPrototype__proto.month = getSetMonth;\n momentPrototype__proto.daysInMonth = getDaysInMonth;\n\n // Week\n momentPrototype__proto.week = momentPrototype__proto.weeks = getSetWeek;\n momentPrototype__proto.isoWeek = momentPrototype__proto.isoWeeks = getSetISOWeek;\n momentPrototype__proto.weeksInYear = getWeeksInYear;\n momentPrototype__proto.isoWeeksInYear = getISOWeeksInYear;\n\n // Day\n momentPrototype__proto.date = getSetDayOfMonth;\n momentPrototype__proto.day = momentPrototype__proto.days = getSetDayOfWeek;\n momentPrototype__proto.weekday = getSetLocaleDayOfWeek;\n momentPrototype__proto.isoWeekday = getSetISODayOfWeek;\n momentPrototype__proto.dayOfYear = getSetDayOfYear;\n\n // Hour\n momentPrototype__proto.hour = momentPrototype__proto.hours = getSetHour;\n\n // Minute\n momentPrototype__proto.minute = momentPrototype__proto.minutes = getSetMinute;\n\n // Second\n momentPrototype__proto.second = momentPrototype__proto.seconds = getSetSecond;\n\n // Millisecond\n momentPrototype__proto.millisecond = momentPrototype__proto.milliseconds = getSetMillisecond;\n\n // Offset\n momentPrototype__proto.utcOffset = getSetOffset;\n momentPrototype__proto.utc = setOffsetToUTC;\n momentPrototype__proto.local = setOffsetToLocal;\n momentPrototype__proto.parseZone = setOffsetToParsedOffset;\n momentPrototype__proto.hasAlignedHourOffset = hasAlignedHourOffset;\n momentPrototype__proto.isDST = isDaylightSavingTime;\n momentPrototype__proto.isDSTShifted = isDaylightSavingTimeShifted;\n momentPrototype__proto.isLocal = isLocal;\n momentPrototype__proto.isUtcOffset = isUtcOffset;\n momentPrototype__proto.isUtc = isUtc;\n momentPrototype__proto.isUTC = isUtc;\n\n // Timezone\n momentPrototype__proto.zoneAbbr = getZoneAbbr;\n momentPrototype__proto.zoneName = getZoneName;\n\n // Deprecations\n momentPrototype__proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);\n momentPrototype__proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);\n momentPrototype__proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear);\n momentPrototype__proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779', getSetZone);\n\n var momentPrototype = momentPrototype__proto;\n\n function moment__createUnix (input) {\n return local__createLocal(input * 1000);\n }\n\n function moment__createInZone () {\n return local__createLocal.apply(null, arguments).parseZone();\n }\n\n var defaultCalendar = {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n };\n\n function locale_calendar__calendar (key, mom, now) {\n var output = this._calendar[key];\n return typeof output === 'function' ? output.call(mom, now) : output;\n }\n\n var defaultLongDateFormat = {\n LTS : 'h:mm:ss A',\n LT : 'h:mm A',\n L : 'MM/DD/YYYY',\n LL : 'MMMM D, YYYY',\n LLL : 'MMMM D, YYYY LT',\n LLLL : 'dddd, MMMM D, YYYY LT'\n };\n\n function longDateFormat (key) {\n var output = this._longDateFormat[key];\n if (!output && this._longDateFormat[key.toUpperCase()]) {\n output = this._longDateFormat[key.toUpperCase()].replace(/MMMM|MM|DD|dddd/g, function (val) {\n return val.slice(1);\n });\n this._longDateFormat[key] = output;\n }\n return output;\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate () {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d';\n var defaultOrdinalParse = /\\d{1,2}/;\n\n function ordinal (number) {\n return this._ordinal.replace('%d', number);\n }\n\n function preParsePostFormat (string) {\n return string;\n }\n\n var defaultRelativeTime = {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n };\n\n function relative__relativeTime (number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return (typeof output === 'function') ?\n output(number, withoutSuffix, string, isFuture) :\n output.replace(/%d/i, number);\n }\n\n function pastFuture (diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return typeof format === 'function' ? format(output) : format.replace(/%s/i, output);\n }\n\n function locale_set__set (config) {\n var prop, i;\n for (i in config) {\n prop = config[i];\n if (typeof prop === 'function') {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _ordinalParseLenient.\n this._ordinalParseLenient = new RegExp(this._ordinalParse.source + '|' + (/\\d{1,2}/).source);\n }\n\n var prototype__proto = Locale.prototype;\n\n prototype__proto._calendar = defaultCalendar;\n prototype__proto.calendar = locale_calendar__calendar;\n prototype__proto._longDateFormat = defaultLongDateFormat;\n prototype__proto.longDateFormat = longDateFormat;\n prototype__proto._invalidDate = defaultInvalidDate;\n prototype__proto.invalidDate = invalidDate;\n prototype__proto._ordinal = defaultOrdinal;\n prototype__proto.ordinal = ordinal;\n prototype__proto._ordinalParse = defaultOrdinalParse;\n prototype__proto.preparse = preParsePostFormat;\n prototype__proto.postformat = preParsePostFormat;\n prototype__proto._relativeTime = defaultRelativeTime;\n prototype__proto.relativeTime = relative__relativeTime;\n prototype__proto.pastFuture = pastFuture;\n prototype__proto.set = locale_set__set;\n\n // Month\n prototype__proto.months = localeMonths;\n prototype__proto._months = defaultLocaleMonths;\n prototype__proto.monthsShort = localeMonthsShort;\n prototype__proto._monthsShort = defaultLocaleMonthsShort;\n prototype__proto.monthsParse = localeMonthsParse;\n\n // Week\n prototype__proto.week = localeWeek;\n prototype__proto._week = defaultLocaleWeek;\n prototype__proto.firstDayOfYear = localeFirstDayOfYear;\n prototype__proto.firstDayOfWeek = localeFirstDayOfWeek;\n\n // Day of Week\n prototype__proto.weekdays = localeWeekdays;\n prototype__proto._weekdays = defaultLocaleWeekdays;\n prototype__proto.weekdaysMin = localeWeekdaysMin;\n prototype__proto._weekdaysMin = defaultLocaleWeekdaysMin;\n prototype__proto.weekdaysShort = localeWeekdaysShort;\n prototype__proto._weekdaysShort = defaultLocaleWeekdaysShort;\n prototype__proto.weekdaysParse = localeWeekdaysParse;\n\n // Hours\n prototype__proto.isPM = localeIsPM;\n prototype__proto._meridiemParse = defaultLocaleMeridiemParse;\n prototype__proto.meridiem = localeMeridiem;\n\n function lists__get (format, index, field, setter) {\n var locale = locale_locales__getLocale();\n var utc = create_utc__createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function list (format, index, field, count, setter) {\n if (typeof format === 'number') {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return lists__get(format, index, field, setter);\n }\n\n var i;\n var out = [];\n for (i = 0; i < count; i++) {\n out[i] = lists__get(format, i, field, setter);\n }\n return out;\n }\n\n function lists__listMonths (format, index) {\n return list(format, index, 'months', 12, 'month');\n }\n\n function lists__listMonthsShort (format, index) {\n return list(format, index, 'monthsShort', 12, 'month');\n }\n\n function lists__listWeekdays (format, index) {\n return list(format, index, 'weekdays', 7, 'day');\n }\n\n function lists__listWeekdaysShort (format, index) {\n return list(format, index, 'weekdaysShort', 7, 'day');\n }\n\n function lists__listWeekdaysMin (format, index) {\n return list(format, index, 'weekdaysMin', 7, 'day');\n }\n\n locale_locales__getSetGlobalLocale('en', {\n ordinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (toInt(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n }\n });\n\n // Side effect imports\n utils_hooks__hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', locale_locales__getSetGlobalLocale);\n utils_hooks__hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', locale_locales__getLocale);\n\n var mathAbs = Math.abs;\n\n function duration_abs__abs () {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function duration_add_subtract__addSubtract (duration, input, value, direction) {\n var other = create__createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function duration_add_subtract__add (input, value) {\n return duration_add_subtract__addSubtract(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function duration_add_subtract__subtract (input, value) {\n return duration_add_subtract__addSubtract(this, input, value, -1);\n }\n\n function bubble () {\n var milliseconds = this._milliseconds;\n var days = this._days;\n var months = this._months;\n var data = this._data;\n var seconds, minutes, hours, years = 0;\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // Accurately convert days to years, assume start from year 0.\n years = absFloor(daysToYears(days));\n days -= absFloor(yearsToDays(years));\n\n // 30 days to a month\n // TODO (iskren): Use anchor date (like 1st Jan) to compute this.\n months += absFloor(days / 30);\n days %= 30;\n\n // 12 months -> 1 year\n years += absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToYears (days) {\n // 400 years have 146097 days (taking into account leap year rules)\n return days * 400 / 146097;\n }\n\n function yearsToDays (years) {\n // years * 365 + absFloor(years / 4) -\n // absFloor(years / 100) + absFloor(years / 400);\n return years * 146097 / 400;\n }\n\n function as (units) {\n var days;\n var months;\n var milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToYears(days) * 12;\n return units === 'month' ? months : months / 12;\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(yearsToDays(this._months / 12));\n switch (units) {\n case 'week' : return days / 7 + milliseconds / 6048e5;\n case 'day' : return days + milliseconds / 864e5;\n case 'hour' : return days * 24 + milliseconds / 36e5;\n case 'minute' : return days * 1440 + milliseconds / 6e4;\n case 'second' : return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond': return Math.floor(days * 864e5) + milliseconds;\n default: throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function duration_as__valueOf () {\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs (alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms');\n var asSeconds = makeAs('s');\n var asMinutes = makeAs('m');\n var asHours = makeAs('h');\n var asDays = makeAs('d');\n var asWeeks = makeAs('w');\n var asMonths = makeAs('M');\n var asYears = makeAs('y');\n\n function duration_get__get (units) {\n units = normalizeUnits(units);\n return this[units + 's']();\n }\n\n function makeGetter(name) {\n return function () {\n return this._data[name];\n };\n }\n\n var duration_get__milliseconds = makeGetter('milliseconds');\n var seconds = makeGetter('seconds');\n var minutes = makeGetter('minutes');\n var hours = makeGetter('hours');\n var days = makeGetter('days');\n var months = makeGetter('months');\n var years = makeGetter('years');\n\n function weeks () {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round;\n var thresholds = {\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month\n M: 11 // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function duration_humanize__relativeTime (posNegDuration, withoutSuffix, locale) {\n var duration = create__createDuration(posNegDuration).abs();\n var seconds = round(duration.as('s'));\n var minutes = round(duration.as('m'));\n var hours = round(duration.as('h'));\n var days = round(duration.as('d'));\n var months = round(duration.as('M'));\n var years = round(duration.as('y'));\n\n var a = seconds < thresholds.s && ['s', seconds] ||\n minutes === 1 && ['m'] ||\n minutes < thresholds.m && ['mm', minutes] ||\n hours === 1 && ['h'] ||\n hours < thresholds.h && ['hh', hours] ||\n days === 1 && ['d'] ||\n days < thresholds.d && ['dd', days] ||\n months === 1 && ['M'] ||\n months < thresholds.M && ['MM', months] ||\n years === 1 && ['y'] || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set a threshold for relative time strings\n function duration_humanize__getSetRelativeTimeThreshold (threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n return true;\n }\n\n function humanize (withSuffix) {\n var locale = this.localeData();\n var output = duration_humanize__relativeTime(this, !withSuffix, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var iso_string__abs = Math.abs;\n\n function iso_string__toISOString() {\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n var Y = iso_string__abs(this.years());\n var M = iso_string__abs(this.months());\n var D = iso_string__abs(this.days());\n var h = iso_string__abs(this.hours());\n var m = iso_string__abs(this.minutes());\n var s = iso_string__abs(this.seconds() + this.milliseconds() / 1000);\n var total = this.asSeconds();\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n return (total < 0 ? '-' : '') +\n 'P' +\n (Y ? Y + 'Y' : '') +\n (M ? M + 'M' : '') +\n (D ? D + 'D' : '') +\n ((h || m || s) ? 'T' : '') +\n (h ? h + 'H' : '') +\n (m ? m + 'M' : '') +\n (s ? s + 'S' : '');\n }\n\n var duration_prototype__proto = Duration.prototype;\n\n duration_prototype__proto.abs = duration_abs__abs;\n duration_prototype__proto.add = duration_add_subtract__add;\n duration_prototype__proto.subtract = duration_add_subtract__subtract;\n duration_prototype__proto.as = as;\n duration_prototype__proto.asMilliseconds = asMilliseconds;\n duration_prototype__proto.asSeconds = asSeconds;\n duration_prototype__proto.asMinutes = asMinutes;\n duration_prototype__proto.asHours = asHours;\n duration_prototype__proto.asDays = asDays;\n duration_prototype__proto.asWeeks = asWeeks;\n duration_prototype__proto.asMonths = asMonths;\n duration_prototype__proto.asYears = asYears;\n duration_prototype__proto.valueOf = duration_as__valueOf;\n duration_prototype__proto._bubble = bubble;\n duration_prototype__proto.get = duration_get__get;\n duration_prototype__proto.milliseconds = duration_get__milliseconds;\n duration_prototype__proto.seconds = seconds;\n duration_prototype__proto.minutes = minutes;\n duration_prototype__proto.hours = hours;\n duration_prototype__proto.days = days;\n duration_prototype__proto.weeks = weeks;\n duration_prototype__proto.months = months;\n duration_prototype__proto.years = years;\n duration_prototype__proto.humanize = humanize;\n duration_prototype__proto.toISOString = iso_string__toISOString;\n duration_prototype__proto.toString = iso_string__toISOString;\n duration_prototype__proto.toJSON = iso_string__toISOString;\n duration_prototype__proto.locale = locale;\n duration_prototype__proto.localeData = localeData;\n\n // Deprecations\n duration_prototype__proto.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', iso_string__toISOString);\n duration_prototype__proto.lang = lang;\n\n // Side effect imports\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input, 10) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n // Side effect imports\n\n\n utils_hooks__hooks.version = '2.10.3';\n\n setHookCallback(local__createLocal);\n\n utils_hooks__hooks.fn = momentPrototype;\n utils_hooks__hooks.min = min;\n utils_hooks__hooks.max = max;\n utils_hooks__hooks.utc = create_utc__createUTC;\n utils_hooks__hooks.unix = moment__createUnix;\n utils_hooks__hooks.months = lists__listMonths;\n utils_hooks__hooks.isDate = isDate;\n utils_hooks__hooks.locale = locale_locales__getSetGlobalLocale;\n utils_hooks__hooks.invalid = valid__createInvalid;\n utils_hooks__hooks.duration = create__createDuration;\n utils_hooks__hooks.isMoment = isMoment;\n utils_hooks__hooks.weekdays = lists__listWeekdays;\n utils_hooks__hooks.parseZone = moment__createInZone;\n utils_hooks__hooks.localeData = locale_locales__getLocale;\n utils_hooks__hooks.isDuration = isDuration;\n utils_hooks__hooks.monthsShort = lists__listMonthsShort;\n utils_hooks__hooks.weekdaysMin = lists__listWeekdaysMin;\n utils_hooks__hooks.defineLocale = defineLocale;\n utils_hooks__hooks.weekdaysShort = lists__listWeekdaysShort;\n utils_hooks__hooks.normalizeUnits = normalizeUnits;\n utils_hooks__hooks.relativeTimeThreshold = duration_humanize__getSetRelativeTimeThreshold;\n\n var _moment = utils_hooks__hooks;\n\n return _moment;\n\n}));\n},{}],2:[function(require,module,exports){\n/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule AutoFocusMixin\n * @typechecks static-only\n */\n\n'use strict';\n\nvar focusNode = require(\"./focusNode\");\n\nvar AutoFocusMixin = {\n componentDidMount: function() {\n if (this.props.autoFocus) {\n focusNode(this.getDOMNode());\n }\n }\n};\n\nmodule.exports = AutoFocusMixin;\n\n},{\"./focusNode\":120}],3:[function(require,module,exports){\n/**\n * Copyright 2013-2015 Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule BeforeInputEventPlugin\n * @typechecks static-only\n */\n\n'use strict';\n\nvar EventConstants = require(\"./EventConstants\");\nvar EventPropagators = require(\"./EventPropagators\");\nvar ExecutionEnvironment = require(\"./ExecutionEnvironment\");\nvar FallbackCompositionState = require(\"./FallbackCompositionState\");\nvar SyntheticCompositionEvent = require(\"./SyntheticCompositionEvent\");\nvar SyntheticInputEvent = require(\"./SyntheticInputEvent\");\n\nvar keyOf = require(\"./keyOf\");\n\nvar END_KEYCODES = [9, 13, 27, 32]; // Tab, Return, Esc, Space\nvar START_KEYCODE = 229;\n\nvar canUseCompositionEvent = (\n ExecutionEnvironment.canUseDOM &&\n 'CompositionEvent' in window\n);\n\nvar documentMode = null;\nif (ExecutionEnvironment.canUseDOM && 'documentMode' in document) {\n documentMode = document.documentMode;\n}\n\n// Webkit offers a very useful `textInput` event that can be used to\n// directly represent `beforeInput`. The IE `textinput` event is not as\n// useful, so we don't use it.\nvar canUseTextInputEvent = (\n ExecutionEnvironment.canUseDOM &&\n 'TextEvent' in window &&\n !documentMode &&\n !isPresto()\n);\n\n// In IE9+, we have access to composition events, but the data supplied\n// by the native compositionend event may be incorrect. Japanese ideographic\n// spaces, for instance (\\u3000) are not recorded correctly.\nvar useFallbackCompositionData = (\n ExecutionEnvironment.canUseDOM &&\n (\n (!canUseCompositionEvent || documentMode && documentMode > 8 && documentMode <= 11)\n )\n);\n\n/**\n * Opera <= 12 includes TextEvent in window, but does not fire\n * text input events. Rely on keypress instead.\n */\nfunction isPresto() {\n var opera = window.opera;\n return (\n typeof opera === 'object' &&\n typeof opera.version === 'function' &&\n parseInt(opera.version(), 10) <= 12\n );\n}\n\nvar SPACEBAR_CODE = 32;\nvar SPACEBAR_CHAR = String.fromCharCode(SPACEBAR_CODE);\n\nvar topLevelTypes = EventConstants.topLevelTypes;\n\n// Events and their corresponding property names.\nvar eventTypes = {\n beforeInput: {\n phasedRegistrationNames: {\n bubbled: keyOf({onBeforeInput: null}),\n captured: keyOf({onBeforeInputCapture: null})\n },\n dependencies: [\n topLevelTypes.topCompositionEnd,\n topLevelTypes.topKeyPress,\n topLevelTypes.topTextInput,\n topLevelTypes.topPaste\n ]\n },\n compositionEnd: {\n phasedRegistrationNames: {\n bubbled: keyOf({onCompositionEnd: null}),\n captured: keyOf({onCompositionEndCapture: null})\n },\n dependencies: [\n topLevelTypes.topBlur,\n topLevelTypes.topCompositionEnd,\n topLevelTypes.topKeyDown,\n topLevelTypes.topKeyPress,\n topLevelTypes.topKeyUp,\n topLevelTypes.topMouseDown\n ]\n },\n compositionStart: {\n phasedRegistrationNames: {\n bubbled: keyOf({onCompositionStart: null}),\n captured: keyOf({onCompositionStartCapture: null})\n },\n dependencies: [\n topLevelTypes.topBlur,\n topLevelTypes.topCompositionStart,\n topLevelTypes.topKeyDown,\n topLevelTypes.topKeyPress,\n topLevelTypes.topKeyUp,\n topLevelTypes.topMouseDown\n ]\n },\n compositionUpdate: {\n phasedRegistrationNames: {\n bubbled: keyOf({onCompositionUpdate: null}),\n captured: keyOf({onCompositionUpdateCapture: null})\n },\n dependencies: [\n topLevelTypes.topBlur,\n topLevelTypes.topCompositionUpdate,\n topLevelTypes.topKeyDown,\n topLevelTypes.topKeyPress,\n topLevelTypes.topKeyUp,\n topLevelTypes.topMouseDown\n ]\n }\n};\n\n// Track whether we've ever handled a keypress on the space key.\nvar hasSpaceKeypress = false;\n\n/**\n * Return whether a native keypress event is assumed to be a command.\n * This is required because Firefox fires `keypress` events for key commands\n * (cut, copy, select-all, etc.) even though no character is inserted.\n */\nfunction isKeypressCommand(nativeEvent) {\n return (\n (nativeEvent.ctrlKey || nativeEvent.altKey || nativeEvent.metaKey) &&\n // ctrlKey && altKey is equivalent to AltGr, and is not a command.\n !(nativeEvent.ctrlKey && nativeEvent.altKey)\n );\n}\n\n\n/**\n * Translate native top level events into event types.\n *\n * @param {string} topLevelType\n * @return {object}\n */\nfunction getCompositionEventType(topLevelType) {\n switch (topLevelType) {\n case topLevelTypes.topCompositionStart:\n return eventTypes.compositionStart;\n case topLevelTypes.topCompositionEnd:\n return eventTypes.compositionEnd;\n case topLevelTypes.topCompositionUpdate:\n return eventTypes.compositionUpdate;\n }\n}\n\n/**\n * Does our fallback best-guess model think this event signifies that\n * composition has begun?\n *\n * @param {string} topLevelType\n * @param {object} nativeEvent\n * @return {boolean}\n */\nfunction isFallbackCompositionStart(topLevelType, nativeEvent) {\n return (\n topLevelType === topLevelTypes.topKeyDown &&\n nativeEvent.keyCode === START_KEYCODE\n );\n}\n\n/**\n * Does our fallback mode think that this event is the end of composition?\n *\n * @param {string} topLevelType\n * @param {object} nativeEvent\n * @return {boolean}\n */\nfunction isFallbackCompositionEnd(topLevelType, nativeEvent) {\n switch (topLevelType) {\n case topLevelTypes.topKeyUp:\n // Command keys insert or clear IME input.\n return (END_KEYCODES.indexOf(nativeEvent.keyCode) !== -1);\n case topLevelTypes.topKeyDown:\n // Expect IME keyCode on each keydown. If we get any other\n // code we must have exited earlier.\n return (nativeEvent.keyCode !== START_KEYCODE);\n case topLevelTypes.topKeyPress:\n case topLevelTypes.topMouseDown:\n case topLevelTypes.topBlur:\n // Events are not possible without cancelling IME.\n return true;\n default:\n return false;\n }\n}\n\n/**\n * Google Input Tools provides composition data via a CustomEvent,\n * with the `data` property populated in the `detail` object. If this\n * is available on the event object, use it. If not, this is a plain\n * composition event and we have nothing special to extract.\n *\n * @param {object} nativeEvent\n * @return {?string}\n */\nfunction getDataFromCustomEvent(nativeEvent) {\n var detail = nativeEvent.detail;\n if (typeof detail === 'object' && 'data' in detail) {\n return detail.data;\n }\n return null;\n}\n\n// Track the current IME composition fallback object, if any.\nvar currentComposition = null;\n\n/**\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {DOMEventTarget} topLevelTarget The listening component root node.\n * @param {string} topLevelTargetID ID of `topLevelTarget`.\n * @param {object} nativeEvent Native browser event.\n * @return {?object} A SyntheticCompositionEvent.\n */\nfunction extractCompositionEvent(\n topLevelType,\n topLevelTarget,\n topLevelTargetID,\n nativeEvent\n) {\n var eventType;\n var fallbackData;\n\n if (canUseCompositionEvent) {\n eventType = getCompositionEventType(topLevelType);\n } else if (!currentComposition) {\n if (isFallbackCompositionStart(topLevelType, nativeEvent)) {\n eventType = eventTypes.compositionStart;\n }\n } else if (isFallbackCompositionEnd(topLevelType, nativeEvent)) {\n eventType = eventTypes.compositionEnd;\n }\n\n if (!eventType) {\n return null;\n }\n\n if (useFallbackCompositionData) {\n // The current composition is stored statically and must not be\n // overwritten while composition continues.\n if (!currentComposition && eventType === eventTypes.compositionStart) {\n currentComposition = FallbackCompositionState.getPooled(topLevelTarget);\n } else if (eventType === eventTypes.compositionEnd) {\n if (currentComposition) {\n fallbackData = currentComposition.getData();\n }\n }\n }\n\n var event = SyntheticCompositionEvent.getPooled(\n eventType,\n topLevelTargetID,\n nativeEvent\n );\n\n if (fallbackData) {\n // Inject data generated from fallback path into the synthetic event.\n // This matches the property of native CompositionEventInterface.\n event.data = fallbackData;\n } else {\n var customData = getDataFromCustomEvent(nativeEvent);\n if (customData !== null) {\n event.data = customData;\n }\n }\n\n EventPropagators.accumulateTwoPhaseDispatches(event);\n return event;\n}\n\n/**\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {object} nativeEvent Native browser event.\n * @return {?string} The string corresponding to this `beforeInput` event.\n */\nfunction getNativeBeforeInputChars(topLevelType, nativeEvent) {\n switch (topLevelType) {\n case topLevelTypes.topCompositionEnd:\n return getDataFromCustomEvent(nativeEvent);\n case topLevelTypes.topKeyPress:\n /**\n * If native `textInput` events are available, our goal is to make\n * use of them. However, there is a special case: the spacebar key.\n * In Webkit, preventing default on a spacebar `textInput` event\n * cancels character insertion, but it *also* causes the browser\n * to fall back to its default spacebar behavior of scrolling the\n * page.\n *\n * Tracking at:\n * https://code.google.com/p/chromium/issues/detail?id=355103\n *\n * To avoid this issue, use the keypress event as if no `textInput`\n * event is available.\n */\n var which = nativeEvent.which;\n if (which !== SPACEBAR_CODE) {\n return null;\n }\n\n hasSpaceKeypress = true;\n return SPACEBAR_CHAR;\n\n case topLevelTypes.topTextInput:\n // Record the characters to be added to the DOM.\n var chars = nativeEvent.data;\n\n // If it's a spacebar character, assume that we have already handled\n // it at the keypress level and bail immediately. Android Chrome\n // doesn't give us keycodes, so we need to blacklist it.\n if (chars === SPACEBAR_CHAR && hasSpaceKeypress) {\n return null;\n }\n\n return chars;\n\n default:\n // For other native event types, do nothing.\n return null;\n }\n}\n\n/**\n * For browsers that do not provide the `textInput` event, extract the\n * appropriate string to use for SyntheticInputEvent.\n *\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {object} nativeEvent Native browser event.\n * @return {?string} The fallback string for this `beforeInput` event.\n */\nfunction getFallbackBeforeInputChars(topLevelType, nativeEvent) {\n // If we are currently composing (IME) and using a fallback to do so,\n // try to extract the composed characters from the fallback object.\n if (currentComposition) {\n if (\n topLevelType === topLevelTypes.topCompositionEnd ||\n isFallbackCompositionEnd(topLevelType, nativeEvent)\n ) {\n var chars = currentComposition.getData();\n FallbackCompositionState.release(currentComposition);\n currentComposition = null;\n return chars;\n }\n return null;\n }\n\n switch (topLevelType) {\n case topLevelTypes.topPaste:\n // If a paste event occurs after a keypress, throw out the input\n // chars. Paste events should not lead to BeforeInput events.\n return null;\n case topLevelTypes.topKeyPress:\n /**\n * As of v27, Firefox may fire keypress events even when no character\n * will be inserted. A few possibilities:\n *\n * - `which` is `0`. Arrow keys, Esc key, etc.\n *\n * - `which` is the pressed key code, but no char is available.\n * Ex: 'AltGr + d` in Polish. There is no modified character for\n * this key combination and no character is inserted into the\n * document, but FF fires the keypress for char code `100` anyway.\n * No `input` event will occur.\n *\n * - `which` is the pressed key code, but a command combination is\n * being used. Ex: `Cmd+C`. No character is inserted, and no\n * `input` event will occur.\n */\n if (nativeEvent.which && !isKeypressCommand(nativeEvent)) {\n return String.fromCharCode(nativeEvent.which);\n }\n return null;\n case topLevelTypes.topCompositionEnd:\n return useFallbackCompositionData ? null : nativeEvent.data;\n default:\n return null;\n }\n}\n\n/**\n * Extract a SyntheticInputEvent for `beforeInput`, based on either native\n * `textInput` or fallback behavior.\n *\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {DOMEventTarget} topLevelTarget The listening component root node.\n * @param {string} topLevelTargetID ID of `topLevelTarget`.\n * @param {object} nativeEvent Native browser event.\n * @return {?object} A SyntheticInputEvent.\n */\nfunction extractBeforeInputEvent(\n topLevelType,\n topLevelTarget,\n topLevelTargetID,\n nativeEvent\n) {\n var chars;\n\n if (canUseTextInputEvent) {\n chars = getNativeBeforeInputChars(topLevelType, nativeEvent);\n } else {\n chars = getFallbackBeforeInputChars(topLevelType, nativeEvent);\n }\n\n // If no characters are being inserted, no BeforeInput event should\n // be fired.\n if (!chars) {\n return null;\n }\n\n var event = SyntheticInputEvent.getPooled(\n eventTypes.beforeInput,\n topLevelTargetID,\n nativeEvent\n );\n\n event.data = chars;\n EventPropagators.accumulateTwoPhaseDispatches(event);\n return event;\n}\n\n/**\n * Create an `onBeforeInput` event to match\n * http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105/#events-inputevents.\n *\n * This event plugin is based on the native `textInput` event\n * available in Chrome, Safari, Opera, and IE. This event fires after\n * `onKeyPress` and `onCompositionEnd`, but before `onInput`.\n *\n * `beforeInput` is spec'd but not implemented in any browsers, and\n * the `input` event does not provide any useful information about what has\n * actually been added, contrary to the spec. Thus, `textInput` is the best\n * available event to identify the characters that have actually been inserted\n * into the target node.\n *\n * This plugin is also responsible for emitting `composition` events, thus\n * allowing us to share composition fallback code for both `beforeInput` and\n * `composition` event types.\n */\nvar BeforeInputEventPlugin = {\n\n eventTypes: eventTypes,\n\n /**\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {DOMEventTarget} topLevelTarget The listening component root node.\n * @param {string} topLevelTargetID ID of `topLevelTarget`.\n * @param {object} nativeEvent Native browser event.\n * @return {*} An accumulation of synthetic events.\n * @see {EventPluginHub.extractEvents}\n */\n extractEvents: function(\n topLevelType,\n topLevelTarget,\n topLevelTargetID,\n nativeEvent\n ) {\n return [\n extractCompositionEvent(\n topLevelType,\n topLevelTarget,\n topLevelTargetID,\n nativeEvent\n ),\n extractBeforeInputEvent(\n topLevelType,\n topLevelTarget,\n topLevelTargetID,\n nativeEvent\n )\n ];\n }\n};\n\nmodule.exports = BeforeInputEventPlugin;\n\n},{\"./EventConstants\":15,\"./EventPropagators\":20,\"./ExecutionEnvironment\":21,\"./FallbackCompositionState\":22,\"./SyntheticCompositionEvent\":94,\"./SyntheticInputEvent\":98,\"./keyOf\":142}],4:[function(require,module,exports){\n/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule CSSProperty\n */\n\n'use strict';\n\n/**\n * CSS properties which accept numbers but are not in units of \"px\".\n */\nvar isUnitlessNumber = {\n boxFlex: true,\n boxFlexGroup: true,\n columnCount: true,\n flex: true,\n flexGrow: true,\n flexPositive: true,\n flexShrink: true,\n flexNegative: true,\n fontWeight: true,\n lineClamp: true,\n lineHeight: true,\n opacity: true,\n order: true,\n orphans: true,\n widows: true,\n zIndex: true,\n zoom: true,\n\n // SVG-related properties\n fillOpacity: true,\n strokeDashoffset: true,\n strokeOpacity: true,\n strokeWidth: true\n};\n\n/**\n * @param {string} prefix vendor-specific prefix, eg: Webkit\n * @param {string} key style name, eg: transitionDuration\n * @return {string} style name prefixed with `prefix`, properly camelCased, eg:\n * WebkitTransitionDuration\n */\nfunction prefixKey(prefix, key) {\n return prefix + key.charAt(0).toUpperCase() + key.substring(1);\n}\n\n/**\n * Support style names that may come passed in prefixed by adding permutations\n * of vendor prefixes.\n */\nvar prefixes = ['Webkit', 'ms', 'Moz', 'O'];\n\n// Using Object.keys here, or else the vanilla for-in loop makes IE8 go into an\n// infinite loop, because it iterates over the newly added props too.\nObject.keys(isUnitlessNumber).forEach(function(prop) {\n prefixes.forEach(function(prefix) {\n isUnitlessNumber[prefixKey(prefix, prop)] = isUnitlessNumber[prop];\n });\n});\n\n/**\n * Most style properties can be unset by doing .style[prop] = '' but IE8\n * doesn't like doing that with shorthand properties so for the properties that\n * IE8 breaks on, which are listed here, we instead unset each of the\n * individual properties. See http://bugs.jquery.com/ticket/12385.\n * The 4-value 'clock' properties like margin, padding, border-width seem to\n * behave without any problems. Curiously, list-style works too without any\n * special prodding.\n */\nvar shorthandPropertyExpansions = {\n background: {\n backgroundImage: true,\n backgroundPosition: true,\n backgroundRepeat: true,\n backgroundColor: true\n },\n border: {\n borderWidth: true,\n borderStyle: true,\n borderColor: true\n },\n borderBottom: {\n borderBottomWidth: true,\n borderBottomStyle: true,\n borderBottomColor: true\n },\n borderLeft: {\n borderLeftWidth: true,\n borderLeftStyle: true,\n borderLeftColor: true\n },\n borderRight: {\n borderRightWidth: true,\n borderRightStyle: true,\n borderRightColor: true\n },\n borderTop: {\n borderTopWidth: true,\n borderTopStyle: true,\n borderTopColor: true\n },\n font: {\n fontStyle: true,\n fontVariant: true,\n fontWeight: true,\n fontSize: true,\n lineHeight: true,\n fontFamily: true\n }\n};\n\nvar CSSProperty = {\n isUnitlessNumber: isUnitlessNumber,\n shorthandPropertyExpansions: shorthandPropertyExpansions\n};\n\nmodule.exports = CSSProperty;\n\n},{}],5:[function(require,module,exports){\n/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule CSSPropertyOperations\n * @typechecks static-only\n */\n\n'use strict';\n\nvar CSSProperty = require(\"./CSSProperty\");\nvar ExecutionEnvironment = require(\"./ExecutionEnvironment\");\n\nvar camelizeStyleName = require(\"./camelizeStyleName\");\nvar dangerousStyleValue = require(\"./dangerousStyleValue\");\nvar hyphenateStyleName = require(\"./hyphenateStyleName\");\nvar memoizeStringOnly = require(\"./memoizeStringOnly\");\nvar warning = require(\"./warning\");\n\nvar processStyleName = memoizeStringOnly(function(styleName) {\n return hyphenateStyleName(styleName);\n});\n\nvar styleFloatAccessor = 'cssFloat';\nif (ExecutionEnvironment.canUseDOM) {\n // IE8 only supports accessing cssFloat (standard) as styleFloat\n if (document.documentElement.style.cssFloat === undefined) {\n styleFloatAccessor = 'styleFloat';\n }\n}\n\nif (\"production\" !== \"production\") {\n // 'msTransform' is correct, but the other prefixes should be capitalized\n var badVendoredStyleNamePattern = /^(?:webkit|moz|o)[A-Z]/;\n\n // style values shouldn't contain a semicolon\n var badStyleValueWithSemicolonPattern = /;\\s*$/;\n\n var warnedStyleNames = {};\n var warnedStyleValues = {};\n\n var warnHyphenatedStyleName = function(name) {\n if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {\n return;\n }\n\n warnedStyleNames[name] = true;\n (\"production\" !== \"production\" ? warning(\n false,\n 'Unsupported style property %s. Did you mean %s?',\n name,\n camelizeStyleName(name)\n ) : null);\n };\n\n var warnBadVendoredStyleName = function(name) {\n if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {\n return;\n }\n\n warnedStyleNames[name] = true;\n (\"production\" !== \"production\" ? warning(\n false,\n 'Unsupported vendor-prefixed style property %s. Did you mean %s?',\n name,\n name.charAt(0).toUpperCase() + name.slice(1)\n ) : null);\n };\n\n var warnStyleValueWithSemicolon = function(name, value) {\n if (warnedStyleValues.hasOwnProperty(value) && warnedStyleValues[value]) {\n return;\n }\n\n warnedStyleValues[value] = true;\n (\"production\" !== \"production\" ? warning(\n false,\n 'Style property values shouldn\\'t contain a semicolon. ' +\n 'Try \"%s: %s\" instead.',\n name,\n value.replace(badStyleValueWithSemicolonPattern, '')\n ) : null);\n };\n\n /**\n * @param {string} name\n * @param {*} value\n */\n var warnValidStyle = function(name, value) {\n if (name.indexOf('-') > -1) {\n warnHyphenatedStyleName(name);\n } else if (badVendoredStyleNamePattern.test(name)) {\n warnBadVendoredStyleName(name);\n } else if (badStyleValueWithSemicolonPattern.test(value)) {\n warnStyleValueWithSemicolon(name, value);\n }\n };\n}\n\n/**\n * Operations for dealing with CSS properties.\n */\nvar CSSPropertyOperations = {\n\n /**\n * Serializes a mapping of style properties for use as inline styles:\n *\n * > createMarkupForStyles({width: '200px', height: 0})\n * \"width:200px;height:0;\"\n *\n * Undefined values are ignored so that declarative programming is easier.\n * The result should be HTML-escaped before insertion into the DOM.\n *\n * @param {object} styles\n * @return {?string}\n */\n createMarkupForStyles: function(styles) {\n var serialized = '';\n for (var styleName in styles) {\n if (!styles.hasOwnProperty(styleName)) {\n continue;\n }\n var styleValue = styles[styleName];\n if (\"production\" !== \"production\") {\n warnValidStyle(styleName, styleValue);\n }\n if (styleValue != null) {\n serialized += processStyleName(styleName) + ':';\n serialized += dangerousStyleValue(styleName, styleValue) + ';';\n }\n }\n return serialized || null;\n },\n\n /**\n * Sets the value for multiple styles on a node. If a value is specified as\n * '' (empty string), the corresponding style property will be unset.\n *\n * @param {DOMElement} node\n * @param {object} styles\n */\n setValueForStyles: function(node, styles) {\n var style = node.style;\n for (var styleName in styles) {\n if (!styles.hasOwnProperty(styleName)) {\n continue;\n }\n if (\"production\" !== \"production\") {\n warnValidStyle(styleName, styles[styleName]);\n }\n var styleValue = dangerousStyleValue(styleName, styles[styleName]);\n if (styleName === 'float') {\n styleName = styleFloatAccessor;\n }\n if (styleValue) {\n style[styleName] = styleValue;\n } else {\n var expansion = CSSProperty.shorthandPropertyExpansions[styleName];\n if (expansion) {\n // Shorthand property that IE8 won't like unsetting, so unset each\n // component to placate it\n for (var individualStyleName in expansion) {\n style[individualStyleName] = '';\n }\n } else {\n style[styleName] = '';\n }\n }\n }\n }\n\n};\n\nmodule.exports = CSSPropertyOperations;\n\n},{\"./CSSProperty\":4,\"./ExecutionEnvironment\":21,\"./camelizeStyleName\":109,\"./dangerousStyleValue\":114,\"./hyphenateStyleName\":134,\"./memoizeStringOnly\":144,\"./warning\":155}],6:[function(require,module,exports){\n/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule CallbackQueue\n */\n\n'use strict';\n\nvar PooledClass = require(\"./PooledClass\");\n\nvar assign = require(\"./Object.assign\");\nvar invariant = require(\"./invariant\");\n\n/**\n * A specialized pseudo-event module to help keep track of components waiting to\n * be notified when their DOM representations are available for use.\n *\n * This implements `PooledClass`, so you should never need to instantiate this.\n * Instead, use `CallbackQueue.getPooled()`.\n *\n * @class ReactMountReady\n * @implements PooledClass\n * @internal\n */\nfunction CallbackQueue() {\n this._callbacks = null;\n this._contexts = null;\n}\n\nassign(CallbackQueue.prototype, {\n\n /**\n * Enqueues a callback to be invoked when `notifyAll` is invoked.\n *\n * @param {function} callback Invoked when `notifyAll` is invoked.\n * @param {?object} context Context to call `callback` with.\n * @internal\n */\n enqueue: function(callback, context) {\n this._callbacks = this._callbacks || [];\n this._contexts = this._contexts || [];\n this._callbacks.push(callback);\n this._contexts.push(context);\n },\n\n /**\n * Invokes all enqueued callbacks and clears the queue. This is invoked after\n * the DOM representation of a component has been created or updated.\n *\n * @internal\n */\n notifyAll: function() {\n var callbacks = this._callbacks;\n var contexts = this._contexts;\n if (callbacks) {\n (\"production\" !== \"production\" ? invariant(\n callbacks.length === contexts.length,\n 'Mismatched list of contexts in callback queue'\n ) : invariant(callbacks.length === contexts.length));\n this._callbacks = null;\n this._contexts = null;\n for (var i = 0, l = callbacks.length; i < l; i++) {\n callbacks[i].call(contexts[i]);\n }\n callbacks.length = 0;\n contexts.length = 0;\n }\n },\n\n /**\n * Resets the internal queue.\n *\n * @internal\n */\n reset: function() {\n this._callbacks = null;\n this._contexts = null;\n },\n\n /**\n * `PooledClass` looks for this.\n */\n destructor: function() {\n this.reset();\n }\n\n});\n\nPooledClass.addPoolingTo(CallbackQueue);\n\nmodule.exports = CallbackQueue;\n\n},{\"./Object.assign\":27,\"./PooledClass\":28,\"./invariant\":136}],7:[function(require,module,exports){\n/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ChangeEventPlugin\n */\n\n'use strict';\n\nvar EventConstants = require(\"./EventConstants\");\nvar EventPluginHub = require(\"./EventPluginHub\");\nvar EventPropagators = require(\"./EventPropagators\");\nvar ExecutionEnvironment = require(\"./ExecutionEnvironment\");\nvar ReactUpdates = require(\"./ReactUpdates\");\nvar SyntheticEvent = require(\"./SyntheticEvent\");\n\nvar isEventSupported = require(\"./isEventSupported\");\nvar isTextInputElement = require(\"./isTextInputElement\");\nvar keyOf = require(\"./keyOf\");\n\nvar topLevelTypes = EventConstants.topLevelTypes;\n\nvar eventTypes = {\n change: {\n phasedRegistrationNames: {\n bubbled: keyOf({onChange: null}),\n captured: keyOf({onChangeCapture: null})\n },\n dependencies: [\n topLevelTypes.topBlur,\n topLevelTypes.topChange,\n topLevelTypes.topClick,\n topLevelTypes.topFocus,\n topLevelTypes.topInput,\n topLevelTypes.topKeyDown,\n topLevelTypes.topKeyUp,\n topLevelTypes.topSelectionChange\n ]\n }\n};\n\n/**\n * For IE shims\n */\nvar activeElement = null;\nvar activeElementID = null;\nvar activeElementValue = null;\nvar activeElementValueProp = null;\n\n/**\n * SECTION: handle `change` event\n */\nfunction shouldUseChangeEvent(elem) {\n return (\n elem.nodeName === 'SELECT' ||\n (elem.nodeName === 'INPUT' && elem.type === 'file')\n );\n}\n\nvar doesChangeEventBubble = false;\nif (ExecutionEnvironment.canUseDOM) {\n // See `handleChange` comment below\n doesChangeEventBubble = isEventSupported('change') && (\n (!('documentMode' in document) || document.documentMode > 8)\n );\n}\n\nfunction manualDispatchChangeEvent(nativeEvent) {\n var event = SyntheticEvent.getPooled(\n eventTypes.change,\n activeElementID,\n nativeEvent\n );\n EventPropagators.accumulateTwoPhaseDispatches(event);\n\n // If change and propertychange bubbled, we'd just bind to it like all the\n // other events and have it go through ReactBrowserEventEmitter. Since it\n // doesn't, we manually listen for the events and so we have to enqueue and\n // process the abstract event manually.\n //\n // Batching is necessary here in order to ensure that all event handlers run\n // before the next rerender (including event handlers attached to ancestor\n // elements instead of directly on the input). Without this, controlled\n // components don't work properly in conjunction with event bubbling because\n // the component is rerendered and the value reverted before all the event\n // handlers can run. See https://github.com/facebook/react/issues/708.\n ReactUpdates.batchedUpdates(runEventInBatch, event);\n}\n\nfunction runEventInBatch(event) {\n EventPluginHub.enqueueEvents(event);\n EventPluginHub.processEventQueue();\n}\n\nfunction startWatchingForChangeEventIE8(target, targetID) {\n activeElement = target;\n activeElementID = targetID;\n activeElement.attachEvent('onchange', manualDispatchChangeEvent);\n}\n\nfunction stopWatchingForChangeEventIE8() {\n if (!activeElement) {\n return;\n }\n activeElement.detachEvent('onchange', manualDispatchChangeEvent);\n activeElement = null;\n activeElementID = null;\n}\n\nfunction getTargetIDForChangeEvent(\n topLevelType,\n topLevelTarget,\n topLevelTargetID) {\n if (topLevelType === topLevelTypes.topChange) {\n return topLevelTargetID;\n }\n}\nfunction handleEventsForChangeEventIE8(\n topLevelType,\n topLevelTarget,\n topLevelTargetID) {\n if (topLevelType === topLevelTypes.topFocus) {\n // stopWatching() should be a noop here but we call it just in case we\n // missed a blur event somehow.\n stopWatchingForChangeEventIE8();\n startWatchingForChangeEventIE8(topLevelTarget, topLevelTargetID);\n } else if (topLevelType === topLevelTypes.topBlur) {\n stopWatchingForChangeEventIE8();\n }\n}\n\n\n/**\n * SECTION: handle `input` event\n */\nvar isInputEventSupported = false;\nif (ExecutionEnvironment.canUseDOM) {\n // IE9 claims to support the input event but fails to trigger it when\n // deleting text, so we ignore its input events\n isInputEventSupported = isEventSupported('input') && (\n (!('documentMode' in document) || document.documentMode > 9)\n );\n}\n\n/**\n * (For old IE.) Replacement getter/setter for the `value` property that gets\n * set on the active element.\n */\nvar newValueProp = {\n get: function() {\n return activeElementValueProp.get.call(this);\n },\n set: function(val) {\n // Cast to a string so we can do equality checks.\n activeElementValue = '' + val;\n activeElementValueProp.set.call(this, val);\n }\n};\n\n/**\n * (For old IE.) Starts tracking propertychange events on the passed-in element\n * and override the value property so that we can distinguish user events from\n * value changes in JS.\n */\nfunction startWatchingForValueChange(target, targetID) {\n activeElement = target;\n activeElementID = targetID;\n activeElementValue = target.value;\n activeElementValueProp = Object.getOwnPropertyDescriptor(\n target.constructor.prototype,\n 'value'\n );\n\n Object.defineProperty(activeElement, 'value', newValueProp);\n activeElement.attachEvent('onpropertychange', handlePropertyChange);\n}\n\n/**\n * (For old IE.) Removes the event listeners from the currently-tracked element,\n * if any exists.\n */\nfunction stopWatchingForValueChange() {\n if (!activeElement) {\n return;\n }\n\n // delete restores the original property definition\n delete activeElement.value;\n activeElement.detachEvent('onpropertychange', handlePropertyChange);\n\n activeElement = null;\n activeElementID = null;\n activeElementValue = null;\n activeElementValueProp = null;\n}\n\n/**\n * (For old IE.) Handles a propertychange event, sending a `change` event if\n * the value of the active element has changed.\n */\nfunction handlePropertyChange(nativeEvent) {\n if (nativeEvent.propertyName !== 'value') {\n return;\n }\n var value = nativeEvent.srcElement.value;\n if (value === activeElementValue) {\n return;\n }\n activeElementValue = value;\n\n manualDispatchChangeEvent(nativeEvent);\n}\n\n/**\n * If a `change` event should be fired, returns the target's ID.\n */\nfunction getTargetIDForInputEvent(\n topLevelType,\n topLevelTarget,\n topLevelTargetID) {\n if (topLevelType === topLevelTypes.topInput) {\n // In modern browsers (i.e., not IE8 or IE9), the input event is exactly\n // what we want so fall through here and trigger an abstract event\n return topLevelTargetID;\n }\n}\n\n// For IE8 and IE9.\nfunction handleEventsForInputEventIE(\n topLevelType,\n topLevelTarget,\n topLevelTargetID) {\n if (topLevelType === topLevelTypes.topFocus) {\n // In IE8, we can capture almost all .value changes by adding a\n // propertychange handler and looking for events with propertyName\n // equal to 'value'\n // In IE9, propertychange fires for most input events but is buggy and\n // doesn't fire when text is deleted, but conveniently, selectionchange\n // appears to fire in all of the remaining cases so we catch those and\n // forward the event if the value has changed\n // In either case, we don't want to call the event handler if the value\n // is changed from JS so we redefine a setter for `.value` that updates\n // our activeElementValue variable, allowing us to ignore those changes\n //\n // stopWatching() should be a noop here but we call it just in case we\n // missed a blur event somehow.\n stopWatchingForValueChange();\n startWatchingForValueChange(topLevelTarget, topLevelTargetID);\n } else if (topLevelType === topLevelTypes.topBlur) {\n stopWatchingForValueChange();\n }\n}\n\n// For IE8 and IE9.\nfunction getTargetIDForInputEventIE(\n topLevelType,\n topLevelTarget,\n topLevelTargetID) {\n if (topLevelType === topLevelTypes.topSelectionChange ||\n topLevelType === topLevelTypes.topKeyUp ||\n topLevelType === topLevelTypes.topKeyDown) {\n // On the selectionchange event, the target is just document which isn't\n // helpful for us so just check activeElement instead.\n //\n // 99% of the time, keydown and keyup aren't necessary. IE8 fails to fire\n // propertychange on the first input event after setting `value` from a\n // script and fires only keydown, keypress, keyup. Catching keyup usually\n // gets it and catching keydown lets us fire an event for the first\n // keystroke if user does a key repeat (it'll be a little delayed: right\n // before the second keystroke). Other input methods (e.g., paste) seem to\n // fire selectionchange normally.\n if (activeElement && activeElement.value !== activeElementValue) {\n activeElementValue = activeElement.value;\n return activeElementID;\n }\n }\n}\n\n\n/**\n * SECTION: handle `click` event\n */\nfunction shouldUseClickEvent(elem) {\n // Use the `click` event to detect changes to checkbox and radio inputs.\n // This approach works across all browsers, whereas `change` does not fire\n // until `blur` in IE8.\n return (\n elem.nodeName === 'INPUT' &&\n (elem.type === 'checkbox' || elem.type === 'radio')\n );\n}\n\nfunction getTargetIDForClickEvent(\n topLevelType,\n topLevelTarget,\n topLevelTargetID) {\n if (topLevelType === topLevelTypes.topClick) {\n return topLevelTargetID;\n }\n}\n\n/**\n * This plugin creates an `onChange` event that normalizes change events\n * across form elements. This event fires at a time when it's possible to\n * change the element's value without seeing a flicker.\n *\n * Supported elements are:\n * - input (see `isTextInputElement`)\n * - textarea\n * - select\n */\nvar ChangeEventPlugin = {\n\n eventTypes: eventTypes,\n\n /**\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {DOMEventTarget} topLevelTarget The listening component root node.\n * @param {string} topLevelTargetID ID of `topLevelTarget`.\n * @param {object} nativeEvent Native browser event.\n * @return {*} An accumulation of synthetic events.\n * @see {EventPluginHub.extractEvents}\n */\n extractEvents: function(\n topLevelType,\n topLevelTarget,\n topLevelTargetID,\n nativeEvent) {\n\n var getTargetIDFunc, handleEventFunc;\n if (shouldUseChangeEvent(topLevelTarget)) {\n if (doesChangeEventBubble) {\n getTargetIDFunc = getTargetIDForChangeEvent;\n } else {\n handleEventFunc = handleEventsForChangeEventIE8;\n }\n } else if (isTextInputElement(topLevelTarget)) {\n if (isInputEventSupported) {\n getTargetIDFunc = getTargetIDForInputEvent;\n } else {\n getTargetIDFunc = getTargetIDForInputEventIE;\n handleEventFunc = handleEventsForInputEventIE;\n }\n } else if (shouldUseClickEvent(topLevelTarget)) {\n getTargetIDFunc = getTargetIDForClickEvent;\n }\n\n if (getTargetIDFunc) {\n var targetID = getTargetIDFunc(\n topLevelType,\n topLevelTarget,\n topLevelTargetID\n );\n if (targetID) {\n var event = SyntheticEvent.getPooled(\n eventTypes.change,\n targetID,\n nativeEvent\n );\n EventPropagators.accumulateTwoPhaseDispatches(event);\n return event;\n }\n }\n\n if (handleEventFunc) {\n handleEventFunc(\n topLevelType,\n topLevelTarget,\n topLevelTargetID\n );\n }\n }\n\n};\n\nmodule.exports = ChangeEventPlugin;\n\n},{\"./EventConstants\":15,\"./EventPluginHub\":17,\"./EventPropagators\":20,\"./ExecutionEnvironment\":21,\"./ReactUpdates\":88,\"./SyntheticEvent\":96,\"./isEventSupported\":137,\"./isTextInputElement\":139,\"./keyOf\":142}],8:[function(require,module,exports){\n/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ClientReactRootIndex\n * @typechecks\n */\n\n'use strict';\n\nvar nextReactRootIndex = 0;\n\nvar ClientReactRootIndex = {\n createReactRootIndex: function() {\n return nextReactRootIndex++;\n }\n};\n\nmodule.exports = ClientReactRootIndex;\n\n},{}],9:[function(require,module,exports){\n/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule DOMChildrenOperations\n * @typechecks static-only\n */\n\n'use strict';\n\nvar Danger = require(\"./Danger\");\nvar ReactMultiChildUpdateTypes = require(\"./ReactMultiChildUpdateTypes\");\n\nvar setTextContent = require(\"./setTextContent\");\nvar invariant = require(\"./invariant\");\n\n/**\n * Inserts `childNode` as a child of `parentNode` at the `index`.\n *\n * @param {DOMElement} parentNode Parent node in which to insert.\n * @param {DOMElement} childNode Child node to insert.\n * @param {number} index Index at which to insert the child.\n * @internal\n */\nfunction insertChildAt(parentNode, childNode, index) {\n // By exploiting arrays returning `undefined` for an undefined index, we can\n // rely exclusively on `insertBefore(node, null)` instead of also using\n // `appendChild(node)`. However, using `undefined` is not allowed by all\n // browsers so we must replace it with `null`.\n parentNode.insertBefore(\n childNode,\n parentNode.childNodes[index] || null\n );\n}\n\n/**\n * Operations for updating with DOM children.\n */\nvar DOMChildrenOperations = {\n\n dangerouslyReplaceNodeWithMarkup: Danger.dangerouslyReplaceNodeWithMarkup,\n\n updateTextContent: setTextContent,\n\n /**\n * Updates a component's children by processing a series of updates. The\n * update configurations are each expected to have a `parentNode` property.\n *\n * @param {array} updates List of update configurations.\n * @param {array} markupList List of markup strings.\n * @internal\n */\n processUpdates: function(updates, markupList) {\n var update;\n // Mapping from parent IDs to initial child orderings.\n var initialChildren = null;\n // List of children that will be moved or removed.\n var updatedChildren = null;\n\n for (var i = 0; i < updates.length; i++) {\n update = updates[i];\n if (update.type === ReactMultiChildUpdateTypes.MOVE_EXISTING ||\n update.type === ReactMultiChildUpdateTypes.REMOVE_NODE) {\n var updatedIndex = update.fromIndex;\n var updatedChild = update.parentNode.childNodes[updatedIndex];\n var parentID = update.parentID;\n\n (\"production\" !== \"production\" ? invariant(\n updatedChild,\n 'processUpdates(): Unable to find child %s of element. This ' +\n 'probably means the DOM was unexpectedly mutated (e.g., by the ' +\n 'browser), usually due to forgetting a when using tables, ' +\n 'nesting tags like
,

, or , or using non-SVG elements ' +\n 'in an parent. Try inspecting the child nodes of the element ' +\n 'with React ID `%s`.',\n updatedIndex,\n parentID\n ) : invariant(updatedChild));\n\n initialChildren = initialChildren || {};\n initialChildren[parentID] = initialChildren[parentID] || [];\n initialChildren[parentID][updatedIndex] = updatedChild;\n\n updatedChildren = updatedChildren || [];\n updatedChildren.push(updatedChild);\n }\n }\n\n var renderedMarkup = Danger.dangerouslyRenderMarkup(markupList);\n\n // Remove updated children first so that `toIndex` is consistent.\n if (updatedChildren) {\n for (var j = 0; j < updatedChildren.length; j++) {\n updatedChildren[j].parentNode.removeChild(updatedChildren[j]);\n }\n }\n\n for (var k = 0; k < updates.length; k++) {\n update = updates[k];\n switch (update.type) {\n case ReactMultiChildUpdateTypes.INSERT_MARKUP:\n insertChildAt(\n update.parentNode,\n renderedMarkup[update.markupIndex],\n update.toIndex\n );\n break;\n case ReactMultiChildUpdateTypes.MOVE_EXISTING:\n insertChildAt(\n update.parentNode,\n initialChildren[update.parentID][update.fromIndex],\n update.toIndex\n );\n break;\n case ReactMultiChildUpdateTypes.TEXT_CONTENT:\n setTextContent(\n update.parentNode,\n update.textContent\n );\n break;\n case ReactMultiChildUpdateTypes.REMOVE_NODE:\n // Already removed by the for-loop above.\n break;\n }\n }\n }\n\n};\n\nmodule.exports = DOMChildrenOperations;\n\n},{\"./Danger\":12,\"./ReactMultiChildUpdateTypes\":73,\"./invariant\":136,\"./setTextContent\":150}],10:[function(require,module,exports){\n/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule DOMProperty\n * @typechecks static-only\n */\n\n/*jslint bitwise: true */\n\n'use strict';\n\nvar invariant = require(\"./invariant\");\n\nfunction checkMask(value, bitmask) {\n return (value & bitmask) === bitmask;\n}\n\nvar DOMPropertyInjection = {\n /**\n * Mapping from normalized, camelcased property names to a configuration that\n * specifies how the associated DOM property should be accessed or rendered.\n */\n MUST_USE_ATTRIBUTE: 0x1,\n MUST_USE_PROPERTY: 0x2,\n HAS_SIDE_EFFECTS: 0x4,\n HAS_BOOLEAN_VALUE: 0x8,\n HAS_NUMERIC_VALUE: 0x10,\n HAS_POSITIVE_NUMERIC_VALUE: 0x20 | 0x10,\n HAS_OVERLOADED_BOOLEAN_VALUE: 0x40,\n\n /**\n * Inject some specialized knowledge about the DOM. This takes a config object\n * with the following properties:\n *\n * isCustomAttribute: function that given an attribute name will return true\n * if it can be inserted into the DOM verbatim. Useful for data-* or aria-*\n * attributes where it's impossible to enumerate all of the possible\n * attribute names,\n *\n * Properties: object mapping DOM property name to one of the\n * DOMPropertyInjection constants or null. If your attribute isn't in here,\n * it won't get written to the DOM.\n *\n * DOMAttributeNames: object mapping React attribute name to the DOM\n * attribute name. Attribute names not specified use the **lowercase**\n * normalized name.\n *\n * DOMPropertyNames: similar to DOMAttributeNames but for DOM properties.\n * Property names not specified use the normalized name.\n *\n * DOMMutationMethods: Properties that require special mutation methods. If\n * `value` is undefined, the mutation method should unset the property.\n *\n * @param {object} domPropertyConfig the config as described above.\n */\n injectDOMPropertyConfig: function(domPropertyConfig) {\n var Properties = domPropertyConfig.Properties || {};\n var DOMAttributeNames = domPropertyConfig.DOMAttributeNames || {};\n var DOMPropertyNames = domPropertyConfig.DOMPropertyNames || {};\n var DOMMutationMethods = domPropertyConfig.DOMMutationMethods || {};\n\n if (domPropertyConfig.isCustomAttribute) {\n DOMProperty._isCustomAttributeFunctions.push(\n domPropertyConfig.isCustomAttribute\n );\n }\n\n for (var propName in Properties) {\n (\"production\" !== \"production\" ? invariant(\n !DOMProperty.isStandardName.hasOwnProperty(propName),\n 'injectDOMPropertyConfig(...): You\\'re trying to inject DOM property ' +\n '\\'%s\\' which has already been injected. You may be accidentally ' +\n 'injecting the same DOM property config twice, or you may be ' +\n 'injecting two configs that have conflicting property names.',\n propName\n ) : invariant(!DOMProperty.isStandardName.hasOwnProperty(propName)));\n\n DOMProperty.isStandardName[propName] = true;\n\n var lowerCased = propName.toLowerCase();\n DOMProperty.getPossibleStandardName[lowerCased] = propName;\n\n if (DOMAttributeNames.hasOwnProperty(propName)) {\n var attributeName = DOMAttributeNames[propName];\n DOMProperty.getPossibleStandardName[attributeName] = propName;\n DOMProperty.getAttributeName[propName] = attributeName;\n } else {\n DOMProperty.getAttributeName[propName] = lowerCased;\n }\n\n DOMProperty.getPropertyName[propName] =\n DOMPropertyNames.hasOwnProperty(propName) ?\n DOMPropertyNames[propName] :\n propName;\n\n if (DOMMutationMethods.hasOwnProperty(propName)) {\n DOMProperty.getMutationMethod[propName] = DOMMutationMethods[propName];\n } else {\n DOMProperty.getMutationMethod[propName] = null;\n }\n\n var propConfig = Properties[propName];\n DOMProperty.mustUseAttribute[propName] =\n checkMask(propConfig, DOMPropertyInjection.MUST_USE_ATTRIBUTE);\n DOMProperty.mustUseProperty[propName] =\n checkMask(propConfig, DOMPropertyInjection.MUST_USE_PROPERTY);\n DOMProperty.hasSideEffects[propName] =\n checkMask(propConfig, DOMPropertyInjection.HAS_SIDE_EFFECTS);\n DOMProperty.hasBooleanValue[propName] =\n checkMask(propConfig, DOMPropertyInjection.HAS_BOOLEAN_VALUE);\n DOMProperty.hasNumericValue[propName] =\n checkMask(propConfig, DOMPropertyInjection.HAS_NUMERIC_VALUE);\n DOMProperty.hasPositiveNumericValue[propName] =\n checkMask(propConfig, DOMPropertyInjection.HAS_POSITIVE_NUMERIC_VALUE);\n DOMProperty.hasOverloadedBooleanValue[propName] =\n checkMask(propConfig, DOMPropertyInjection.HAS_OVERLOADED_BOOLEAN_VALUE);\n\n (\"production\" !== \"production\" ? invariant(\n !DOMProperty.mustUseAttribute[propName] ||\n !DOMProperty.mustUseProperty[propName],\n 'DOMProperty: Cannot require using both attribute and property: %s',\n propName\n ) : invariant(!DOMProperty.mustUseAttribute[propName] ||\n !DOMProperty.mustUseProperty[propName]));\n (\"production\" !== \"production\" ? invariant(\n DOMProperty.mustUseProperty[propName] ||\n !DOMProperty.hasSideEffects[propName],\n 'DOMProperty: Properties that have side effects must use property: %s',\n propName\n ) : invariant(DOMProperty.mustUseProperty[propName] ||\n !DOMProperty.hasSideEffects[propName]));\n (\"production\" !== \"production\" ? invariant(\n !!DOMProperty.hasBooleanValue[propName] +\n !!DOMProperty.hasNumericValue[propName] +\n !!DOMProperty.hasOverloadedBooleanValue[propName] <= 1,\n 'DOMProperty: Value can be one of boolean, overloaded boolean, or ' +\n 'numeric value, but not a combination: %s',\n propName\n ) : invariant(!!DOMProperty.hasBooleanValue[propName] +\n !!DOMProperty.hasNumericValue[propName] +\n !!DOMProperty.hasOverloadedBooleanValue[propName] <= 1));\n }\n }\n};\nvar defaultValueCache = {};\n\n/**\n * DOMProperty exports lookup objects that can be used like functions:\n *\n * > DOMProperty.isValid['id']\n * true\n * > DOMProperty.isValid['foobar']\n * undefined\n *\n * Although this may be confusing, it performs better in general.\n *\n * @see http://jsperf.com/key-exists\n * @see http://jsperf.com/key-missing\n */\nvar DOMProperty = {\n\n ID_ATTRIBUTE_NAME: 'data-reactid',\n\n /**\n * Checks whether a property name is a standard property.\n * @type {Object}\n */\n isStandardName: {},\n\n /**\n * Mapping from lowercase property names to the properly cased version, used\n * to warn in the case of missing properties.\n * @type {Object}\n */\n getPossibleStandardName: {},\n\n /**\n * Mapping from normalized names to attribute names that differ. Attribute\n * names are used when rendering markup or with `*Attribute()`.\n * @type {Object}\n */\n getAttributeName: {},\n\n /**\n * Mapping from normalized names to properties on DOM node instances.\n * (This includes properties that mutate due to external factors.)\n * @type {Object}\n */\n getPropertyName: {},\n\n /**\n * Mapping from normalized names to mutation methods. This will only exist if\n * mutation cannot be set simply by the property or `setAttribute()`.\n * @type {Object}\n */\n getMutationMethod: {},\n\n /**\n * Whether the property must be accessed and mutated as an object property.\n * @type {Object}\n */\n mustUseAttribute: {},\n\n /**\n * Whether the property must be accessed and mutated using `*Attribute()`.\n * (This includes anything that fails ` in `.)\n * @type {Object}\n */\n mustUseProperty: {},\n\n /**\n * Whether or not setting a value causes side effects such as triggering\n * resources to be loaded or text selection changes. We must ensure that\n * the value is only set if it has changed.\n * @type {Object}\n */\n hasSideEffects: {},\n\n /**\n * Whether the property should be removed when set to a falsey value.\n * @type {Object}\n */\n hasBooleanValue: {},\n\n /**\n * Whether the property must be numeric or parse as a\n * numeric and should be removed when set to a falsey value.\n * @type {Object}\n */\n hasNumericValue: {},\n\n /**\n * Whether the property must be positive numeric or parse as a positive\n * numeric and should be removed when set to a falsey value.\n * @type {Object}\n */\n hasPositiveNumericValue: {},\n\n /**\n * Whether the property can be used as a flag as well as with a value. Removed\n * when strictly equal to false; present without a value when strictly equal\n * to true; present with a value otherwise.\n * @type {Object}\n */\n hasOverloadedBooleanValue: {},\n\n /**\n * All of the isCustomAttribute() functions that have been injected.\n */\n _isCustomAttributeFunctions: [],\n\n /**\n * Checks whether a property name is a custom attribute.\n * @method\n */\n isCustomAttribute: function(attributeName) {\n for (var i = 0; i < DOMProperty._isCustomAttributeFunctions.length; i++) {\n var isCustomAttributeFn = DOMProperty._isCustomAttributeFunctions[i];\n if (isCustomAttributeFn(attributeName)) {\n return true;\n }\n }\n return false;\n },\n\n /**\n * Returns the default property value for a DOM property (i.e., not an\n * attribute). Most default values are '' or false, but not all. Worse yet,\n * some (in particular, `type`) vary depending on the type of element.\n *\n * TODO: Is it better to grab all the possible properties when creating an\n * element to avoid having to create the same element twice?\n */\n getDefaultValueForProperty: function(nodeName, prop) {\n var nodeDefaults = defaultValueCache[nodeName];\n var testElement;\n if (!nodeDefaults) {\n defaultValueCache[nodeName] = nodeDefaults = {};\n }\n if (!(prop in nodeDefaults)) {\n testElement = document.createElement(nodeName);\n nodeDefaults[prop] = testElement[prop];\n }\n return nodeDefaults[prop];\n },\n\n injection: DOMPropertyInjection\n};\n\nmodule.exports = DOMProperty;\n\n},{\"./invariant\":136}],11:[function(require,module,exports){\n/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule DOMPropertyOperations\n * @typechecks static-only\n */\n\n'use strict';\n\nvar DOMProperty = require(\"./DOMProperty\");\n\nvar quoteAttributeValueForBrowser = require(\"./quoteAttributeValueForBrowser\");\nvar warning = require(\"./warning\");\n\nfunction shouldIgnoreValue(name, value) {\n return value == null ||\n (DOMProperty.hasBooleanValue[name] && !value) ||\n (DOMProperty.hasNumericValue[name] && isNaN(value)) ||\n (DOMProperty.hasPositiveNumericValue[name] && (value < 1)) ||\n (DOMProperty.hasOverloadedBooleanValue[name] && value === false);\n}\n\nif (\"production\" !== \"production\") {\n var reactProps = {\n children: true,\n dangerouslySetInnerHTML: true,\n key: true,\n ref: true\n };\n var warnedProperties = {};\n\n var warnUnknownProperty = function(name) {\n if (reactProps.hasOwnProperty(name) && reactProps[name] ||\n warnedProperties.hasOwnProperty(name) && warnedProperties[name]) {\n return;\n }\n\n warnedProperties[name] = true;\n var lowerCasedName = name.toLowerCase();\n\n // data-* attributes should be lowercase; suggest the lowercase version\n var standardName = (\n DOMProperty.isCustomAttribute(lowerCasedName) ?\n lowerCasedName :\n DOMProperty.getPossibleStandardName.hasOwnProperty(lowerCasedName) ?\n DOMProperty.getPossibleStandardName[lowerCasedName] :\n null\n );\n\n // For now, only warn when we have a suggested correction. This prevents\n // logging too much when using transferPropsTo.\n (\"production\" !== \"production\" ? warning(\n standardName == null,\n 'Unknown DOM property %s. Did you mean %s?',\n name,\n standardName\n ) : null);\n\n };\n}\n\n/**\n * Operations for dealing with DOM properties.\n */\nvar DOMPropertyOperations = {\n\n /**\n * Creates markup for the ID property.\n *\n * @param {string} id Unescaped ID.\n * @return {string} Markup string.\n */\n createMarkupForID: function(id) {\n return DOMProperty.ID_ATTRIBUTE_NAME + '=' +\n quoteAttributeValueForBrowser(id);\n },\n\n /**\n * Creates markup for a property.\n *\n * @param {string} name\n * @param {*} value\n * @return {?string} Markup string, or null if the property was invalid.\n */\n createMarkupForProperty: function(name, value) {\n if (DOMProperty.isStandardName.hasOwnProperty(name) &&\n DOMProperty.isStandardName[name]) {\n if (shouldIgnoreValue(name, value)) {\n return '';\n }\n var attributeName = DOMProperty.getAttributeName[name];\n if (DOMProperty.hasBooleanValue[name] ||\n (DOMProperty.hasOverloadedBooleanValue[name] && value === true)) {\n return attributeName;\n }\n return attributeName + '=' + quoteAttributeValueForBrowser(value);\n } else if (DOMProperty.isCustomAttribute(name)) {\n if (value == null) {\n return '';\n }\n return name + '=' + quoteAttributeValueForBrowser(value);\n } else if (\"production\" !== \"production\") {\n warnUnknownProperty(name);\n }\n return null;\n },\n\n /**\n * Sets the value for a property on a node.\n *\n * @param {DOMElement} node\n * @param {string} name\n * @param {*} value\n */\n setValueForProperty: function(node, name, value) {\n if (DOMProperty.isStandardName.hasOwnProperty(name) &&\n DOMProperty.isStandardName[name]) {\n var mutationMethod = DOMProperty.getMutationMethod[name];\n if (mutationMethod) {\n mutationMethod(node, value);\n } else if (shouldIgnoreValue(name, value)) {\n this.deleteValueForProperty(node, name);\n } else if (DOMProperty.mustUseAttribute[name]) {\n // `setAttribute` with objects becomes only `[object]` in IE8/9,\n // ('' + value) makes it output the correct toString()-value.\n node.setAttribute(DOMProperty.getAttributeName[name], '' + value);\n } else {\n var propName = DOMProperty.getPropertyName[name];\n // Must explicitly cast values for HAS_SIDE_EFFECTS-properties to the\n // property type before comparing; only `value` does and is string.\n if (!DOMProperty.hasSideEffects[name] ||\n ('' + node[propName]) !== ('' + value)) {\n // Contrary to `setAttribute`, object properties are properly\n // `toString`ed by IE8/9.\n node[propName] = value;\n }\n }\n } else if (DOMProperty.isCustomAttribute(name)) {\n if (value == null) {\n node.removeAttribute(name);\n } else {\n node.setAttribute(name, '' + value);\n }\n } else if (\"production\" !== \"production\") {\n warnUnknownProperty(name);\n }\n },\n\n /**\n * Deletes the value for a property on a node.\n *\n * @param {DOMElement} node\n * @param {string} name\n */\n deleteValueForProperty: function(node, name) {\n if (DOMProperty.isStandardName.hasOwnProperty(name) &&\n DOMProperty.isStandardName[name]) {\n var mutationMethod = DOMProperty.getMutationMethod[name];\n if (mutationMethod) {\n mutationMethod(node, undefined);\n } else if (DOMProperty.mustUseAttribute[name]) {\n node.removeAttribute(DOMProperty.getAttributeName[name]);\n } else {\n var propName = DOMProperty.getPropertyName[name];\n var defaultValue = DOMProperty.getDefaultValueForProperty(\n node.nodeName,\n propName\n );\n if (!DOMProperty.hasSideEffects[name] ||\n ('' + node[propName]) !== defaultValue) {\n node[propName] = defaultValue;\n }\n }\n } else if (DOMProperty.isCustomAttribute(name)) {\n node.removeAttribute(name);\n } else if (\"production\" !== \"production\") {\n warnUnknownProperty(name);\n }\n }\n\n};\n\nmodule.exports = DOMPropertyOperations;\n\n},{\"./DOMProperty\":10,\"./quoteAttributeValueForBrowser\":148,\"./warning\":155}],12:[function(require,module,exports){\n/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule Danger\n * @typechecks static-only\n */\n\n/*jslint evil: true, sub: true */\n\n'use strict';\n\nvar ExecutionEnvironment = require(\"./ExecutionEnvironment\");\n\nvar createNodesFromMarkup = require(\"./createNodesFromMarkup\");\nvar emptyFunction = require(\"./emptyFunction\");\nvar getMarkupWrap = require(\"./getMarkupWrap\");\nvar invariant = require(\"./invariant\");\n\nvar OPEN_TAG_NAME_EXP = /^(<[^ \\/>]+)/;\nvar RESULT_INDEX_ATTR = 'data-danger-index';\n\n/**\n * Extracts the `nodeName` from a string of markup.\n *\n * NOTE: Extracting the `nodeName` does not require a regular expression match\n * because we make assumptions about React-generated markup (i.e. there are no\n * spaces surrounding the opening tag and there is at least one attribute).\n *\n * @param {string} markup String of markup.\n * @return {string} Node name of the supplied markup.\n * @see http://jsperf.com/extract-nodename\n */\nfunction getNodeName(markup) {\n return markup.substring(1, markup.indexOf(' '));\n}\n\nvar Danger = {\n\n /**\n * Renders markup into an array of nodes. The markup is expected to render\n * into a list of root nodes. Also, the length of `resultList` and\n * `markupList` should be the same.\n *\n * @param {array} markupList List of markup strings to render.\n * @return {array} List of rendered nodes.\n * @internal\n */\n dangerouslyRenderMarkup: function(markupList) {\n (\"production\" !== \"production\" ? invariant(\n ExecutionEnvironment.canUseDOM,\n 'dangerouslyRenderMarkup(...): Cannot render markup in a worker ' +\n 'thread. Make sure `window` and `document` are available globally ' +\n 'before requiring React when unit testing or use ' +\n 'React.renderToString for server rendering.'\n ) : invariant(ExecutionEnvironment.canUseDOM));\n var nodeName;\n var markupByNodeName = {};\n // Group markup by `nodeName` if a wrap is necessary, else by '*'.\n for (var i = 0; i < markupList.length; i++) {\n (\"production\" !== \"production\" ? invariant(\n markupList[i],\n 'dangerouslyRenderMarkup(...): Missing markup.'\n ) : invariant(markupList[i]));\n nodeName = getNodeName(markupList[i]);\n nodeName = getMarkupWrap(nodeName) ? nodeName : '*';\n markupByNodeName[nodeName] = markupByNodeName[nodeName] || [];\n markupByNodeName[nodeName][i] = markupList[i];\n }\n var resultList = [];\n var resultListAssignmentCount = 0;\n for (nodeName in markupByNodeName) {\n if (!markupByNodeName.hasOwnProperty(nodeName)) {\n continue;\n }\n var markupListByNodeName = markupByNodeName[nodeName];\n\n // This for-in loop skips the holes of the sparse array. The order of\n // iteration should follow the order of assignment, which happens to match\n // numerical index order, but we don't rely on that.\n var resultIndex;\n for (resultIndex in markupListByNodeName) {\n if (markupListByNodeName.hasOwnProperty(resultIndex)) {\n var markup = markupListByNodeName[resultIndex];\n\n // Push the requested markup with an additional RESULT_INDEX_ATTR\n // attribute. If the markup does not start with a < character, it\n // will be discarded below (with an appropriate console.error).\n markupListByNodeName[resultIndex] = markup.replace(\n OPEN_TAG_NAME_EXP,\n // This index will be parsed back out below.\n '$1 ' + RESULT_INDEX_ATTR + '=\"' + resultIndex + '\" '\n );\n }\n }\n\n // Render each group of markup with similar wrapping `nodeName`.\n var renderNodes = createNodesFromMarkup(\n markupListByNodeName.join(''),\n emptyFunction // Do nothing special with

;\n * }\n * });\n *\n * The class specification supports a specific protocol of methods that have\n * special meaning (e.g. `render`). See `ReactClassInterface` for\n * more the comprehensive protocol. Any other properties and methods in the\n * class specification will available on the prototype.\n *\n * @interface ReactClassInterface\n * @internal\n */\nvar ReactClassInterface = {\n\n /**\n * An array of Mixin objects to include when defining your component.\n *\n * @type {array}\n * @optional\n */\n mixins: SpecPolicy.DEFINE_MANY,\n\n /**\n * An object containing properties and methods that should be defined on\n * the component's constructor instead of its prototype (static methods).\n *\n * @type {object}\n * @optional\n */\n statics: SpecPolicy.DEFINE_MANY,\n\n /**\n * Definition of prop types for this component.\n *\n * @type {object}\n * @optional\n */\n propTypes: SpecPolicy.DEFINE_MANY,\n\n /**\n * Definition of context types for this component.\n *\n * @type {object}\n * @optional\n */\n contextTypes: SpecPolicy.DEFINE_MANY,\n\n /**\n * Definition of context types this component sets for its children.\n *\n * @type {object}\n * @optional\n */\n childContextTypes: SpecPolicy.DEFINE_MANY,\n\n // ==== Definition methods ====\n\n /**\n * Invoked when the component is mounted. Values in the mapping will be set on\n * `this.props` if that prop is not specified (i.e. using an `in` check).\n *\n * This method is invoked before `getInitialState` and therefore cannot rely\n * on `this.state` or use `this.setState`.\n *\n * @return {object}\n * @optional\n */\n getDefaultProps: SpecPolicy.DEFINE_MANY_MERGED,\n\n /**\n * Invoked once before the component is mounted. The return value will be used\n * as the initial value of `this.state`.\n *\n * getInitialState: function() {\n * return {\n * isOn: false,\n * fooBaz: new BazFoo()\n * }\n * }\n *\n * @return {object}\n * @optional\n */\n getInitialState: SpecPolicy.DEFINE_MANY_MERGED,\n\n /**\n * @return {object}\n * @optional\n */\n getChildContext: SpecPolicy.DEFINE_MANY_MERGED,\n\n /**\n * Uses props from `this.props` and state from `this.state` to render the\n * structure of the component.\n *\n * No guarantees are made about when or how often this method is invoked, so\n * it must not have side effects.\n *\n * render: function() {\n * var name = this.props.name;\n * return
Hello, {name}!
;\n * }\n *\n * @return {ReactComponent}\n * @nosideeffects\n * @required\n */\n render: SpecPolicy.DEFINE_ONCE,\n\n\n\n // ==== Delegate methods ====\n\n /**\n * Invoked when the component is initially created and about to be mounted.\n * This may have side effects, but any external subscriptions or data created\n * by this method must be cleaned up in `componentWillUnmount`.\n *\n * @optional\n */\n componentWillMount: SpecPolicy.DEFINE_MANY,\n\n /**\n * Invoked when the component has been mounted and has a DOM representation.\n * However, there is no guarantee that the DOM node is in the document.\n *\n * Use this as an opportunity to operate on the DOM when the component has\n * been mounted (initialized and rendered) for the first time.\n *\n * @param {DOMElement} rootNode DOM element representing the component.\n * @optional\n */\n componentDidMount: SpecPolicy.DEFINE_MANY,\n\n /**\n * Invoked before the component receives new props.\n *\n * Use this as an opportunity to react to a prop transition by updating the\n * state using `this.setState`. Current props are accessed via `this.props`.\n *\n * componentWillReceiveProps: function(nextProps, nextContext) {\n * this.setState({\n * likesIncreasing: nextProps.likeCount > this.props.likeCount\n * });\n * }\n *\n * NOTE: There is no equivalent `componentWillReceiveState`. An incoming prop\n * transition may cause a state change, but the opposite is not true. If you\n * need it, you are probably looking for `componentWillUpdate`.\n *\n * @param {object} nextProps\n * @optional\n */\n componentWillReceiveProps: SpecPolicy.DEFINE_MANY,\n\n /**\n * Invoked while deciding if the component should be updated as a result of\n * receiving new props, state and/or context.\n *\n * Use this as an opportunity to `return false` when you're certain that the\n * transition to the new props/state/context will not require a component\n * update.\n *\n * shouldComponentUpdate: function(nextProps, nextState, nextContext) {\n * return !equal(nextProps, this.props) ||\n * !equal(nextState, this.state) ||\n * !equal(nextContext, this.context);\n * }\n *\n * @param {object} nextProps\n * @param {?object} nextState\n * @param {?object} nextContext\n * @return {boolean} True if the component should update.\n * @optional\n */\n shouldComponentUpdate: SpecPolicy.DEFINE_ONCE,\n\n /**\n * Invoked when the component is about to update due to a transition from\n * `this.props`, `this.state` and `this.context` to `nextProps`, `nextState`\n * and `nextContext`.\n *\n * Use this as an opportunity to perform preparation before an update occurs.\n *\n * NOTE: You **cannot** use `this.setState()` in this method.\n *\n * @param {object} nextProps\n * @param {?object} nextState\n * @param {?object} nextContext\n * @param {ReactReconcileTransaction} transaction\n * @optional\n */\n componentWillUpdate: SpecPolicy.DEFINE_MANY,\n\n /**\n * Invoked when the component's DOM representation has been updated.\n *\n * Use this as an opportunity to operate on the DOM when the component has\n * been updated.\n *\n * @param {object} prevProps\n * @param {?object} prevState\n * @param {?object} prevContext\n * @param {DOMElement} rootNode DOM element representing the component.\n * @optional\n */\n componentDidUpdate: SpecPolicy.DEFINE_MANY,\n\n /**\n * Invoked when the component is about to be removed from its parent and have\n * its DOM representation destroyed.\n *\n * Use this as an opportunity to deallocate any external resources.\n *\n * NOTE: There is no `componentDidUnmount` since your component will have been\n * destroyed by that point.\n *\n * @optional\n */\n componentWillUnmount: SpecPolicy.DEFINE_MANY,\n\n\n\n // ==== Advanced methods ====\n\n /**\n * Updates the component's currently mounted DOM representation.\n *\n * By default, this implements React's rendering and reconciliation algorithm.\n * Sophisticated clients may wish to override this.\n *\n * @param {ReactReconcileTransaction} transaction\n * @internal\n * @overridable\n */\n updateComponent: SpecPolicy.OVERRIDE_BASE\n\n};\n\n/**\n * Mapping from class specification keys to special processing functions.\n *\n * Although these are declared like instance properties in the specification\n * when defining classes using `React.createClass`, they are actually static\n * and are accessible on the constructor instead of the prototype. Despite\n * being static, they must be defined outside of the \"statics\" key under\n * which all other static methods are defined.\n */\nvar RESERVED_SPEC_KEYS = {\n displayName: function(Constructor, displayName) {\n Constructor.displayName = displayName;\n },\n mixins: function(Constructor, mixins) {\n if (mixins) {\n for (var i = 0; i < mixins.length; i++) {\n mixSpecIntoComponent(Constructor, mixins[i]);\n }\n }\n },\n childContextTypes: function(Constructor, childContextTypes) {\n if (\"production\" !== \"production\") {\n validateTypeDef(\n Constructor,\n childContextTypes,\n ReactPropTypeLocations.childContext\n );\n }\n Constructor.childContextTypes = assign(\n {},\n Constructor.childContextTypes,\n childContextTypes\n );\n },\n contextTypes: function(Constructor, contextTypes) {\n if (\"production\" !== \"production\") {\n validateTypeDef(\n Constructor,\n contextTypes,\n ReactPropTypeLocations.context\n );\n }\n Constructor.contextTypes = assign(\n {},\n Constructor.contextTypes,\n contextTypes\n );\n },\n /**\n * Special case getDefaultProps which should move into statics but requires\n * automatic merging.\n */\n getDefaultProps: function(Constructor, getDefaultProps) {\n if (Constructor.getDefaultProps) {\n Constructor.getDefaultProps = createMergedResultFunction(\n Constructor.getDefaultProps,\n getDefaultProps\n );\n } else {\n Constructor.getDefaultProps = getDefaultProps;\n }\n },\n propTypes: function(Constructor, propTypes) {\n if (\"production\" !== \"production\") {\n validateTypeDef(\n Constructor,\n propTypes,\n ReactPropTypeLocations.prop\n );\n }\n Constructor.propTypes = assign(\n {},\n Constructor.propTypes,\n propTypes\n );\n },\n statics: function(Constructor, statics) {\n mixStaticSpecIntoComponent(Constructor, statics);\n }\n};\n\nfunction validateTypeDef(Constructor, typeDef, location) {\n for (var propName in typeDef) {\n if (typeDef.hasOwnProperty(propName)) {\n // use a warning instead of an invariant so components\n // don't show up in prod but not in __DEV__\n (\"production\" !== \"production\" ? warning(\n typeof typeDef[propName] === 'function',\n '%s: %s type `%s` is invalid; it must be a function, usually from ' +\n 'React.PropTypes.',\n Constructor.displayName || 'ReactClass',\n ReactPropTypeLocationNames[location],\n propName\n ) : null);\n }\n }\n}\n\nfunction validateMethodOverride(proto, name) {\n var specPolicy = ReactClassInterface.hasOwnProperty(name) ?\n ReactClassInterface[name] :\n null;\n\n // Disallow overriding of base class methods unless explicitly allowed.\n if (ReactClassMixin.hasOwnProperty(name)) {\n (\"production\" !== \"production\" ? invariant(\n specPolicy === SpecPolicy.OVERRIDE_BASE,\n 'ReactClassInterface: You are attempting to override ' +\n '`%s` from your class specification. Ensure that your method names ' +\n 'do not overlap with React methods.',\n name\n ) : invariant(specPolicy === SpecPolicy.OVERRIDE_BASE));\n }\n\n // Disallow defining methods more than once unless explicitly allowed.\n if (proto.hasOwnProperty(name)) {\n (\"production\" !== \"production\" ? invariant(\n specPolicy === SpecPolicy.DEFINE_MANY ||\n specPolicy === SpecPolicy.DEFINE_MANY_MERGED,\n 'ReactClassInterface: You are attempting to define ' +\n '`%s` on your component more than once. This conflict may be due ' +\n 'to a mixin.',\n name\n ) : invariant(specPolicy === SpecPolicy.DEFINE_MANY ||\n specPolicy === SpecPolicy.DEFINE_MANY_MERGED));\n }\n}\n\n/**\n * Mixin helper which handles policy validation and reserved\n * specification keys when building React classses.\n */\nfunction mixSpecIntoComponent(Constructor, spec) {\n if (!spec) {\n return;\n }\n\n (\"production\" !== \"production\" ? invariant(\n typeof spec !== 'function',\n 'ReactClass: You\\'re attempting to ' +\n 'use a component class as a mixin. Instead, just use a regular object.'\n ) : invariant(typeof spec !== 'function'));\n (\"production\" !== \"production\" ? invariant(\n !ReactElement.isValidElement(spec),\n 'ReactClass: You\\'re attempting to ' +\n 'use a component as a mixin. Instead, just use a regular object.'\n ) : invariant(!ReactElement.isValidElement(spec)));\n\n var proto = Constructor.prototype;\n\n // By handling mixins before any other properties, we ensure the same\n // chaining order is applied to methods with DEFINE_MANY policy, whether\n // mixins are listed before or after these methods in the spec.\n if (spec.hasOwnProperty(MIXINS_KEY)) {\n RESERVED_SPEC_KEYS.mixins(Constructor, spec.mixins);\n }\n\n for (var name in spec) {\n if (!spec.hasOwnProperty(name)) {\n continue;\n }\n\n if (name === MIXINS_KEY) {\n // We have already handled mixins in a special case above\n continue;\n }\n\n var property = spec[name];\n validateMethodOverride(proto, name);\n\n if (RESERVED_SPEC_KEYS.hasOwnProperty(name)) {\n RESERVED_SPEC_KEYS[name](Constructor, property);\n } else {\n // Setup methods on prototype:\n // The following member methods should not be automatically bound:\n // 1. Expected ReactClass methods (in the \"interface\").\n // 2. Overridden methods (that were mixed in).\n var isReactClassMethod =\n ReactClassInterface.hasOwnProperty(name);\n var isAlreadyDefined = proto.hasOwnProperty(name);\n var markedDontBind = property && property.__reactDontBind;\n var isFunction = typeof property === 'function';\n var shouldAutoBind =\n isFunction &&\n !isReactClassMethod &&\n !isAlreadyDefined &&\n !markedDontBind;\n\n if (shouldAutoBind) {\n if (!proto.__reactAutoBindMap) {\n proto.__reactAutoBindMap = {};\n }\n proto.__reactAutoBindMap[name] = property;\n proto[name] = property;\n } else {\n if (isAlreadyDefined) {\n var specPolicy = ReactClassInterface[name];\n\n // These cases should already be caught by validateMethodOverride\n (\"production\" !== \"production\" ? invariant(\n isReactClassMethod && (\n (specPolicy === SpecPolicy.DEFINE_MANY_MERGED || specPolicy === SpecPolicy.DEFINE_MANY)\n ),\n 'ReactClass: Unexpected spec policy %s for key %s ' +\n 'when mixing in component specs.',\n specPolicy,\n name\n ) : invariant(isReactClassMethod && (\n (specPolicy === SpecPolicy.DEFINE_MANY_MERGED || specPolicy === SpecPolicy.DEFINE_MANY)\n )));\n\n // For methods which are defined more than once, call the existing\n // methods before calling the new property, merging if appropriate.\n if (specPolicy === SpecPolicy.DEFINE_MANY_MERGED) {\n proto[name] = createMergedResultFunction(proto[name], property);\n } else if (specPolicy === SpecPolicy.DEFINE_MANY) {\n proto[name] = createChainedFunction(proto[name], property);\n }\n } else {\n proto[name] = property;\n if (\"production\" !== \"production\") {\n // Add verbose displayName to the function, which helps when looking\n // at profiling tools.\n if (typeof property === 'function' && spec.displayName) {\n proto[name].displayName = spec.displayName + '_' + name;\n }\n }\n }\n }\n }\n }\n}\n\nfunction mixStaticSpecIntoComponent(Constructor, statics) {\n if (!statics) {\n return;\n }\n for (var name in statics) {\n var property = statics[name];\n if (!statics.hasOwnProperty(name)) {\n continue;\n }\n\n var isReserved = name in RESERVED_SPEC_KEYS;\n (\"production\" !== \"production\" ? invariant(\n !isReserved,\n 'ReactClass: You are attempting to define a reserved ' +\n 'property, `%s`, that shouldn\\'t be on the \"statics\" key. Define it ' +\n 'as an instance property instead; it will still be accessible on the ' +\n 'constructor.',\n name\n ) : invariant(!isReserved));\n\n var isInherited = name in Constructor;\n (\"production\" !== \"production\" ? invariant(\n !isInherited,\n 'ReactClass: You are attempting to define ' +\n '`%s` on your component more than once. This conflict may be ' +\n 'due to a mixin.',\n name\n ) : invariant(!isInherited));\n Constructor[name] = property;\n }\n}\n\n/**\n * Merge two objects, but throw if both contain the same key.\n *\n * @param {object} one The first object, which is mutated.\n * @param {object} two The second object\n * @return {object} one after it has been mutated to contain everything in two.\n */\nfunction mergeIntoWithNoDuplicateKeys(one, two) {\n (\"production\" !== \"production\" ? invariant(\n one && two && typeof one === 'object' && typeof two === 'object',\n 'mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.'\n ) : invariant(one && two && typeof one === 'object' && typeof two === 'object'));\n\n for (var key in two) {\n if (two.hasOwnProperty(key)) {\n (\"production\" !== \"production\" ? invariant(\n one[key] === undefined,\n 'mergeIntoWithNoDuplicateKeys(): ' +\n 'Tried to merge two objects with the same key: `%s`. This conflict ' +\n 'may be due to a mixin; in particular, this may be caused by two ' +\n 'getInitialState() or getDefaultProps() methods returning objects ' +\n 'with clashing keys.',\n key\n ) : invariant(one[key] === undefined));\n one[key] = two[key];\n }\n }\n return one;\n}\n\n/**\n * Creates a function that invokes two functions and merges their return values.\n *\n * @param {function} one Function to invoke first.\n * @param {function} two Function to invoke second.\n * @return {function} Function that invokes the two argument functions.\n * @private\n */\nfunction createMergedResultFunction(one, two) {\n return function mergedResult() {\n var a = one.apply(this, arguments);\n var b = two.apply(this, arguments);\n if (a == null) {\n return b;\n } else if (b == null) {\n return a;\n }\n var c = {};\n mergeIntoWithNoDuplicateKeys(c, a);\n mergeIntoWithNoDuplicateKeys(c, b);\n return c;\n };\n}\n\n/**\n * Creates a function that invokes two functions and ignores their return vales.\n *\n * @param {function} one Function to invoke first.\n * @param {function} two Function to invoke second.\n * @return {function} Function that invokes the two argument functions.\n * @private\n */\nfunction createChainedFunction(one, two) {\n return function chainedFunction() {\n one.apply(this, arguments);\n two.apply(this, arguments);\n };\n}\n\n/**\n * Binds a method to the component.\n *\n * @param {object} component Component whose method is going to be bound.\n * @param {function} method Method to be bound.\n * @return {function} The bound method.\n */\nfunction bindAutoBindMethod(component, method) {\n var boundMethod = method.bind(component);\n if (\"production\" !== \"production\") {\n boundMethod.__reactBoundContext = component;\n boundMethod.__reactBoundMethod = method;\n boundMethod.__reactBoundArguments = null;\n var componentName = component.constructor.displayName;\n var _bind = boundMethod.bind;\n /* eslint-disable block-scoped-var, no-undef */\n boundMethod.bind = function(newThis ) {for (var args=[],$__0=1,$__1=arguments.length;$__0<$__1;$__0++) args.push(arguments[$__0]);\n // User is trying to bind() an autobound method; we effectively will\n // ignore the value of \"this\" that the user is trying to use, so\n // let's warn.\n if (newThis !== component && newThis !== null) {\n (\"production\" !== \"production\" ? warning(\n false,\n 'bind(): React component methods may only be bound to the ' +\n 'component instance. See %s',\n componentName\n ) : null);\n } else if (!args.length) {\n (\"production\" !== \"production\" ? warning(\n false,\n 'bind(): You are binding a component method to the component. ' +\n 'React does this for you automatically in a high-performance ' +\n 'way, so you can safely remove this call. See %s',\n componentName\n ) : null);\n return boundMethod;\n }\n var reboundMethod = _bind.apply(boundMethod, arguments);\n reboundMethod.__reactBoundContext = component;\n reboundMethod.__reactBoundMethod = method;\n reboundMethod.__reactBoundArguments = args;\n return reboundMethod;\n /* eslint-enable */\n };\n }\n return boundMethod;\n}\n\n/**\n * Binds all auto-bound methods in a component.\n *\n * @param {object} component Component whose method is going to be bound.\n */\nfunction bindAutoBindMethods(component) {\n for (var autoBindKey in component.__reactAutoBindMap) {\n if (component.__reactAutoBindMap.hasOwnProperty(autoBindKey)) {\n var method = component.__reactAutoBindMap[autoBindKey];\n component[autoBindKey] = bindAutoBindMethod(\n component,\n ReactErrorUtils.guard(\n method,\n component.constructor.displayName + '.' + autoBindKey\n )\n );\n }\n }\n}\n\nvar typeDeprecationDescriptor = {\n enumerable: false,\n get: function() {\n var displayName = this.displayName || this.name || 'Component';\n (\"production\" !== \"production\" ? warning(\n false,\n '%s.type is deprecated. Use %s directly to access the class.',\n displayName,\n displayName\n ) : null);\n Object.defineProperty(this, 'type', {\n value: this\n });\n return this;\n }\n};\n\n/**\n * Add more to the ReactClass base class. These are all legacy features and\n * therefore not already part of the modern ReactComponent.\n */\nvar ReactClassMixin = {\n\n /**\n * TODO: This will be deprecated because state should always keep a consistent\n * type signature and the only use case for this, is to avoid that.\n */\n replaceState: function(newState, callback) {\n ReactUpdateQueue.enqueueReplaceState(this, newState);\n if (callback) {\n ReactUpdateQueue.enqueueCallback(this, callback);\n }\n },\n\n /**\n * Checks whether or not this composite component is mounted.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function() {\n if (\"production\" !== \"production\") {\n var owner = ReactCurrentOwner.current;\n if (owner !== null) {\n (\"production\" !== \"production\" ? warning(\n owner._warnedAboutRefsInRender,\n '%s is accessing isMounted inside its render() function. ' +\n 'render() should be a pure function of props and state. It should ' +\n 'never access something that requires stale data from the previous ' +\n 'render, such as refs. Move this logic to componentDidMount and ' +\n 'componentDidUpdate instead.',\n owner.getName() || 'A component'\n ) : null);\n owner._warnedAboutRefsInRender = true;\n }\n }\n var internalInstance = ReactInstanceMap.get(this);\n return (\n internalInstance &&\n internalInstance !== ReactLifeCycle.currentlyMountingInstance\n );\n },\n\n /**\n * Sets a subset of the props.\n *\n * @param {object} partialProps Subset of the next props.\n * @param {?function} callback Called after props are updated.\n * @final\n * @public\n * @deprecated\n */\n setProps: function(partialProps, callback) {\n ReactUpdateQueue.enqueueSetProps(this, partialProps);\n if (callback) {\n ReactUpdateQueue.enqueueCallback(this, callback);\n }\n },\n\n /**\n * Replace all the props.\n *\n * @param {object} newProps Subset of the next props.\n * @param {?function} callback Called after props are updated.\n * @final\n * @public\n * @deprecated\n */\n replaceProps: function(newProps, callback) {\n ReactUpdateQueue.enqueueReplaceProps(this, newProps);\n if (callback) {\n ReactUpdateQueue.enqueueCallback(this, callback);\n }\n }\n};\n\nvar ReactClassComponent = function() {};\nassign(\n ReactClassComponent.prototype,\n ReactComponent.prototype,\n ReactClassMixin\n);\n\n/**\n * Module for creating composite components.\n *\n * @class ReactClass\n */\nvar ReactClass = {\n\n /**\n * Creates a composite component class given a class specification.\n *\n * @param {object} spec Class specification (which must define `render`).\n * @return {function} Component constructor function.\n * @public\n */\n createClass: function(spec) {\n var Constructor = function(props, context) {\n // This constructor is overridden by mocks. The argument is used\n // by mocks to assert on what gets mounted.\n\n if (\"production\" !== \"production\") {\n (\"production\" !== \"production\" ? warning(\n this instanceof Constructor,\n 'Something is calling a React component directly. Use a factory or ' +\n 'JSX instead. See: https://fb.me/react-legacyfactory'\n ) : null);\n }\n\n // Wire up auto-binding\n if (this.__reactAutoBindMap) {\n bindAutoBindMethods(this);\n }\n\n this.props = props;\n this.context = context;\n this.state = null;\n\n // ReactClasses doesn't have constructors. Instead, they use the\n // getInitialState and componentWillMount methods for initialization.\n\n var initialState = this.getInitialState ? this.getInitialState() : null;\n if (\"production\" !== \"production\") {\n // We allow auto-mocks to proceed as if they're returning null.\n if (typeof initialState === 'undefined' &&\n this.getInitialState._isMockFunction) {\n // This is probably bad practice. Consider warning here and\n // deprecating this convenience.\n initialState = null;\n }\n }\n (\"production\" !== \"production\" ? invariant(\n typeof initialState === 'object' && !Array.isArray(initialState),\n '%s.getInitialState(): must return an object or null',\n Constructor.displayName || 'ReactCompositeComponent'\n ) : invariant(typeof initialState === 'object' && !Array.isArray(initialState)));\n\n this.state = initialState;\n };\n Constructor.prototype = new ReactClassComponent();\n Constructor.prototype.constructor = Constructor;\n\n injectedMixins.forEach(\n mixSpecIntoComponent.bind(null, Constructor)\n );\n\n mixSpecIntoComponent(Constructor, spec);\n\n // Initialize the defaultProps property after all mixins have been merged\n if (Constructor.getDefaultProps) {\n Constructor.defaultProps = Constructor.getDefaultProps();\n }\n\n if (\"production\" !== \"production\") {\n // This is a tag to indicate that the use of these method names is ok,\n // since it's used with createClass. If it's not, then it's likely a\n // mistake so we'll warn you to use the static property, property\n // initializer or constructor respectively.\n if (Constructor.getDefaultProps) {\n Constructor.getDefaultProps.isReactClassApproved = {};\n }\n if (Constructor.prototype.getInitialState) {\n Constructor.prototype.getInitialState.isReactClassApproved = {};\n }\n }\n\n (\"production\" !== \"production\" ? invariant(\n Constructor.prototype.render,\n 'createClass(...): Class specification must implement a `render` method.'\n ) : invariant(Constructor.prototype.render));\n\n if (\"production\" !== \"production\") {\n (\"production\" !== \"production\" ? warning(\n !Constructor.prototype.componentShouldUpdate,\n '%s has a method called ' +\n 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' +\n 'The name is phrased as a question because the function is ' +\n 'expected to return a value.',\n spec.displayName || 'A component'\n ) : null);\n }\n\n // Reduce time spent doing lookups by setting these on the prototype.\n for (var methodName in ReactClassInterface) {\n if (!Constructor.prototype[methodName]) {\n Constructor.prototype[methodName] = null;\n }\n }\n\n // Legacy hook\n Constructor.type = Constructor;\n if (\"production\" !== \"production\") {\n try {\n Object.defineProperty(Constructor, 'type', typeDeprecationDescriptor);\n } catch (x) {\n // IE will fail on defineProperty (es5-shim/sham too)\n }\n }\n\n return Constructor;\n },\n\n injection: {\n injectMixin: function(mixin) {\n injectedMixins.push(mixin);\n }\n }\n\n};\n\nmodule.exports = ReactClass;\n\n},{\"./Object.assign\":27,\"./ReactComponent\":35,\"./ReactCurrentOwner\":40,\"./ReactElement\":58,\"./ReactErrorUtils\":61,\"./ReactInstanceMap\":68,\"./ReactLifeCycle\":69,\"./ReactPropTypeLocationNames\":77,\"./ReactPropTypeLocations\":78,\"./ReactUpdateQueue\":87,\"./invariant\":136,\"./keyMirror\":141,\"./keyOf\":142,\"./warning\":155}],35:[function(require,module,exports){\n/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactComponent\n */\n\n'use strict';\n\nvar ReactUpdateQueue = require(\"./ReactUpdateQueue\");\n\nvar invariant = require(\"./invariant\");\nvar warning = require(\"./warning\");\n\n/**\n * Base class helpers for the updating state of a component.\n */\nfunction ReactComponent(props, context) {\n this.props = props;\n this.context = context;\n}\n\n/**\n * Sets a subset of the state. Always use this to mutate\n * state. You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * There is no guarantee that calls to `setState` will run synchronously,\n * as they may eventually be batched together. You can provide an optional\n * callback that will be executed when the call to setState is actually\n * completed.\n *\n * When a function is provided to setState, it will be called at some point in\n * the future (not synchronously). It will be called with the up to date\n * component arguments (state, props, context). These values can be different\n * from this.* because your function may be called after receiveProps but before\n * shouldComponentUpdate, and this new state, props, and context will not yet be\n * assigned to this.\n *\n * @param {object|function} partialState Next partial state or function to\n * produce next partial state to be merged with current state.\n * @param {?function} callback Called after state is updated.\n * @final\n * @protected\n */\nReactComponent.prototype.setState = function(partialState, callback) {\n (\"production\" !== \"production\" ? invariant(\n typeof partialState === 'object' ||\n typeof partialState === 'function' ||\n partialState == null,\n 'setState(...): takes an object of state variables to update or a ' +\n 'function which returns an object of state variables.'\n ) : invariant(typeof partialState === 'object' ||\n typeof partialState === 'function' ||\n partialState == null));\n if (\"production\" !== \"production\") {\n (\"production\" !== \"production\" ? warning(\n partialState != null,\n 'setState(...): You passed an undefined or null state object; ' +\n 'instead, use forceUpdate().'\n ) : null);\n }\n ReactUpdateQueue.enqueueSetState(this, partialState);\n if (callback) {\n ReactUpdateQueue.enqueueCallback(this, callback);\n }\n};\n\n/**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {?function} callback Called after update is complete.\n * @final\n * @protected\n */\nReactComponent.prototype.forceUpdate = function(callback) {\n ReactUpdateQueue.enqueueForceUpdate(this);\n if (callback) {\n ReactUpdateQueue.enqueueCallback(this, callback);\n }\n};\n\n/**\n * Deprecated APIs. These APIs used to exist on classic React classes but since\n * we would like to deprecate them, we're not going to move them over to this\n * modern base class. Instead, we define a getter that warns if it's accessed.\n */\nif (\"production\" !== \"production\") {\n var deprecatedAPIs = {\n getDOMNode: [\n 'getDOMNode',\n 'Use React.findDOMNode(component) instead.'\n ],\n isMounted: [\n 'isMounted',\n 'Instead, make sure to clean up subscriptions and pending requests in ' +\n 'componentWillUnmount to prevent memory leaks.'\n ],\n replaceProps: [\n 'replaceProps',\n 'Instead, call React.render again at the top level.'\n ],\n replaceState: [\n 'replaceState',\n 'Refactor your code to use setState instead (see ' +\n 'https://github.com/facebook/react/issues/3236).'\n ],\n setProps: [\n 'setProps',\n 'Instead, call React.render again at the top level.'\n ]\n };\n var defineDeprecationWarning = function(methodName, info) {\n try {\n Object.defineProperty(ReactComponent.prototype, methodName, {\n get: function() {\n (\"production\" !== \"production\" ? warning(\n false,\n '%s(...) is deprecated in plain JavaScript React classes. %s',\n info[0],\n info[1]\n ) : null);\n return undefined;\n }\n });\n } catch (x) {\n // IE will fail on defineProperty (es5-shim/sham too)\n }\n };\n for (var fnName in deprecatedAPIs) {\n if (deprecatedAPIs.hasOwnProperty(fnName)) {\n defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);\n }\n }\n}\n\nmodule.exports = ReactComponent;\n\n},{\"./ReactUpdateQueue\":87,\"./invariant\":136,\"./warning\":155}],36:[function(require,module,exports){\n/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactComponentBrowserEnvironment\n */\n\n/*jslint evil: true */\n\n'use strict';\n\nvar ReactDOMIDOperations = require(\"./ReactDOMIDOperations\");\nvar ReactMount = require(\"./ReactMount\");\n\n/**\n * Abstracts away all functionality of the reconciler that requires knowledge of\n * the browser context. TODO: These callers should be refactored to avoid the\n * need for this injection.\n */\nvar ReactComponentBrowserEnvironment = {\n\n processChildrenUpdates:\n ReactDOMIDOperations.dangerouslyProcessChildrenUpdates,\n\n replaceNodeWithMarkupByID:\n ReactDOMIDOperations.dangerouslyReplaceNodeWithMarkupByID,\n\n /**\n * If a particular environment requires that some resources be cleaned up,\n * specify this in the injected Mixin. In the DOM, we would likely want to\n * purge any cached node ID lookups.\n *\n * @private\n */\n unmountIDFromEnvironment: function(rootNodeID) {\n ReactMount.purgeID(rootNodeID);\n }\n\n};\n\nmodule.exports = ReactComponentBrowserEnvironment;\n\n},{\"./ReactDOMIDOperations\":45,\"./ReactMount\":71}],37:[function(require,module,exports){\n/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactComponentEnvironment\n */\n\n'use strict';\n\nvar invariant = require(\"./invariant\");\n\nvar injected = false;\n\nvar ReactComponentEnvironment = {\n\n /**\n * Optionally injectable environment dependent cleanup hook. (server vs.\n * browser etc). Example: A browser system caches DOM nodes based on component\n * ID and must remove that cache entry when this instance is unmounted.\n */\n unmountIDFromEnvironment: null,\n\n /**\n * Optionally injectable hook for swapping out mount images in the middle of\n * the tree.\n */\n replaceNodeWithMarkupByID: null,\n\n /**\n * Optionally injectable hook for processing a queue of child updates. Will\n * later move into MultiChildComponents.\n */\n processChildrenUpdates: null,\n\n injection: {\n injectEnvironment: function(environment) {\n (\"production\" !== \"production\" ? invariant(\n !injected,\n 'ReactCompositeComponent: injectEnvironment() can only be called once.'\n ) : invariant(!injected));\n ReactComponentEnvironment.unmountIDFromEnvironment =\n environment.unmountIDFromEnvironment;\n ReactComponentEnvironment.replaceNodeWithMarkupByID =\n environment.replaceNodeWithMarkupByID;\n ReactComponentEnvironment.processChildrenUpdates =\n environment.processChildrenUpdates;\n injected = true;\n }\n }\n\n};\n\nmodule.exports = ReactComponentEnvironment;\n\n},{\"./invariant\":136}],38:[function(require,module,exports){\n/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactCompositeComponent\n */\n\n'use strict';\n\nvar ReactComponentEnvironment = require(\"./ReactComponentEnvironment\");\nvar ReactContext = require(\"./ReactContext\");\nvar ReactCurrentOwner = require(\"./ReactCurrentOwner\");\nvar ReactElement = require(\"./ReactElement\");\nvar ReactElementValidator = require(\"./ReactElementValidator\");\nvar ReactInstanceMap = require(\"./ReactInstanceMap\");\nvar ReactLifeCycle = require(\"./ReactLifeCycle\");\nvar ReactNativeComponent = require(\"./ReactNativeComponent\");\nvar ReactPerf = require(\"./ReactPerf\");\nvar ReactPropTypeLocations = require(\"./ReactPropTypeLocations\");\nvar ReactPropTypeLocationNames = require(\"./ReactPropTypeLocationNames\");\nvar ReactReconciler = require(\"./ReactReconciler\");\nvar ReactUpdates = require(\"./ReactUpdates\");\n\nvar assign = require(\"./Object.assign\");\nvar emptyObject = require(\"./emptyObject\");\nvar invariant = require(\"./invariant\");\nvar shouldUpdateReactComponent = require(\"./shouldUpdateReactComponent\");\nvar warning = require(\"./warning\");\n\nfunction getDeclarationErrorAddendum(component) {\n var owner = component._currentElement._owner || null;\n if (owner) {\n var name = owner.getName();\n if (name) {\n return ' Check the render method of `' + name + '`.';\n }\n }\n return '';\n}\n\n/**\n * ------------------ The Life-Cycle of a Composite Component ------------------\n *\n * - constructor: Initialization of state. The instance is now retained.\n * - componentWillMount\n * - render\n * - [children's constructors]\n * - [children's componentWillMount and render]\n * - [children's componentDidMount]\n * - componentDidMount\n *\n * Update Phases:\n * - componentWillReceiveProps (only called if parent updated)\n * - shouldComponentUpdate\n * - componentWillUpdate\n * - render\n * - [children's constructors or receive props phases]\n * - componentDidUpdate\n *\n * - componentWillUnmount\n * - [children's componentWillUnmount]\n * - [children destroyed]\n * - (destroyed): The instance is now blank, released by React and ready for GC.\n *\n * -----------------------------------------------------------------------------\n */\n\n/**\n * An incrementing ID assigned to each component when it is mounted. This is\n * used to enforce the order in which `ReactUpdates` updates dirty components.\n *\n * @private\n */\nvar nextMountID = 1;\n\n/**\n * @lends {ReactCompositeComponent.prototype}\n */\nvar ReactCompositeComponentMixin = {\n\n /**\n * Base constructor for all composite component.\n *\n * @param {ReactElement} element\n * @final\n * @internal\n */\n construct: function(element) {\n this._currentElement = element;\n this._rootNodeID = null;\n this._instance = null;\n\n // See ReactUpdateQueue\n this._pendingElement = null;\n this._pendingStateQueue = null;\n this._pendingReplaceState = false;\n this._pendingForceUpdate = false;\n\n this._renderedComponent = null;\n\n this._context = null;\n this._mountOrder = 0;\n this._isTopLevel = false;\n\n // See ReactUpdates and ReactUpdateQueue.\n this._pendingCallbacks = null;\n },\n\n /**\n * Initializes the component, renders markup, and registers event listeners.\n *\n * @param {string} rootID DOM ID of the root node.\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @return {?string} Rendered markup to be inserted into the DOM.\n * @final\n * @internal\n */\n mountComponent: function(rootID, transaction, context) {\n this._context = context;\n this._mountOrder = nextMountID++;\n this._rootNodeID = rootID;\n\n var publicProps = this._processProps(this._currentElement.props);\n var publicContext = this._processContext(this._currentElement._context);\n\n var Component = ReactNativeComponent.getComponentClassForElement(\n this._currentElement\n );\n\n // Initialize the public class\n var inst = new Component(publicProps, publicContext);\n\n if (\"production\" !== \"production\") {\n // This will throw later in _renderValidatedComponent, but add an early\n // warning now to help debugging\n (\"production\" !== \"production\" ? warning(\n inst.render != null,\n '%s(...): No `render` method found on the returned component ' +\n 'instance: you may have forgotten to define `render` in your ' +\n 'component or you may have accidentally tried to render an element ' +\n 'whose type is a function that isn\\'t a React component.',\n Component.displayName || Component.name || 'Component'\n ) : null);\n }\n\n // These should be set up in the constructor, but as a convenience for\n // simpler class abstractions, we set them up after the fact.\n inst.props = publicProps;\n inst.context = publicContext;\n inst.refs = emptyObject;\n\n this._instance = inst;\n\n // Store a reference from the instance back to the internal representation\n ReactInstanceMap.set(inst, this);\n\n if (\"production\" !== \"production\") {\n this._warnIfContextsDiffer(this._currentElement._context, context);\n }\n\n if (\"production\" !== \"production\") {\n // Since plain JS classes are defined without any special initialization\n // logic, we can not catch common errors early. Therefore, we have to\n // catch them here, at initialization time, instead.\n (\"production\" !== \"production\" ? warning(\n !inst.getInitialState ||\n inst.getInitialState.isReactClassApproved,\n 'getInitialState was defined on %s, a plain JavaScript class. ' +\n 'This is only supported for classes created using React.createClass. ' +\n 'Did you mean to define a state property instead?',\n this.getName() || 'a component'\n ) : null);\n (\"production\" !== \"production\" ? warning(\n !inst.getDefaultProps ||\n inst.getDefaultProps.isReactClassApproved,\n 'getDefaultProps was defined on %s, a plain JavaScript class. ' +\n 'This is only supported for classes created using React.createClass. ' +\n 'Use a static property to define defaultProps instead.',\n this.getName() || 'a component'\n ) : null);\n (\"production\" !== \"production\" ? warning(\n !inst.propTypes,\n 'propTypes was defined as an instance property on %s. Use a static ' +\n 'property to define propTypes instead.',\n this.getName() || 'a component'\n ) : null);\n (\"production\" !== \"production\" ? warning(\n !inst.contextTypes,\n 'contextTypes was defined as an instance property on %s. Use a ' +\n 'static property to define contextTypes instead.',\n this.getName() || 'a component'\n ) : null);\n (\"production\" !== \"production\" ? warning(\n typeof inst.componentShouldUpdate !== 'function',\n '%s has a method called ' +\n 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' +\n 'The name is phrased as a question because the function is ' +\n 'expected to return a value.',\n (this.getName() || 'A component')\n ) : null);\n }\n\n var initialState = inst.state;\n if (initialState === undefined) {\n inst.state = initialState = null;\n }\n (\"production\" !== \"production\" ? invariant(\n typeof initialState === 'object' && !Array.isArray(initialState),\n '%s.state: must be set to an object or null',\n this.getName() || 'ReactCompositeComponent'\n ) : invariant(typeof initialState === 'object' && !Array.isArray(initialState)));\n\n this._pendingStateQueue = null;\n this._pendingReplaceState = false;\n this._pendingForceUpdate = false;\n\n var childContext;\n var renderedElement;\n\n var previouslyMounting = ReactLifeCycle.currentlyMountingInstance;\n ReactLifeCycle.currentlyMountingInstance = this;\n try {\n if (inst.componentWillMount) {\n inst.componentWillMount();\n // When mounting, calls to `setState` by `componentWillMount` will set\n // `this._pendingStateQueue` without triggering a re-render.\n if (this._pendingStateQueue) {\n inst.state = this._processPendingState(inst.props, inst.context);\n }\n }\n\n childContext = this._getValidatedChildContext(context);\n renderedElement = this._renderValidatedComponent(childContext);\n } finally {\n ReactLifeCycle.currentlyMountingInstance = previouslyMounting;\n }\n\n this._renderedComponent = this._instantiateReactComponent(\n renderedElement,\n this._currentElement.type // The wrapping type\n );\n\n var markup = ReactReconciler.mountComponent(\n this._renderedComponent,\n rootID,\n transaction,\n this._mergeChildContext(context, childContext)\n );\n if (inst.componentDidMount) {\n transaction.getReactMountReady().enqueue(inst.componentDidMount, inst);\n }\n\n return markup;\n },\n\n /**\n * Releases any resources allocated by `mountComponent`.\n *\n * @final\n * @internal\n */\n unmountComponent: function() {\n var inst = this._instance;\n\n if (inst.componentWillUnmount) {\n var previouslyUnmounting = ReactLifeCycle.currentlyUnmountingInstance;\n ReactLifeCycle.currentlyUnmountingInstance = this;\n try {\n inst.componentWillUnmount();\n } finally {\n ReactLifeCycle.currentlyUnmountingInstance = previouslyUnmounting;\n }\n }\n\n ReactReconciler.unmountComponent(this._renderedComponent);\n this._renderedComponent = null;\n\n // Reset pending fields\n this._pendingStateQueue = null;\n this._pendingReplaceState = false;\n this._pendingForceUpdate = false;\n this._pendingCallbacks = null;\n this._pendingElement = null;\n\n // These fields do not really need to be reset since this object is no\n // longer accessible.\n this._context = null;\n this._rootNodeID = null;\n\n // Delete the reference from the instance to this internal representation\n // which allow the internals to be properly cleaned up even if the user\n // leaks a reference to the public instance.\n ReactInstanceMap.remove(inst);\n\n // Some existing components rely on inst.props even after they've been\n // destroyed (in event handlers).\n // TODO: inst.props = null;\n // TODO: inst.state = null;\n // TODO: inst.context = null;\n },\n\n /**\n * Schedule a partial update to the props. Only used for internal testing.\n *\n * @param {object} partialProps Subset of the next props.\n * @param {?function} callback Called after props are updated.\n * @final\n * @internal\n */\n _setPropsInternal: function(partialProps, callback) {\n // This is a deoptimized path. We optimize for always having an element.\n // This creates an extra internal element.\n var element = this._pendingElement || this._currentElement;\n this._pendingElement = ReactElement.cloneAndReplaceProps(\n element,\n assign({}, element.props, partialProps)\n );\n ReactUpdates.enqueueUpdate(this, callback);\n },\n\n /**\n * Filters the context object to only contain keys specified in\n * `contextTypes`\n *\n * @param {object} context\n * @return {?object}\n * @private\n */\n _maskContext: function(context) {\n var maskedContext = null;\n // This really should be getting the component class for the element,\n // but we know that we're not going to need it for built-ins.\n if (typeof this._currentElement.type === 'string') {\n return emptyObject;\n }\n var contextTypes = this._currentElement.type.contextTypes;\n if (!contextTypes) {\n return emptyObject;\n }\n maskedContext = {};\n for (var contextName in contextTypes) {\n maskedContext[contextName] = context[contextName];\n }\n return maskedContext;\n },\n\n /**\n * Filters the context object to only contain keys specified in\n * `contextTypes`, and asserts that they are valid.\n *\n * @param {object} context\n * @return {?object}\n * @private\n */\n _processContext: function(context) {\n var maskedContext = this._maskContext(context);\n if (\"production\" !== \"production\") {\n var Component = ReactNativeComponent.getComponentClassForElement(\n this._currentElement\n );\n if (Component.contextTypes) {\n this._checkPropTypes(\n Component.contextTypes,\n maskedContext,\n ReactPropTypeLocations.context\n );\n }\n }\n return maskedContext;\n },\n\n /**\n * @param {object} currentContext\n * @return {object}\n * @private\n */\n _getValidatedChildContext: function(currentContext) {\n var inst = this._instance;\n var childContext = inst.getChildContext && inst.getChildContext();\n if (childContext) {\n (\"production\" !== \"production\" ? invariant(\n typeof inst.constructor.childContextTypes === 'object',\n '%s.getChildContext(): childContextTypes must be defined in order to ' +\n 'use getChildContext().',\n this.getName() || 'ReactCompositeComponent'\n ) : invariant(typeof inst.constructor.childContextTypes === 'object'));\n if (\"production\" !== \"production\") {\n this._checkPropTypes(\n inst.constructor.childContextTypes,\n childContext,\n ReactPropTypeLocations.childContext\n );\n }\n for (var name in childContext) {\n (\"production\" !== \"production\" ? invariant(\n name in inst.constructor.childContextTypes,\n '%s.getChildContext(): key \"%s\" is not defined in childContextTypes.',\n this.getName() || 'ReactCompositeComponent',\n name\n ) : invariant(name in inst.constructor.childContextTypes));\n }\n return childContext;\n }\n return null;\n },\n\n _mergeChildContext: function(currentContext, childContext) {\n if (childContext) {\n return assign({}, currentContext, childContext);\n }\n return currentContext;\n },\n\n /**\n * Processes props by setting default values for unspecified props and\n * asserting that the props are valid. Does not mutate its argument; returns\n * a new props object with defaults merged in.\n *\n * @param {object} newProps\n * @return {object}\n * @private\n */\n _processProps: function(newProps) {\n if (\"production\" !== \"production\") {\n var Component = ReactNativeComponent.getComponentClassForElement(\n this._currentElement\n );\n if (Component.propTypes) {\n this._checkPropTypes(\n Component.propTypes,\n newProps,\n ReactPropTypeLocations.prop\n );\n }\n }\n return newProps;\n },\n\n /**\n * Assert that the props are valid\n *\n * @param {object} propTypes Map of prop name to a ReactPropType\n * @param {object} props\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @private\n */\n _checkPropTypes: function(propTypes, props, location) {\n // TODO: Stop validating prop types here and only use the element\n // validation.\n var componentName = this.getName();\n for (var propName in propTypes) {\n if (propTypes.hasOwnProperty(propName)) {\n var error;\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n (\"production\" !== \"production\" ? invariant(\n typeof propTypes[propName] === 'function',\n '%s: %s type `%s` is invalid; it must be a function, usually ' +\n 'from React.PropTypes.',\n componentName || 'React class',\n ReactPropTypeLocationNames[location],\n propName\n ) : invariant(typeof propTypes[propName] === 'function'));\n error = propTypes[propName](props, propName, componentName, location);\n } catch (ex) {\n error = ex;\n }\n if (error instanceof Error) {\n // We may want to extend this logic for similar errors in\n // React.render calls, so I'm abstracting it away into\n // a function to minimize refactoring in the future\n var addendum = getDeclarationErrorAddendum(this);\n\n if (location === ReactPropTypeLocations.prop) {\n // Preface gives us something to blacklist in warning module\n (\"production\" !== \"production\" ? warning(\n false,\n 'Failed Composite propType: %s%s',\n error.message,\n addendum\n ) : null);\n } else {\n (\"production\" !== \"production\" ? warning(\n false,\n 'Failed Context Types: %s%s',\n error.message,\n addendum\n ) : null);\n }\n }\n }\n }\n },\n\n receiveComponent: function(nextElement, transaction, nextContext) {\n var prevElement = this._currentElement;\n var prevContext = this._context;\n\n this._pendingElement = null;\n\n this.updateComponent(\n transaction,\n prevElement,\n nextElement,\n prevContext,\n nextContext\n );\n },\n\n /**\n * If any of `_pendingElement`, `_pendingStateQueue`, or `_pendingForceUpdate`\n * is set, update the component.\n *\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n performUpdateIfNecessary: function(transaction) {\n if (this._pendingElement != null) {\n ReactReconciler.receiveComponent(\n this,\n this._pendingElement || this._currentElement,\n transaction,\n this._context\n );\n }\n\n if (this._pendingStateQueue !== null || this._pendingForceUpdate) {\n if (\"production\" !== \"production\") {\n ReactElementValidator.checkAndWarnForMutatedProps(\n this._currentElement\n );\n }\n\n this.updateComponent(\n transaction,\n this._currentElement,\n this._currentElement,\n this._context,\n this._context\n );\n }\n },\n\n /**\n * Compare two contexts, warning if they are different\n * TODO: Remove this check when owner-context is removed\n */\n _warnIfContextsDiffer: function(ownerBasedContext, parentBasedContext) {\n ownerBasedContext = this._maskContext(ownerBasedContext);\n parentBasedContext = this._maskContext(parentBasedContext);\n var parentKeys = Object.keys(parentBasedContext).sort();\n var displayName = this.getName() || 'ReactCompositeComponent';\n for (var i = 0; i < parentKeys.length; i++) {\n var key = parentKeys[i];\n (\"production\" !== \"production\" ? warning(\n ownerBasedContext[key] === parentBasedContext[key],\n 'owner-based and parent-based contexts differ ' +\n '(values: `%s` vs `%s`) for key (%s) while mounting %s ' +\n '(see: http://fb.me/react-context-by-parent)',\n ownerBasedContext[key],\n parentBasedContext[key],\n key,\n displayName\n ) : null);\n }\n },\n\n /**\n * Perform an update to a mounted component. The componentWillReceiveProps and\n * shouldComponentUpdate methods are called, then (assuming the update isn't\n * skipped) the remaining update lifecycle methods are called and the DOM\n * representation is updated.\n *\n * By default, this implements React's rendering and reconciliation algorithm.\n * Sophisticated clients may wish to override this.\n *\n * @param {ReactReconcileTransaction} transaction\n * @param {ReactElement} prevParentElement\n * @param {ReactElement} nextParentElement\n * @internal\n * @overridable\n */\n updateComponent: function(\n transaction,\n prevParentElement,\n nextParentElement,\n prevUnmaskedContext,\n nextUnmaskedContext\n ) {\n var inst = this._instance;\n\n var nextContext = inst.context;\n var nextProps = inst.props;\n\n // Distinguish between a props update versus a simple state update\n if (prevParentElement !== nextParentElement) {\n nextContext = this._processContext(nextParentElement._context);\n nextProps = this._processProps(nextParentElement.props);\n\n if (\"production\" !== \"production\") {\n if (nextUnmaskedContext != null) {\n this._warnIfContextsDiffer(\n nextParentElement._context,\n nextUnmaskedContext\n );\n }\n }\n\n // An update here will schedule an update but immediately set\n // _pendingStateQueue which will ensure that any state updates gets\n // immediately reconciled instead of waiting for the next batch.\n\n if (inst.componentWillReceiveProps) {\n inst.componentWillReceiveProps(nextProps, nextContext);\n }\n }\n\n var nextState = this._processPendingState(nextProps, nextContext);\n\n var shouldUpdate =\n this._pendingForceUpdate ||\n !inst.shouldComponentUpdate ||\n inst.shouldComponentUpdate(nextProps, nextState, nextContext);\n\n if (\"production\" !== \"production\") {\n (\"production\" !== \"production\" ? warning(\n typeof shouldUpdate !== 'undefined',\n '%s.shouldComponentUpdate(): Returned undefined instead of a ' +\n 'boolean value. Make sure to return true or false.',\n this.getName() || 'ReactCompositeComponent'\n ) : null);\n }\n\n if (shouldUpdate) {\n this._pendingForceUpdate = false;\n // Will set `this.props`, `this.state` and `this.context`.\n this._performComponentUpdate(\n nextParentElement,\n nextProps,\n nextState,\n nextContext,\n transaction,\n nextUnmaskedContext\n );\n } else {\n // If it's determined that a component should not update, we still want\n // to set props and state but we shortcut the rest of the update.\n this._currentElement = nextParentElement;\n this._context = nextUnmaskedContext;\n inst.props = nextProps;\n inst.state = nextState;\n inst.context = nextContext;\n }\n },\n\n _processPendingState: function(props, context) {\n var inst = this._instance;\n var queue = this._pendingStateQueue;\n var replace = this._pendingReplaceState;\n this._pendingReplaceState = false;\n this._pendingStateQueue = null;\n\n if (!queue) {\n return inst.state;\n }\n\n if (replace && queue.length === 1) {\n return queue[0];\n }\n\n var nextState = assign({}, replace ? queue[0] : inst.state);\n for (var i = replace ? 1 : 0; i < queue.length; i++) {\n var partial = queue[i];\n assign(\n nextState,\n typeof partial === 'function' ?\n partial.call(inst, nextState, props, context) :\n partial\n );\n }\n\n return nextState;\n },\n\n /**\n * Merges new props and state, notifies delegate methods of update and\n * performs update.\n *\n * @param {ReactElement} nextElement Next element\n * @param {object} nextProps Next public object to set as properties.\n * @param {?object} nextState Next object to set as state.\n * @param {?object} nextContext Next public object to set as context.\n * @param {ReactReconcileTransaction} transaction\n * @param {?object} unmaskedContext\n * @private\n */\n _performComponentUpdate: function(\n nextElement,\n nextProps,\n nextState,\n nextContext,\n transaction,\n unmaskedContext\n ) {\n var inst = this._instance;\n\n var prevProps = inst.props;\n var prevState = inst.state;\n var prevContext = inst.context;\n\n if (inst.componentWillUpdate) {\n inst.componentWillUpdate(nextProps, nextState, nextContext);\n }\n\n this._currentElement = nextElement;\n this._context = unmaskedContext;\n inst.props = nextProps;\n inst.state = nextState;\n inst.context = nextContext;\n\n this._updateRenderedComponent(transaction, unmaskedContext);\n\n if (inst.componentDidUpdate) {\n transaction.getReactMountReady().enqueue(\n inst.componentDidUpdate.bind(inst, prevProps, prevState, prevContext),\n inst\n );\n }\n },\n\n /**\n * Call the component's `render` method and update the DOM accordingly.\n *\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n _updateRenderedComponent: function(transaction, context) {\n var prevComponentInstance = this._renderedComponent;\n var prevRenderedElement = prevComponentInstance._currentElement;\n var childContext = this._getValidatedChildContext();\n var nextRenderedElement = this._renderValidatedComponent(childContext);\n if (shouldUpdateReactComponent(prevRenderedElement, nextRenderedElement)) {\n ReactReconciler.receiveComponent(\n prevComponentInstance,\n nextRenderedElement,\n transaction,\n this._mergeChildContext(context, childContext)\n );\n } else {\n // These two IDs are actually the same! But nothing should rely on that.\n var thisID = this._rootNodeID;\n var prevComponentID = prevComponentInstance._rootNodeID;\n ReactReconciler.unmountComponent(prevComponentInstance);\n\n this._renderedComponent = this._instantiateReactComponent(\n nextRenderedElement,\n this._currentElement.type\n );\n var nextMarkup = ReactReconciler.mountComponent(\n this._renderedComponent,\n thisID,\n transaction,\n this._mergeChildContext(context, childContext)\n );\n this._replaceNodeWithMarkupByID(prevComponentID, nextMarkup);\n }\n },\n\n /**\n * @protected\n */\n _replaceNodeWithMarkupByID: function(prevComponentID, nextMarkup) {\n ReactComponentEnvironment.replaceNodeWithMarkupByID(\n prevComponentID,\n nextMarkup\n );\n },\n\n /**\n * @protected\n */\n _renderValidatedComponentWithoutOwnerOrContext: function() {\n var inst = this._instance;\n var renderedComponent = inst.render();\n if (\"production\" !== \"production\") {\n // We allow auto-mocks to proceed as if they're returning null.\n if (typeof renderedComponent === 'undefined' &&\n inst.render._isMockFunction) {\n // This is probably bad practice. Consider warning here and\n // deprecating this convenience.\n renderedComponent = null;\n }\n }\n\n return renderedComponent;\n },\n\n /**\n * @private\n */\n _renderValidatedComponent: function(childContext) {\n var renderedComponent;\n var previousContext = ReactContext.current;\n ReactContext.current = this._mergeChildContext(\n this._currentElement._context,\n childContext\n );\n ReactCurrentOwner.current = this;\n try {\n renderedComponent =\n this._renderValidatedComponentWithoutOwnerOrContext();\n } finally {\n ReactContext.current = previousContext;\n ReactCurrentOwner.current = null;\n }\n (\"production\" !== \"production\" ? invariant(\n // TODO: An `isValidNode` function would probably be more appropriate\n renderedComponent === null || renderedComponent === false ||\n ReactElement.isValidElement(renderedComponent),\n '%s.render(): A valid ReactComponent must be returned. You may have ' +\n 'returned undefined, an array or some other invalid object.',\n this.getName() || 'ReactCompositeComponent'\n ) : invariant(// TODO: An `isValidNode` function would probably be more appropriate\n renderedComponent === null || renderedComponent === false ||\n ReactElement.isValidElement(renderedComponent)));\n return renderedComponent;\n },\n\n /**\n * Lazily allocates the refs object and stores `component` as `ref`.\n *\n * @param {string} ref Reference name.\n * @param {component} component Component to store as `ref`.\n * @final\n * @private\n */\n attachRef: function(ref, component) {\n var inst = this.getPublicInstance();\n var refs = inst.refs === emptyObject ? (inst.refs = {}) : inst.refs;\n refs[ref] = component.getPublicInstance();\n },\n\n /**\n * Detaches a reference name.\n *\n * @param {string} ref Name to dereference.\n * @final\n * @private\n */\n detachRef: function(ref) {\n var refs = this.getPublicInstance().refs;\n delete refs[ref];\n },\n\n /**\n * Get a text description of the component that can be used to identify it\n * in error messages.\n * @return {string} The name or null.\n * @internal\n */\n getName: function() {\n var type = this._currentElement.type;\n var constructor = this._instance && this._instance.constructor;\n return (\n type.displayName || (constructor && constructor.displayName) ||\n type.name || (constructor && constructor.name) ||\n null\n );\n },\n\n /**\n * Get the publicly accessible representation of this component - i.e. what\n * is exposed by refs and returned by React.render. Can be null for stateless\n * components.\n *\n * @return {ReactComponent} the public component instance.\n * @internal\n */\n getPublicInstance: function() {\n return this._instance;\n },\n\n // Stub\n _instantiateReactComponent: null\n\n};\n\nReactPerf.measureMethods(\n ReactCompositeComponentMixin,\n 'ReactCompositeComponent',\n {\n mountComponent: 'mountComponent',\n updateComponent: 'updateComponent',\n _renderValidatedComponent: '_renderValidatedComponent'\n }\n);\n\nvar ReactCompositeComponent = {\n\n Mixin: ReactCompositeComponentMixin\n\n};\n\nmodule.exports = ReactCompositeComponent;\n\n},{\"./Object.assign\":27,\"./ReactComponentEnvironment\":37,\"./ReactContext\":39,\"./ReactCurrentOwner\":40,\"./ReactElement\":58,\"./ReactElementValidator\":59,\"./ReactInstanceMap\":68,\"./ReactLifeCycle\":69,\"./ReactNativeComponent\":74,\"./ReactPerf\":76,\"./ReactPropTypeLocationNames\":77,\"./ReactPropTypeLocations\":78,\"./ReactReconciler\":82,\"./ReactUpdates\":88,\"./emptyObject\":116,\"./invariant\":136,\"./shouldUpdateReactComponent\":152,\"./warning\":155}],39:[function(require,module,exports){\n/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactContext\n */\n\n'use strict';\n\nvar assign = require(\"./Object.assign\");\nvar emptyObject = require(\"./emptyObject\");\nvar warning = require(\"./warning\");\n\nvar didWarn = false;\n\n/**\n * Keeps track of the current context.\n *\n * The context is automatically passed down the component ownership hierarchy\n * and is accessible via `this.context` on ReactCompositeComponents.\n */\nvar ReactContext = {\n\n /**\n * @internal\n * @type {object}\n */\n current: emptyObject,\n\n /**\n * Temporarily extends the current context while executing scopedCallback.\n *\n * A typical use case might look like\n *\n * render: function() {\n * var children = ReactContext.withContext({foo: 'foo'}, () => (\n *\n * ));\n * return
{children}
;\n * }\n *\n * @param {object} newContext New context to merge into the existing context\n * @param {function} scopedCallback Callback to run with the new context\n * @return {ReactComponent|array}\n */\n withContext: function(newContext, scopedCallback) {\n if (\"production\" !== \"production\") {\n (\"production\" !== \"production\" ? warning(\n didWarn,\n 'withContext is deprecated and will be removed in a future version. ' +\n 'Use a wrapper component with getChildContext instead.'\n ) : null);\n\n didWarn = true;\n }\n\n var result;\n var previousContext = ReactContext.current;\n ReactContext.current = assign({}, previousContext, newContext);\n try {\n result = scopedCallback();\n } finally {\n ReactContext.current = previousContext;\n }\n return result;\n }\n\n};\n\nmodule.exports = ReactContext;\n\n},{\"./Object.assign\":27,\"./emptyObject\":116,\"./warning\":155}],40:[function(require,module,exports){\n/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactCurrentOwner\n */\n\n'use strict';\n\n/**\n * Keeps track of the current owner.\n *\n * The current owner is the component who should own any components that are\n * currently being constructed.\n *\n * The depth indicate how many composite components are above this render level.\n */\nvar ReactCurrentOwner = {\n\n /**\n * @internal\n * @type {ReactComponent}\n */\n current: null\n\n};\n\nmodule.exports = ReactCurrentOwner;\n\n},{}],41:[function(require,module,exports){\n/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactDOM\n * @typechecks static-only\n */\n\n'use strict';\n\nvar ReactElement = require(\"./ReactElement\");\nvar ReactElementValidator = require(\"./ReactElementValidator\");\n\nvar mapObject = require(\"./mapObject\");\n\n/**\n * Create a factory that creates HTML tag elements.\n *\n * @param {string} tag Tag name (e.g. `div`).\n * @private\n */\nfunction createDOMFactory(tag) {\n if (\"production\" !== \"production\") {\n return ReactElementValidator.createFactory(tag);\n }\n return ReactElement.createFactory(tag);\n}\n\n/**\n * Creates a mapping from supported HTML tags to `ReactDOMComponent` classes.\n * This is also accessible via `React.DOM`.\n *\n * @public\n */\nvar ReactDOM = mapObject({\n a: 'a',\n abbr: 'abbr',\n address: 'address',\n area: 'area',\n article: 'article',\n aside: 'aside',\n audio: 'audio',\n b: 'b',\n base: 'base',\n bdi: 'bdi',\n bdo: 'bdo',\n big: 'big',\n blockquote: 'blockquote',\n body: 'body',\n br: 'br',\n button: 'button',\n canvas: 'canvas',\n caption: 'caption',\n cite: 'cite',\n code: 'code',\n col: 'col',\n colgroup: 'colgroup',\n data: 'data',\n datalist: 'datalist',\n dd: 'dd',\n del: 'del',\n details: 'details',\n dfn: 'dfn',\n dialog: 'dialog',\n div: 'div',\n dl: 'dl',\n dt: 'dt',\n em: 'em',\n embed: 'embed',\n fieldset: 'fieldset',\n figcaption: 'figcaption',\n figure: 'figure',\n footer: 'footer',\n form: 'form',\n h1: 'h1',\n h2: 'h2',\n h3: 'h3',\n h4: 'h4',\n h5: 'h5',\n h6: 'h6',\n head: 'head',\n header: 'header',\n hr: 'hr',\n html: 'html',\n i: 'i',\n iframe: 'iframe',\n img: 'img',\n input: 'input',\n ins: 'ins',\n kbd: 'kbd',\n keygen: 'keygen',\n label: 'label',\n legend: 'legend',\n li: 'li',\n link: 'link',\n main: 'main',\n map: 'map',\n mark: 'mark',\n menu: 'menu',\n menuitem: 'menuitem',\n meta: 'meta',\n meter: 'meter',\n nav: 'nav',\n noscript: 'noscript',\n object: 'object',\n ol: 'ol',\n optgroup: 'optgroup',\n option: 'option',\n output: 'output',\n p: 'p',\n param: 'param',\n picture: 'picture',\n pre: 'pre',\n progress: 'progress',\n q: 'q',\n rp: 'rp',\n rt: 'rt',\n ruby: 'ruby',\n s: 's',\n samp: 'samp',\n script: 'script',\n section: 'section',\n select: 'select',\n small: 'small',\n source: 'source',\n span: 'span',\n strong: 'strong',\n style: 'style',\n sub: 'sub',\n summary: 'summary',\n sup: 'sup',\n table: 'table',\n tbody: 'tbody',\n td: 'td',\n textarea: 'textarea',\n tfoot: 'tfoot',\n th: 'th',\n thead: 'thead',\n time: 'time',\n title: 'title',\n tr: 'tr',\n track: 'track',\n u: 'u',\n ul: 'ul',\n 'var': 'var',\n video: 'video',\n wbr: 'wbr',\n\n // SVG\n circle: 'circle',\n clipPath: 'clipPath',\n defs: 'defs',\n ellipse: 'ellipse',\n g: 'g',\n line: 'line',\n linearGradient: 'linearGradient',\n mask: 'mask',\n path: 'path',\n pattern: 'pattern',\n polygon: 'polygon',\n polyline: 'polyline',\n radialGradient: 'radialGradient',\n rect: 'rect',\n stop: 'stop',\n svg: 'svg',\n text: 'text',\n tspan: 'tspan'\n\n}, createDOMFactory);\n\nmodule.exports = ReactDOM;\n\n},{\"./ReactElement\":58,\"./ReactElementValidator\":59,\"./mapObject\":143}],42:[function(require,module,exports){\n/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactDOMButton\n */\n\n'use strict';\n\nvar AutoFocusMixin = require(\"./AutoFocusMixin\");\nvar ReactBrowserComponentMixin = require(\"./ReactBrowserComponentMixin\");\nvar ReactClass = require(\"./ReactClass\");\nvar ReactElement = require(\"./ReactElement\");\n\nvar keyMirror = require(\"./keyMirror\");\n\nvar button = ReactElement.createFactory('button');\n\nvar mouseListenerNames = keyMirror({\n onClick: true,\n onDoubleClick: true,\n onMouseDown: true,\n onMouseMove: true,\n onMouseUp: true,\n onClickCapture: true,\n onDoubleClickCapture: true,\n onMouseDownCapture: true,\n onMouseMoveCapture: true,\n onMouseUpCapture: true\n});\n\n/**\n * Implements a