From 28fe327d75c57924aabc08555e58c7e08f61095e Mon Sep 17 00:00:00 2001 From: Furkan Yilmaz Date: Mon, 6 Jun 2016 10:14:17 -0700 Subject: [PATCH] Fixed Railgun showing inactive --- compiled.js | 18701 ++++++++++++++++++++++++++-------------------- compiled.js.map | 2 +- 2 files changed, 10558 insertions(+), 8145 deletions(-) diff --git a/compiled.js b/compiled.js index d61d884e..c69cf171 100644 --- a/compiled.js +++ b/compiled.js @@ -1,6 +1,6 @@ -(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) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var _Card2 = require('./Card'); +var React = _dereq_('react'); +var PropTypes = React.PropTypes; -var _Card3 = _interopRequireDefault(_Card2); +var _require = _dereq_('cf-util-route-handler'); -var _CardContent2 = require('./CardContent'); +var routeTo = _require.routeTo; -var _CardContent3 = _interopRequireDefault(_CardContent2); +var Link = function (_React$Component) { + _inherits(Link, _React$Component); -var _CardControl2 = require('./CardControl'); + function Link(props, context) { + _classCallCheck(this, Link); -var _CardControl3 = _interopRequireDefault(_CardControl2); + if (!props.to && !props.onClick) { + throw new Error(' requires either a `to` or `onClick` prop'); + } -var _CardDrawers2 = require('./CardDrawers'); + var _this = _possibleConstructorReturn(this, _React$Component.call(this, props, context)); -var _CardDrawers3 = _interopRequireDefault(_CardDrawers2); + _this.handleClick = function (e) { + e.preventDefault(); -var _CardLoadingText2 = require('./CardLoadingText'); + if (_this.props.disabled) { + return; + } -var _CardLoadingText3 = _interopRequireDefault(_CardLoadingText2); + if (_this.props.to) { + routeTo(_this.props.to); + } else { + _this.props.onClick(e); + } + }; -var _CardMessages2 = require('./CardMessages'); + return _this; + } -var _CardMessages3 = _interopRequireDefault(_CardMessages2); + Link.prototype.render = function render() { + var _props = this.props; + var tagName = _props.tagName; + var to = _props.to; + var children = _props.children; + var className = _props.className; + var disabled = _props.disabled; -var _CardSection2 = require('./CardSection'); + var props = _objectWithoutProperties(_props, ['tagName', 'to', 'children', 'className', 'disabled']); -var _CardSection3 = _interopRequireDefault(_CardSection2); + if (!props.href && tagName === 'a') { + props.href = to || '#!'; + } -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + if (!props.role) { + if (to && tagName !== 'a') { + props.role = 'link'; + } else if (!to) { + props.role = 'button'; + } + } + + props.className = 'cf-link'; + + if (disabled) { + props.className += ' cf-link--disabled'; + props.disabled = true; + } -exports.Card = _Card3.default; -exports.CardContent = _CardContent3.default; -exports.CardControl = _CardControl3.default; -exports.CardDrawers = _CardDrawers3.default; -exports.CardLoadingText = _CardLoadingText3.default; -exports.CardMessages = _CardMessages3.default; -exports.CardSection = _CardSection3.default; -},{"./Card":6,"./CardContent":7,"./CardControl":8,"./CardDrawers":9,"./CardLoadingText":10,"./CardMessages":11,"./CardSection":12}],16:[function(require,module,exports){ + if (className) { + props.className += ' ' + className; + } + + props.onClick = this.handleClick; + + return React.createElement(tagName, props, children); + }; + + return Link; +}(React.Component); + +Link.propTypes = { + to: PropTypes.string, + onClick: PropTypes.func, + tagName: PropTypes.string, + disabled: PropTypes.bool +}; +Link.defaultProps = { + tagName: 'a' +}; + + +module.exports = Link; +},{"cf-util-route-handler":18,"react":475}],17:[function(_dereq_,module,exports){ +'use strict'; + +module.exports = _dereq_('./Link'); +},{"./Link":16}],18:[function(_dereq_,module,exports){ +'use strict'; + +module.exports = _dereq_('./routeHandler'); +},{"./routeHandler":19}],19:[function(_dereq_,module,exports){ +'use strict'; + +var handler = void 0; + +function handleRoutes(callback) { + if (handler) { + console.error('Warning: Route Handler: Only one handler is allowed at a time'); + return; + } + + handler = callback; +} + +function routeTo(url) { + if (!handler) { + console.error('Warning: Route Handler: A handler needs to be setup before you can route'); + return; + } + + handler(url); +} + +function __resetRouteHandler() { + handler = null; +} + +module.exports = { handleRoutes: handleRoutes, routeTo: routeTo, __resetRouteHandler: __resetRouteHandler }; +},{}],20:[function(_dereq_,module,exports){ 'use strict'; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } @@ -674,7 +663,7 @@ function _possibleConstructorReturn(self, call) { if (!self) { throw new Referen function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var React = require('react'); +var React = _dereq_('react'); var PropTypes = React.PropTypes; var Checkbox = function (_React$Component) { @@ -730,8 +719,9 @@ Checkbox.propTypes = { onChange: PropTypes.func.isRequired }; + module.exports = Checkbox; -},{"react":493}],17:[function(require,module,exports){ +},{"react":475}],21:[function(_dereq_,module,exports){ 'use strict'; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } @@ -740,11 +730,11 @@ function _possibleConstructorReturn(self, call) { if (!self) { throw new Referen function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var React = require('react'); +var React = _dereq_('react'); var PropTypes = React.PropTypes; -var Checkbox = require('./Checkbox'); -var includes = require('lodash/includes'); +var Checkbox = _dereq_('./Checkbox'); +var includes = _dereq_('lodash/includes'); var CheckboxGroup = function (_React$Component) { _inherits(CheckboxGroup, _React$Component); @@ -806,25 +796,26 @@ CheckboxGroup.propTypes = { })).isRequired }; + module.exports = CheckboxGroup; -},{"./Checkbox":16,"lodash/includes":31,"react":493}],18:[function(require,module,exports){ +},{"./Checkbox":20,"lodash/includes":36,"react":475}],22:[function(_dereq_,module,exports){ 'use strict'; -exports.Checkbox = require('./Checkbox'); -exports.CheckboxGroup = require('./CheckboxGroup'); -},{"./Checkbox":16,"./CheckboxGroup":17}],19:[function(require,module,exports){ +exports.Checkbox = _dereq_('./Checkbox'); +exports.CheckboxGroup = _dereq_('./CheckboxGroup'); +},{"./Checkbox":20,"./CheckboxGroup":21}],23:[function(_dereq_,module,exports){ /** * A specialized version of `_.map` for arrays without support for iteratee * shorthands. * * @private - * @param {Array} array The array to iterate over. + * @param {Array} [array] The array to iterate over. * @param {Function} iteratee The function invoked per iteration. * @returns {Array} Returns the new mapped array. */ function arrayMap(array, iteratee) { var index = -1, - length = array.length, + length = array ? array.length : 0, result = Array(length); while (++index < length) { @@ -835,21 +826,20 @@ function arrayMap(array, iteratee) { module.exports = arrayMap; -},{}],20:[function(require,module,exports){ +},{}],24:[function(_dereq_,module,exports){ +var getPrototype = _dereq_('./_getPrototype'); + /** Used for built-in method references. */ var objectProto = Object.prototype; /** Used to check objects for own properties. */ var hasOwnProperty = objectProto.hasOwnProperty; -/** Built-in value references. */ -var getPrototypeOf = Object.getPrototypeOf; - /** * The base implementation of `_.has` without support for deep paths. * * @private - * @param {Object} object The object to query. + * @param {Object} [object] The object to query. * @param {Array|string} key The key to check. * @returns {boolean} Returns `true` if `key` exists, else `false`. */ @@ -857,14 +847,15 @@ function baseHas(object, key) { // Avoid a bug in IE 10-11 where objects with a [[Prototype]] of `null`, // that are composed entirely of index properties, return `false` for // `hasOwnProperty` checks of them. - return hasOwnProperty.call(object, key) || - (typeof object == 'object' && key in object && getPrototypeOf(object) === null); + return object != null && + (hasOwnProperty.call(object, key) || + (typeof object == 'object' && key in object && getPrototype(object) === null)); } module.exports = baseHas; -},{}],21:[function(require,module,exports){ -var indexOfNaN = require('./_indexOfNaN'); +},{"./_getPrototype":31}],25:[function(_dereq_,module,exports){ +var indexOfNaN = _dereq_('./_indexOfNaN'); /** * The base implementation of `_.indexOf` without `fromIndex` bounds checks. @@ -892,7 +883,7 @@ function baseIndexOf(array, value, fromIndex) { module.exports = baseIndexOf; -},{"./_indexOfNaN":28}],22:[function(require,module,exports){ +},{"./_indexOfNaN":33}],26:[function(_dereq_,module,exports){ /* Built-in method references for those with the same name as other `lodash` methods. */ var nativeKeys = Object.keys; @@ -901,7 +892,6 @@ var nativeKeys = Object.keys; * property of prototypes or treat sparse arrays as dense. * * @private - * @type Function * @param {Object} object The object to query. * @returns {Array} Returns the array of property names. */ @@ -911,13 +901,13 @@ function baseKeys(object) { module.exports = baseKeys; -},{}],23:[function(require,module,exports){ +},{}],27:[function(_dereq_,module,exports){ /** * The base implementation of `_.property` without support for deep paths. * * @private * @param {string} key The key of the property to get. - * @returns {Function} Returns the new function. + * @returns {Function} Returns the new accessor function. */ function baseProperty(key) { return function(object) { @@ -927,7 +917,7 @@ function baseProperty(key) { module.exports = baseProperty; -},{}],24:[function(require,module,exports){ +},{}],28:[function(_dereq_,module,exports){ /** * The base implementation of `_.times` without support for iteratee shorthands * or max array length checks. @@ -949,8 +939,8 @@ function baseTimes(n, iteratee) { module.exports = baseTimes; -},{}],25:[function(require,module,exports){ -var arrayMap = require('./_arrayMap'); +},{}],29:[function(_dereq_,module,exports){ +var arrayMap = _dereq_('./_arrayMap'); /** * The base implementation of `_.values` and `_.valuesIn` which creates an @@ -970,14 +960,15 @@ function baseValues(object, props) { module.exports = baseValues; -},{"./_arrayMap":19}],26:[function(require,module,exports){ -var baseProperty = require('./_baseProperty'); +},{"./_arrayMap":23}],30:[function(_dereq_,module,exports){ +var baseProperty = _dereq_('./_baseProperty'); /** * Gets the "length" property value of `object`. * - * **Note:** This function is used to avoid a [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792) - * that affects Safari on at least iOS 8.1-8.3 ARM64. + * **Note:** This function is used to avoid a + * [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792) that affects + * Safari on at least iOS 8.1-8.3 ARM64. * * @private * @param {Object} object The object to query. @@ -987,12 +978,29 @@ var getLength = baseProperty('length'); module.exports = getLength; -},{"./_baseProperty":23}],27:[function(require,module,exports){ -var baseTimes = require('./_baseTimes'), - isArguments = require('./isArguments'), - isArray = require('./isArray'), - isLength = require('./isLength'), - isString = require('./isString'); +},{"./_baseProperty":27}],31:[function(_dereq_,module,exports){ +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeGetPrototype = Object.getPrototypeOf; + +/** + * Gets the `[[Prototype]]` of `value`. + * + * @private + * @param {*} value The value to query. + * @returns {null|Object} Returns the `[[Prototype]]`. + */ +function getPrototype(value) { + return nativeGetPrototype(Object(value)); +} + +module.exports = getPrototype; + +},{}],32:[function(_dereq_,module,exports){ +var baseTimes = _dereq_('./_baseTimes'), + isArguments = _dereq_('./isArguments'), + isArray = _dereq_('./isArray'), + isLength = _dereq_('./isLength'), + isString = _dereq_('./isString'); /** * Creates an array of index keys for `object` values of arrays, @@ -1013,7 +1021,7 @@ function indexKeys(object) { module.exports = indexKeys; -},{"./_baseTimes":24,"./isArguments":32,"./isArray":33,"./isLength":37,"./isString":40}],28:[function(require,module,exports){ +},{"./_baseTimes":28,"./isArguments":37,"./isArray":38,"./isLength":42,"./isString":45}],33:[function(_dereq_,module,exports){ /** * Gets the index at which the first occurrence of `NaN` is found in `array`. * @@ -1025,7 +1033,7 @@ module.exports = indexKeys; */ function indexOfNaN(array, fromIndex, fromRight) { var length = array.length, - index = fromIndex + (fromRight ? 0 : -1); + index = fromIndex + (fromRight ? 1 : -1); while ((fromRight ? index-- : ++index < length)) { var other = array[index]; @@ -1038,7 +1046,7 @@ function indexOfNaN(array, fromIndex, fromRight) { module.exports = indexOfNaN; -},{}],29:[function(require,module,exports){ +},{}],34:[function(_dereq_,module,exports){ /** Used as references for various `Number` constants. */ var MAX_SAFE_INTEGER = 9007199254740991; @@ -1054,14 +1062,15 @@ var reIsUint = /^(?:0|[1-9]\d*)$/; * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. */ function isIndex(value, length) { - value = (typeof value == 'number' || reIsUint.test(value)) ? +value : -1; length = length == null ? MAX_SAFE_INTEGER : length; - return value > -1 && value % 1 == 0 && value < length; + return !!length && + (typeof value == 'number' || reIsUint.test(value)) && + (value > -1 && value % 1 == 0 && value < length); } module.exports = isIndex; -},{}],30:[function(require,module,exports){ +},{}],35:[function(_dereq_,module,exports){ /** Used for built-in method references. */ var objectProto = Object.prototype; @@ -1081,29 +1090,31 @@ function isPrototype(value) { module.exports = isPrototype; -},{}],31:[function(require,module,exports){ -var baseIndexOf = require('./_baseIndexOf'), - isArrayLike = require('./isArrayLike'), - isString = require('./isString'), - toInteger = require('./toInteger'), - values = require('./values'); +},{}],36:[function(_dereq_,module,exports){ +var baseIndexOf = _dereq_('./_baseIndexOf'), + isArrayLike = _dereq_('./isArrayLike'), + isString = _dereq_('./isString'), + toInteger = _dereq_('./toInteger'), + values = _dereq_('./values'); /* Built-in method references for those with the same name as other `lodash` methods. */ var nativeMax = Math.max; /** - * Checks if `value` is in `collection`. If `collection` is a string it's checked - * for a substring of `value`, otherwise [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) + * Checks if `value` is in `collection`. If `collection` is a string, it's + * checked for a substring of `value`, otherwise + * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) * is used for equality comparisons. If `fromIndex` is negative, it's used as * the offset from the end of `collection`. * * @static * @memberOf _ + * @since 0.1.0 * @category Collection * @param {Array|Object|string} collection The collection to search. * @param {*} value The value to search for. * @param {number} [fromIndex=0] The index to search from. - * @param- {Object} [guard] Enables use as an iteratee for functions like `_.reduce`. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`. * @returns {boolean} Returns `true` if `value` is found, else `false`. * @example * @@ -1134,8 +1145,8 @@ function includes(collection, value, fromIndex, guard) { module.exports = includes; -},{"./_baseIndexOf":21,"./isArrayLike":34,"./isString":40,"./toInteger":42,"./values":44}],32:[function(require,module,exports){ -var isArrayLikeObject = require('./isArrayLikeObject'); +},{"./_baseIndexOf":25,"./isArrayLike":39,"./isString":45,"./toInteger":49,"./values":51}],37:[function(_dereq_,module,exports){ +var isArrayLikeObject = _dereq_('./isArrayLikeObject'); /** `Object#toString` result references. */ var argsTag = '[object Arguments]'; @@ -1147,7 +1158,8 @@ var objectProto = Object.prototype; var hasOwnProperty = objectProto.hasOwnProperty; /** - * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) * of values. */ var objectToString = objectProto.toString; @@ -1160,9 +1172,11 @@ var propertyIsEnumerable = objectProto.propertyIsEnumerable; * * @static * @memberOf _ + * @since 0.1.0 * @category Lang * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. + * @returns {boolean} Returns `true` if `value` is correctly classified, + * else `false`. * @example * * _.isArguments(function() { return arguments; }()); @@ -1179,16 +1193,18 @@ function isArguments(value) { module.exports = isArguments; -},{"./isArrayLikeObject":35}],33:[function(require,module,exports){ +},{"./isArrayLikeObject":40}],38:[function(_dereq_,module,exports){ /** * Checks if `value` is classified as an `Array` object. * * @static * @memberOf _ - * @type Function + * @since 0.1.0 + * @type {Function} * @category Lang * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. + * @returns {boolean} Returns `true` if `value` is correctly classified, + * else `false`. * @example * * _.isArray([1, 2, 3]); @@ -1207,10 +1223,10 @@ var isArray = Array.isArray; module.exports = isArray; -},{}],34:[function(require,module,exports){ -var getLength = require('./_getLength'), - isFunction = require('./isFunction'), - isLength = require('./isLength'); +},{}],39:[function(_dereq_,module,exports){ +var getLength = _dereq_('./_getLength'), + isFunction = _dereq_('./isFunction'), + isLength = _dereq_('./isLength'); /** * Checks if `value` is array-like. A value is considered array-like if it's @@ -1219,7 +1235,7 @@ var getLength = require('./_getLength'), * * @static * @memberOf _ - * @type Function + * @since 4.0.0 * @category Lang * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is array-like, else `false`. @@ -1238,15 +1254,14 @@ var getLength = require('./_getLength'), * // => false */ function isArrayLike(value) { - return value != null && - !(typeof value == 'function' && isFunction(value)) && isLength(getLength(value)); + return value != null && isLength(getLength(value)) && !isFunction(value); } module.exports = isArrayLike; -},{"./_getLength":26,"./isFunction":36,"./isLength":37}],35:[function(require,module,exports){ -var isArrayLike = require('./isArrayLike'), - isObjectLike = require('./isObjectLike'); +},{"./_getLength":30,"./isFunction":41,"./isLength":42}],40:[function(_dereq_,module,exports){ +var isArrayLike = _dereq_('./isArrayLike'), + isObjectLike = _dereq_('./isObjectLike'); /** * This method is like `_.isArrayLike` except that it also checks if `value` @@ -1254,10 +1269,11 @@ var isArrayLike = require('./isArrayLike'), * * @static * @memberOf _ - * @type Function + * @since 4.0.0 * @category Lang * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array-like object, else `false`. + * @returns {boolean} Returns `true` if `value` is an array-like object, + * else `false`. * @example * * _.isArrayLikeObject([1, 2, 3]); @@ -1278,8 +1294,8 @@ function isArrayLikeObject(value) { module.exports = isArrayLikeObject; -},{"./isArrayLike":34,"./isObjectLike":39}],36:[function(require,module,exports){ -var isObject = require('./isObject'); +},{"./isArrayLike":39,"./isObjectLike":44}],41:[function(_dereq_,module,exports){ +var isObject = _dereq_('./isObject'); /** `Object#toString` result references. */ var funcTag = '[object Function]', @@ -1289,7 +1305,8 @@ var funcTag = '[object Function]', var objectProto = Object.prototype; /** - * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) * of values. */ var objectToString = objectProto.toString; @@ -1299,9 +1316,11 @@ var objectToString = objectProto.toString; * * @static * @memberOf _ + * @since 0.1.0 * @category Lang * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. + * @returns {boolean} Returns `true` if `value` is correctly classified, + * else `false`. * @example * * _.isFunction(_); @@ -1312,28 +1331,31 @@ var objectToString = objectProto.toString; */ function isFunction(value) { // The use of `Object#toString` avoids issues with the `typeof` operator - // in Safari 8 which returns 'object' for typed array constructors, and - // PhantomJS 1.9 which returns 'function' for `NodeList` instances. + // in Safari 8 which returns 'object' for typed array and weak map constructors, + // and PhantomJS 1.9 which returns 'function' for `NodeList` instances. var tag = isObject(value) ? objectToString.call(value) : ''; return tag == funcTag || tag == genTag; } module.exports = isFunction; -},{"./isObject":38}],37:[function(require,module,exports){ +},{"./isObject":43}],42:[function(_dereq_,module,exports){ /** Used as references for various `Number` constants. */ var MAX_SAFE_INTEGER = 9007199254740991; /** * Checks if `value` is a valid array-like length. * - * **Note:** This function is loosely based on [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength). + * **Note:** This function is loosely based on + * [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength). * * @static * @memberOf _ + * @since 4.0.0 * @category Lang * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. + * @returns {boolean} Returns `true` if `value` is a valid length, + * else `false`. * @example * * _.isLength(3); @@ -1349,18 +1371,21 @@ var MAX_SAFE_INTEGER = 9007199254740991; * // => false */ function isLength(value) { - return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; + return typeof value == 'number' && + value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; } module.exports = isLength; -},{}],38:[function(require,module,exports){ +},{}],43:[function(_dereq_,module,exports){ /** - * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`. - * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * Checks if `value` is the + * [language type](http://www.ecma-international.org/ecma-262/6.0/#sec-ecmascript-language-types) + * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) * * @static * @memberOf _ + * @since 0.1.0 * @category Lang * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is an object, else `false`. @@ -1385,13 +1410,14 @@ function isObject(value) { module.exports = isObject; -},{}],39:[function(require,module,exports){ +},{}],44:[function(_dereq_,module,exports){ /** * Checks if `value` is object-like. A value is object-like if it's not `null` * and has a `typeof` result of "object". * * @static * @memberOf _ + * @since 4.0.0 * @category Lang * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is object-like, else `false`. @@ -1415,9 +1441,9 @@ function isObjectLike(value) { module.exports = isObjectLike; -},{}],40:[function(require,module,exports){ -var isArray = require('./isArray'), - isObjectLike = require('./isObjectLike'); +},{}],45:[function(_dereq_,module,exports){ +var isArray = _dereq_('./isArray'), + isObjectLike = _dereq_('./isObjectLike'); /** `Object#toString` result references. */ var stringTag = '[object String]'; @@ -1426,7 +1452,8 @@ var stringTag = '[object String]'; var objectProto = Object.prototype; /** - * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) * of values. */ var objectToString = objectProto.toString; @@ -1435,10 +1462,12 @@ var objectToString = objectProto.toString; * Checks if `value` is classified as a `String` primitive or object. * * @static + * @since 0.1.0 * @memberOf _ * @category Lang * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. + * @returns {boolean} Returns `true` if `value` is correctly classified, + * else `false`. * @example * * _.isString('abc'); @@ -1454,13 +1483,54 @@ function isString(value) { module.exports = isString; -},{"./isArray":33,"./isObjectLike":39}],41:[function(require,module,exports){ -var baseHas = require('./_baseHas'), - baseKeys = require('./_baseKeys'), - indexKeys = require('./_indexKeys'), - isArrayLike = require('./isArrayLike'), - isIndex = require('./_isIndex'), - isPrototype = require('./_isPrototype'); +},{"./isArray":38,"./isObjectLike":44}],46:[function(_dereq_,module,exports){ +var isObjectLike = _dereq_('./isObjectLike'); + +/** `Object#toString` result references. */ +var symbolTag = '[object Symbol]'; + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) + * of values. + */ +var objectToString = objectProto.toString; + +/** + * Checks if `value` is classified as a `Symbol` primitive or object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is correctly classified, + * else `false`. + * @example + * + * _.isSymbol(Symbol.iterator); + * // => true + * + * _.isSymbol('abc'); + * // => false + */ +function isSymbol(value) { + return typeof value == 'symbol' || + (isObjectLike(value) && objectToString.call(value) == symbolTag); +} + +module.exports = isSymbol; + +},{"./isObjectLike":44}],47:[function(_dereq_,module,exports){ +var baseHas = _dereq_('./_baseHas'), + baseKeys = _dereq_('./_baseKeys'), + indexKeys = _dereq_('./_indexKeys'), + isArrayLike = _dereq_('./isArrayLike'), + isIndex = _dereq_('./_isIndex'), + isPrototype = _dereq_('./_isPrototype'); /** * Creates an array of the own enumerable property names of `object`. @@ -1470,6 +1540,7 @@ var baseHas = require('./_baseHas'), * for more details. * * @static + * @since 0.1.0 * @memberOf _ * @category Object * @param {Object} object The object to query. @@ -1511,26 +1582,68 @@ function keys(object) { module.exports = keys; -},{"./_baseHas":20,"./_baseKeys":22,"./_indexKeys":27,"./_isIndex":29,"./_isPrototype":30,"./isArrayLike":34}],42:[function(require,module,exports){ -var toNumber = require('./toNumber'); +},{"./_baseHas":24,"./_baseKeys":26,"./_indexKeys":32,"./_isIndex":34,"./_isPrototype":35,"./isArrayLike":39}],48:[function(_dereq_,module,exports){ +var toNumber = _dereq_('./toNumber'); /** Used as references for various `Number` constants. */ var INFINITY = 1 / 0, MAX_INTEGER = 1.7976931348623157e+308; +/** + * Converts `value` to a finite number. + * + * @static + * @memberOf _ + * @since 4.12.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {number} Returns the converted number. + * @example + * + * _.toFinite(3.2); + * // => 3.2 + * + * _.toFinite(Number.MIN_VALUE); + * // => 5e-324 + * + * _.toFinite(Infinity); + * // => 1.7976931348623157e+308 + * + * _.toFinite('3.2'); + * // => 3.2 + */ +function toFinite(value) { + if (!value) { + return value === 0 ? value : 0; + } + value = toNumber(value); + if (value === INFINITY || value === -INFINITY) { + var sign = (value < 0 ? -1 : 1); + return sign * MAX_INTEGER; + } + return value === value ? value : 0; +} + +module.exports = toFinite; + +},{"./toNumber":50}],49:[function(_dereq_,module,exports){ +var toFinite = _dereq_('./toFinite'); + /** * Converts `value` to an integer. * - * **Note:** This function is loosely based on [`ToInteger`](http://www.ecma-international.org/ecma-262/6.0/#sec-tointeger). + * **Note:** This method is loosely based on + * [`ToInteger`](http://www.ecma-international.org/ecma-262/6.0/#sec-tointeger). * * @static * @memberOf _ + * @since 4.0.0 * @category Lang * @param {*} value The value to convert. * @returns {number} Returns the converted integer. * @example * - * _.toInteger(3); + * _.toInteger(3.2); * // => 3 * * _.toInteger(Number.MIN_VALUE); @@ -1539,27 +1652,22 @@ var INFINITY = 1 / 0, * _.toInteger(Infinity); * // => 1.7976931348623157e+308 * - * _.toInteger('3'); + * _.toInteger('3.2'); * // => 3 */ function toInteger(value) { - if (!value) { - return value === 0 ? value : 0; - } - value = toNumber(value); - if (value === INFINITY || value === -INFINITY) { - var sign = (value < 0 ? -1 : 1); - return sign * MAX_INTEGER; - } - var remainder = value % 1; - return value === value ? (remainder ? value - remainder : value) : 0; + var result = toFinite(value), + remainder = result % 1; + + return result === result ? (remainder ? result - remainder : result) : 0; } module.exports = toInteger; -},{"./toNumber":43}],43:[function(require,module,exports){ -var isFunction = require('./isFunction'), - isObject = require('./isObject'); +},{"./toFinite":48}],50:[function(_dereq_,module,exports){ +var isFunction = _dereq_('./isFunction'), + isObject = _dereq_('./isObject'), + isSymbol = _dereq_('./isSymbol'); /** Used as references for various `Number` constants. */ var NAN = 0 / 0; @@ -1584,13 +1692,14 @@ var freeParseInt = parseInt; * * @static * @memberOf _ + * @since 4.0.0 * @category Lang * @param {*} value The value to process. * @returns {number} Returns the number. * @example * - * _.toNumber(3); - * // => 3 + * _.toNumber(3.2); + * // => 3.2 * * _.toNumber(Number.MIN_VALUE); * // => 5e-324 @@ -1598,10 +1707,16 @@ var freeParseInt = parseInt; * _.toNumber(Infinity); * // => Infinity * - * _.toNumber('3'); - * // => 3 + * _.toNumber('3.2'); + * // => 3.2 */ function toNumber(value) { + if (typeof value == 'number') { + return value; + } + if (isSymbol(value)) { + return NAN; + } if (isObject(value)) { var other = isFunction(value.valueOf) ? value.valueOf() : value; value = isObject(other) ? (other + '') : other; @@ -1618,16 +1733,17 @@ function toNumber(value) { module.exports = toNumber; -},{"./isFunction":36,"./isObject":38}],44:[function(require,module,exports){ -var baseValues = require('./_baseValues'), - keys = require('./keys'); +},{"./isFunction":41,"./isObject":43,"./isSymbol":46}],51:[function(_dereq_,module,exports){ +var baseValues = _dereq_('./_baseValues'), + keys = _dereq_('./keys'); /** - * Creates an array of the own enumerable property values of `object`. + * Creates an array of the own enumerable string keyed property values of `object`. * * **Note:** Non-object values are coerced to objects. * * @static + * @since 0.1.0 * @memberOf _ * @category Object * @param {Object} object The object to query. @@ -1653,17 +1769,35 @@ function values(object) { module.exports = values; -},{"./_baseValues":25,"./keys":41}],45:[function(require,module,exports){ +},{"./_baseValues":29,"./keys":47}],52:[function(_dereq_,module,exports){ 'use strict'; -var React = require('react'); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var React = _dereq_('react'); var PropTypes = React.PropTypes; -function Heading(props) { - var tagName = 'h' + props.size; - var className = 'cf-heading cf-heading--' + props.size; - return React.createElement(tagName, { className: className }, props.children); -} +var Heading = function (_React$Component) { + _inherits(Heading, _React$Component); + + function Heading() { + _classCallCheck(this, Heading); + + return _possibleConstructorReturn(this, _React$Component.apply(this, arguments)); + } + + Heading.prototype.render = function render() { + var tagName = 'h' + this.props.size; + var className = 'cf-heading cf-heading--' + this.props.size; + return React.createElement(tagName, { className: className }, this.props.children); + }; + + return Heading; +}(React.Component); Heading.propTypes = { size: PropTypes.oneOf([1, 2, 3, 4, 5, 6]).isRequired @@ -1671,39 +1805,75 @@ Heading.propTypes = { module.exports = Heading; -},{"react":493}],46:[function(require,module,exports){ +},{"react":475}],53:[function(_dereq_,module,exports){ "use strict"; -var React = require('react'); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } -function HeadingCaption(props) { - return React.createElement( - "small", - { className: "cf-heading__caption" }, - props.children - ); -} +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var React = _dereq_('react'); + +var HeadingCaption = function (_React$Component) { + _inherits(HeadingCaption, _React$Component); + + function HeadingCaption() { + _classCallCheck(this, HeadingCaption); + + return _possibleConstructorReturn(this, _React$Component.apply(this, arguments)); + } + + HeadingCaption.prototype.render = function render() { + return React.createElement( + "small", + { className: "cf-heading__caption" }, + this.props.children + ); + }; + + return HeadingCaption; +}(React.Component); module.exports = HeadingCaption; -},{"react":493}],47:[function(require,module,exports){ +},{"react":475}],54:[function(_dereq_,module,exports){ 'use strict'; -exports.Heading = require('./Heading'); -exports.HeadingCaption = require('./HeadingCaption'); -},{"./Heading":45,"./HeadingCaption":46}],48:[function(require,module,exports){ +exports.Heading = _dereq_('./Heading'); +exports.HeadingCaption = _dereq_('./HeadingCaption'); +},{"./Heading":52,"./HeadingCaption":53}],55:[function(_dereq_,module,exports){ 'use strict'; -var React = require('react'); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var React = _dereq_('react'); var PropTypes = React.PropTypes; -function LayoutColumn(props) { - var width = (props.width * 100).toPrecision(5) + '%'; - return React.createElement( - 'div', - { className: 'cf-layout__column', style: { width: width } }, - props.children - ); -} +var LayoutColumn = function (_React$Component) { + _inherits(LayoutColumn, _React$Component); + + function LayoutColumn() { + _classCallCheck(this, LayoutColumn); + + return _possibleConstructorReturn(this, _React$Component.apply(this, arguments)); + } + + LayoutColumn.prototype.render = function render() { + var width = (this.props.width * 100).toPrecision(5) + '%'; + return React.createElement( + 'div', + { className: 'cf-layout__column', style: { width: width } }, + this.props.children + ); + }; + + return LayoutColumn; +}(React.Component); LayoutColumn.propTypes = { width: PropTypes.number.isRequired @@ -1711,52 +1881,78 @@ LayoutColumn.propTypes = { module.exports = LayoutColumn; -},{"react":493}],49:[function(require,module,exports){ +},{"react":475}],56:[function(_dereq_,module,exports){ "use strict"; -var React = require('react'); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } -function LayoutContainer(props) { - return React.createElement( - "div", - { className: "cf-layout__container" }, - props.children - ); -} +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var React = _dereq_('react'); + +var LayoutContainer = function (_React$Component) { + _inherits(LayoutContainer, _React$Component); + + function LayoutContainer() { + _classCallCheck(this, LayoutContainer); + + return _possibleConstructorReturn(this, _React$Component.apply(this, arguments)); + } + + LayoutContainer.prototype.render = function render() { + return React.createElement( + "div", + { className: "cf-layout__container" }, + this.props.children + ); + }; + + return LayoutContainer; +}(React.Component); module.exports = LayoutContainer; -},{"react":493}],50:[function(require,module,exports){ +},{"react":475}],57:[function(_dereq_,module,exports){ "use strict"; -var React = require('react'); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } -function LayoutRow(props) { - return React.createElement( - "div", - { className: "cf-layout__row" }, - props.children - ); -} +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } -module.exports = LayoutRow; -},{"react":493}],51:[function(require,module,exports){ -'use strict'; +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -exports.LayoutContainer = require('./LayoutContainer'); -exports.LayoutRow = require('./LayoutRow'); -exports.LayoutColumn = require('./LayoutColumn'); -},{"./LayoutColumn":48,"./LayoutContainer":49,"./LayoutRow":50}],52:[function(require,module,exports){ -'use strict'; +var React = _dereq_('react'); -exports.__esModule = true; +var LayoutRow = function (_React$Component) { + _inherits(LayoutRow, _React$Component); -var _react = require('react'); + function LayoutRow() { + _classCallCheck(this, LayoutRow); -var _react2 = _interopRequireDefault(_react); + return _possibleConstructorReturn(this, _React$Component.apply(this, arguments)); + } -var _cfUtilRouteHandler = require('cf-util-route-handler'); + LayoutRow.prototype.render = function render() { + return React.createElement( + "div", + { className: "cf-layout__row" }, + this.props.children + ); + }; -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + return LayoutRow; +}(React.Component); + +module.exports = LayoutRow; +},{"react":475}],58:[function(_dereq_,module,exports){ +'use strict'; + +exports.LayoutContainer = _dereq_('./LayoutContainer'); +exports.LayoutRow = _dereq_('./LayoutRow'); +exports.LayoutColumn = _dereq_('./LayoutColumn'); +},{"./LayoutColumn":55,"./LayoutContainer":56,"./LayoutRow":57}],59:[function(_dereq_,module,exports){ +'use strict'; function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; } @@ -1766,7 +1962,14 @@ function _possibleConstructorReturn(self, call) { if (!self) { throw new Referen function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var Link = (function (_React$Component) { +var React = _dereq_('react'); +var PropTypes = React.PropTypes; + +var _require = _dereq_('cf-util-route-handler'); + +var routeTo = _require.routeTo; + +var Link = function (_React$Component) { _inherits(Link, _React$Component); function Link(props, context) { @@ -1786,7 +1989,7 @@ var Link = (function (_React$Component) { } if (_this.props.to) { - (0, _cfUtilRouteHandler.routeTo)(_this.props.to); + routeTo(_this.props.to); } else { _this.props.onClick(e); } @@ -1830,36 +2033,26 @@ var Link = (function (_React$Component) { props.onClick = this.handleClick; - return _react2.default.createElement(tagName, props, children); + return React.createElement(tagName, props, children); }; return Link; -})(_react2.default.Component); +}(React.Component); Link.propTypes = { - to: _react.PropTypes.string, - onClick: _react.PropTypes.func, - tagName: _react.PropTypes.string, - disabled: _react.PropTypes.bool + to: PropTypes.string, + onClick: PropTypes.func, + tagName: PropTypes.string, + disabled: PropTypes.bool }; Link.defaultProps = { tagName: 'a' }; -exports.default = Link; -},{"cf-util-route-handler":54,"react":493}],53:[function(require,module,exports){ -'use strict'; -exports.__esModule = true; -exports.default = undefined; - -var _Link = require('./Link'); - -var _Link2 = _interopRequireDefault(_Link); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -exports.default = _Link2.default; -},{"./Link":52}],54:[function(require,module,exports){ +module.exports = Link; +},{"cf-util-route-handler":61,"react":475}],60:[function(_dereq_,module,exports){ +arguments[4][17][0].apply(exports,arguments) +},{"./Link":59,"dup":17}],61:[function(_dereq_,module,exports){ 'use strict'; exports.__esModule = true; @@ -1882,27 +2075,45 @@ function routeTo(url) { handler(url); } -},{}],55:[function(require,module,exports){ +},{}],62:[function(_dereq_,module,exports){ 'use strict'; -var React = require('react'); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var React = _dereq_('react'); var PropTypes = React.PropTypes; -function List(props) { - var tagName = 'ul'; - var className = 'cf-list'; +var List = function (_React$Component) { + _inherits(List, _React$Component); - if (props.ordered) { - tagName = 'ol'; - className += ' cf-list--ordered'; - } + function List() { + _classCallCheck(this, List); - if (props.unstyled) { - className += ' cf-list--unstyled'; + return _possibleConstructorReturn(this, _React$Component.apply(this, arguments)); } - return React.createElement(tagName, { className: className }, props.children); -} + List.prototype.render = function render() { + var tagName = 'ul'; + var className = 'cf-list'; + + if (this.props.ordered) { + tagName = 'ol'; + className += ' cf-list--ordered'; + } + + if (this.props.unstyled) { + className += ' cf-list--unstyled'; + } + + return React.createElement(tagName, { className: className }, this.props.children); + }; + + return List; +}(React.Component); List.propTypes = { ordered: PropTypes.bool, @@ -1913,27 +2124,46 @@ List.defaultProps = { unstyled: false }; + module.exports = List; -},{"react":493}],56:[function(require,module,exports){ +},{"react":475}],63:[function(_dereq_,module,exports){ "use strict"; -var React = require('react'); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } -function ListItem(props) { - return React.createElement( - "li", - { className: "cf-list__item" }, - props.children - ); -} +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var React = _dereq_('react'); + +var ListItem = function (_React$Component) { + _inherits(ListItem, _React$Component); + + function ListItem() { + _classCallCheck(this, ListItem); + + return _possibleConstructorReturn(this, _React$Component.apply(this, arguments)); + } + + ListItem.prototype.render = function render() { + return React.createElement( + "li", + { className: "cf-list__item" }, + this.props.children + ); + }; + + return ListItem; +}(React.Component); module.exports = ListItem; -},{"react":493}],57:[function(require,module,exports){ +},{"react":475}],64:[function(_dereq_,module,exports){ 'use strict'; -exports.List = require('./List'); -exports.ListItem = require('./ListItem'); -},{"./List":55,"./ListItem":56}],58:[function(require,module,exports){ +exports.List = _dereq_('./List'); +exports.ListItem = _dereq_('./ListItem'); +},{"./List":62,"./ListItem":63}],65:[function(_dereq_,module,exports){ 'use strict'; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } @@ -1942,16 +2172,16 @@ function _possibleConstructorReturn(self, call) { if (!self) { throw new Referen function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var React = require('react'); +var React = _dereq_('react'); var PropTypes = React.PropTypes; -var ReactModal2 = require('react-modal2').default; +var ReactModal2 = _dereq_('react-modal2').default; -var _require = require('react-gateway'); +var _require = _dereq_('react-gateway'); var Gateway = _require.Gateway; -var ReactCSSTransitionGroup = require('react-addons-css-transition-group'); +var ReactCSSTransitionGroup = _dereq_('react-addons-css-transition-group'); var Modal = function (_React$Component) { _inherits(Modal, _React$Component); @@ -2020,10 +2250,10 @@ Modal.defaultProps = { }; module.exports = Modal; -},{"react":493,"react-addons-css-transition-group":253,"react-gateway":70,"react-modal2":72}],59:[function(require,module,exports){ +},{"react":475,"react-addons-css-transition-group":235,"react-gateway":244,"react-modal2":74}],66:[function(_dereq_,module,exports){ "use strict"; -var React = require('react'); +var React = _dereq_('react'); function ModalActions(props) { return React.createElement( @@ -2034,10 +2264,10 @@ function ModalActions(props) { } module.exports = ModalActions; -},{"react":493}],60:[function(require,module,exports){ +},{"react":475}],67:[function(_dereq_,module,exports){ "use strict"; -var React = require('react'); +var React = _dereq_('react'); function ModalBody(props) { return React.createElement( @@ -2048,10 +2278,10 @@ function ModalBody(props) { } module.exports = ModalBody; -},{"react":493}],61:[function(require,module,exports){ +},{"react":475}],68:[function(_dereq_,module,exports){ "use strict"; -var React = require('react'); +var React = _dereq_('react'); var PropTypes = React.PropTypes; function ModalClose(props) { @@ -2063,10 +2293,10 @@ ModalClose.propTypes = { }; module.exports = ModalClose; -},{"react":493}],62:[function(require,module,exports){ +},{"react":475}],69:[function(_dereq_,module,exports){ 'use strict'; -var React = require('react'); +var React = _dereq_('react'); var PropTypes = React.PropTypes; function ModalFooter(props) { @@ -2091,10 +2321,10 @@ ModalFooter.defaultProps = { }; module.exports = ModalFooter; -},{"react":493}],63:[function(require,module,exports){ +},{"react":475}],70:[function(_dereq_,module,exports){ "use strict"; -var React = require('react'); +var React = _dereq_('react'); function ModalHeader(props) { return React.createElement( @@ -2105,10 +2335,10 @@ function ModalHeader(props) { } module.exports = ModalHeader; -},{"react":493}],64:[function(require,module,exports){ +},{"react":475}],71:[function(_dereq_,module,exports){ "use strict"; -var React = require('react'); +var React = _dereq_('react'); function ModalTitle(props) { return React.createElement( @@ -2119,302 +2349,34 @@ function ModalTitle(props) { } module.exports = ModalTitle; -},{"react":493}],65:[function(require,module,exports){ +},{"react":475}],72:[function(_dereq_,module,exports){ 'use strict'; -exports.Modal = require('./Modal'); -exports.ModalActions = require('./ModalActions'); -exports.ModalBody = require('./ModalBody'); -exports.ModalClose = require('./ModalClose'); -exports.ModalFooter = require('./ModalFooter'); -exports.ModalHeader = require('./ModalHeader'); -exports.ModalTitle = require('./ModalTitle'); -},{"./Modal":58,"./ModalActions":59,"./ModalBody":60,"./ModalClose":61,"./ModalFooter":62,"./ModalHeader":63,"./ModalTitle":64}],66:[function(require,module,exports){ -'use strict'; - -exports.__esModule = true; - -var _react = require('react'); - -var _react2 = _interopRequireDefault(_react); - -var _GatewayRegistry = require('./GatewayRegistry'); - -var _GatewayRegistry2 = _interopRequireDefault(_GatewayRegistry); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var Gateway = (function (_React$Component) { - _inherits(Gateway, _React$Component); - - function Gateway(props, context) { - _classCallCheck(this, Gateway); - - var _this = _possibleConstructorReturn(this, _React$Component.call(this, props, context)); - - _this.gatewayRegistry = context.gatewayRegistry; - return _this; - } - - Gateway.prototype.componentWillMount = function componentWillMount() { - this.renderIntoGatewayNode(this.props); - }; - - Gateway.prototype.componentWillReceiveProps = function componentWillReceiveProps(props) { - this.gatewayRegistry.clearChild(this.props.into); - this.renderIntoGatewayNode(props); - }; - - Gateway.prototype.componentWillUnmount = function componentWillUnmount() { - this.gatewayRegistry.removeChild(this.props.into); - }; - - Gateway.prototype.renderIntoGatewayNode = function renderIntoGatewayNode(props) { - delete props.ref; - this.gatewayRegistry.addChild(this.props.into, props.children); - }; - - Gateway.prototype.render = function render() { - return null; - }; - - return Gateway; -})(_react2.default.Component); - -Gateway.contextTypes = { - gatewayRegistry: _react2.default.PropTypes.instanceOf(_GatewayRegistry2.default).isRequired -}; -Gateway.propTypes = { - into: _react2.default.PropTypes.string.isRequired, - children: _react2.default.PropTypes.oneOfType([_react2.default.PropTypes.element, _react2.default.PropTypes.string]) -}; -exports.default = Gateway; -},{"./GatewayRegistry":69,"react":493}],67:[function(require,module,exports){ -'use strict'; - -exports.__esModule = true; - -var _react = require('react'); - -var _react2 = _interopRequireDefault(_react); - -var _GatewayRegistry = require('./GatewayRegistry'); - -var _GatewayRegistry2 = _interopRequireDefault(_GatewayRegistry); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var GatewayDest = (function (_React$Component) { - _inherits(GatewayDest, _React$Component); - - function GatewayDest(props, context) { - _classCallCheck(this, GatewayDest); - - var _this = _possibleConstructorReturn(this, _React$Component.call(this, props, context)); - - _this.state = { - child: null - }; - - _this.gatewayRegistry = context.gatewayRegistry; - return _this; - } - - GatewayDest.prototype.componentWillMount = function componentWillMount() { - this.gatewayRegistry.addContainer(this.props.name, this); - }; - - GatewayDest.prototype.componentWillUnmount = function componentWillUnmount() { - this.gatewayRegistry.removeContainer(this.props.name, this); - }; - - GatewayDest.prototype.render = function render() { - var _props = this.props; - var tagName = _props.tagName; - - var attrs = _objectWithoutProperties(_props, ['tagName']); - - delete attrs.name; - return _react2.default.createElement(tagName, attrs, this.state.child); - }; - - return GatewayDest; -})(_react2.default.Component); - -GatewayDest.contextTypes = { - gatewayRegistry: _react2.default.PropTypes.instanceOf(_GatewayRegistry2.default).isRequired -}; -GatewayDest.propTypes = { - name: _react2.default.PropTypes.string.isRequired, - tagName: _react2.default.PropTypes.string -}; -GatewayDest.defaultProps = { - tagName: 'div' -}; -exports.default = GatewayDest; -},{"./GatewayRegistry":69,"react":493}],68:[function(require,module,exports){ -'use strict'; - -exports.__esModule = true; - -var _react = require('react'); - -var _react2 = _interopRequireDefault(_react); - -var _GatewayRegistry = require('./GatewayRegistry'); - -var _GatewayRegistry2 = _interopRequireDefault(_GatewayRegistry); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var GatewayProvider = (function (_React$Component) { - _inherits(GatewayProvider, _React$Component); - - GatewayProvider.prototype.getChildContext = function getChildContext() { - return { - gatewayRegistry: this.gatewayRegistry - }; - }; - - function GatewayProvider(props, context) { - _classCallCheck(this, GatewayProvider); - - var _this = _possibleConstructorReturn(this, _React$Component.call(this, props, context)); - - _this.gatewayRegistry = new _GatewayRegistry2.default(); - return _this; - } - - GatewayProvider.prototype.render = function render() { - return this.props.children; - }; - - return GatewayProvider; -})(_react2.default.Component); - -GatewayProvider.childContextTypes = { - gatewayRegistry: _react2.default.PropTypes.instanceOf(_GatewayRegistry2.default).isRequired -}; -GatewayProvider.propTypes = { - children: _react2.default.PropTypes.element -}; -exports.default = GatewayProvider; -},{"./GatewayRegistry":69,"react":493}],69:[function(require,module,exports){ -'use strict'; - -exports.__esModule = true; - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var GatewayRegistry = (function () { - function GatewayRegistry() { - _classCallCheck(this, GatewayRegistry); - - this._containers = {}; - this._children = {}; - } - - GatewayRegistry.prototype._renderContainer = function _renderContainer(name) { - if (!this._containers[name]) { - return; - } - - this._containers[name].setState({ - child: this._children[name] - }); - }; - - GatewayRegistry.prototype.addContainer = function addContainer(name, container) { - this._containers[name] = container; - this._renderContainer(name); - }; - - GatewayRegistry.prototype.removeContainer = function removeContainer(name) { - this._containers[name] = null; - }; - - GatewayRegistry.prototype.addChild = function addChild(name, child) { - if (this._children[name]) { - console.warn('Only a single Gateway can be rendered at a time into a GatewayDest.' + ('You rendered multiple into "' + name + '"')); - } - this._children[name] = child; - this._renderContainer(name); - }; - - GatewayRegistry.prototype.clearChild = function clearChild(name) { - this._children[name] = null; - }; - - GatewayRegistry.prototype.removeChild = function removeChild(name) { - this.clearChild(name); - this._renderContainer(name); - }; - - return GatewayRegistry; -})(); - -exports.default = GatewayRegistry; -},{}],70:[function(require,module,exports){ -'use strict'; - -exports.__esModule = true; -exports.GatewayProvider = exports.GatewayDest = exports.Gateway = undefined; - -var _Gateway2 = require('./Gateway'); - -var _Gateway3 = _interopRequireDefault(_Gateway2); - -var _GatewayDest2 = require('./GatewayDest'); - -var _GatewayDest3 = _interopRequireDefault(_GatewayDest2); - -var _GatewayProvider2 = require('./GatewayProvider'); - -var _GatewayProvider3 = _interopRequireDefault(_GatewayProvider2); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -exports.Gateway = _Gateway3.default; -exports.GatewayDest = _GatewayDest3.default; -exports.GatewayProvider = _GatewayProvider3.default; -},{"./Gateway":66,"./GatewayDest":67,"./GatewayProvider":68}],71:[function(require,module,exports){ +exports.Modal = _dereq_('./Modal'); +exports.ModalActions = _dereq_('./ModalActions'); +exports.ModalBody = _dereq_('./ModalBody'); +exports.ModalClose = _dereq_('./ModalClose'); +exports.ModalFooter = _dereq_('./ModalFooter'); +exports.ModalHeader = _dereq_('./ModalHeader'); +exports.ModalTitle = _dereq_('./ModalTitle'); +},{"./Modal":65,"./ModalActions":66,"./ModalBody":67,"./ModalClose":68,"./ModalFooter":69,"./ModalHeader":70,"./ModalTitle":71}],73:[function(_dereq_,module,exports){ 'use strict'; exports.__esModule = true; -var _react = require('react'); +var _react = _dereq_('react'); var _react2 = _interopRequireDefault(_react); -var _a11yFocusScope = require('a11y-focus-scope'); +var _a11yFocusScope = _dereq_('a11y-focus-scope'); var _a11yFocusScope2 = _interopRequireDefault(_a11yFocusScope); -var _a11yFocusStore = require('a11y-focus-store'); +var _a11yFocusStore = _dereq_('a11y-focus-store'); var _a11yFocusStore2 = _interopRequireDefault(_a11yFocusStore); -var _exenv = require('exenv'); +var _exenv = _dereq_('exenv'); var _exenv2 = _interopRequireDefault(_exenv); @@ -2520,24 +2482,24 @@ ReactModal2.defaultProps = { closeOnBackdropClick: true }; exports.default = ReactModal2; -},{"a11y-focus-scope":73,"a11y-focus-store":76,"exenv":77,"react":493}],72:[function(require,module,exports){ +},{"a11y-focus-scope":75,"a11y-focus-store":78,"exenv":79,"react":475}],74:[function(_dereq_,module,exports){ 'use strict'; exports.__esModule = true; exports.default = undefined; -var _Modal = require('./Modal'); +var _Modal = _dereq_('./Modal'); var _Modal2 = _interopRequireDefault(_Modal); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } exports.default = _Modal2.default; -},{"./Modal":71}],73:[function(require,module,exports){ +},{"./Modal":73}],75:[function(_dereq_,module,exports){ 'use strict'; -var tabbable = require('tabbable'); -var focusin = require('focusin'); +var tabbable = _dereq_('tabbable'); +var focusin = _dereq_('focusin'); var polyfilled = false; function init(element) { @@ -2579,7 +2541,7 @@ exports.unscopeFocus = function() { teardownFn = null; }; -},{"focusin":74,"tabbable":75}],74:[function(require,module,exports){ +},{"focusin":76,"tabbable":77}],76:[function(_dereq_,module,exports){ /* from https://gist.github.com/nuxodin/9250e56a3ce6c0446efa */ function polyfill () { @@ -2618,7 +2580,7 @@ module.exports = { polyfill: polyfill } -},{}],75:[function(require,module,exports){ +},{}],77:[function(_dereq_,module,exports){ module.exports = function(el) { var basicTabbables = []; var orderedTabbables = []; @@ -2690,7 +2652,7 @@ function isHidden(node) { return result; } -},{}],76:[function(require,module,exports){ +},{}],78:[function(_dereq_,module,exports){ 'use strict'; var storedFocusElement; @@ -2709,12 +2671,13 @@ exports.restoreFocus = function() { storedFocusElement = null; }; -},{}],77:[function(require,module,exports){ +},{}],79:[function(_dereq_,module,exports){ /*! Copyright (c) 2015 Jed Watson. Based on code that is Copyright 2013-2015, Facebook, Inc. All rights reserved. */ +/* global define */ (function () { 'use strict'; @@ -2750,7 +2713,7 @@ exports.restoreFocus = function() { }()); -},{}],78:[function(require,module,exports){ +},{}],80:[function(_dereq_,module,exports){ 'use strict'; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } @@ -2759,7 +2722,7 @@ function _possibleConstructorReturn(self, call) { if (!self) { throw new Referen function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var React = require('react'); +var React = _dereq_('react'); var PropTypes = React.PropTypes; var Radio = function (_React$Component) { @@ -2815,30 +2778,51 @@ Radio.propTypes = { onChange: PropTypes.func.isRequired }; + module.exports = Radio; -},{"react":493}],79:[function(require,module,exports){ +},{"react":475}],81:[function(_dereq_,module,exports){ 'use strict'; -var React = require('react'); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var React = _dereq_('react'); var PropTypes = React.PropTypes; -var Radio = require('./Radio'); +var Radio = _dereq_('./Radio'); -function RadioGroup(props) { - return React.createElement( - 'div', - { className: 'cf-radio__group' }, - props.options.map(function (option) { - return React.createElement(Radio, { - key: option.name, - label: option.label, - name: option.name, - value: option.value, - checked: props.value === option.value, - onChange: props.onChange }); - }) - ); -} +var RadioGroup = function (_React$Component) { + _inherits(RadioGroup, _React$Component); + + function RadioGroup() { + _classCallCheck(this, RadioGroup); + + return _possibleConstructorReturn(this, _React$Component.apply(this, arguments)); + } + + RadioGroup.prototype.render = function render() { + var _this2 = this; + + return React.createElement( + 'div', + { className: 'cf-radio__group' }, + this.props.options.map(function (option) { + return React.createElement(Radio, { + key: option.name, + label: option.label, + name: option.name, + value: option.value, + checked: _this2.props.value === option.value, + onChange: _this2.props.onChange }); + }) + ); + }; + + return RadioGroup; +}(React.Component); RadioGroup.propTypes = { value: PropTypes.string.isRequired, @@ -2850,34 +2834,28 @@ RadioGroup.propTypes = { })).isRequired }; + module.exports = RadioGroup; -},{"./Radio":78,"react":493}],80:[function(require,module,exports){ +},{"./Radio":80,"react":475}],82:[function(_dereq_,module,exports){ 'use strict'; -exports.Radio = require('./Radio'); -exports.RadioGroup = require('./RadioGroup'); -},{"./Radio":78,"./RadioGroup":79}],81:[function(require,module,exports){ +exports.Radio = _dereq_('./Radio'); +exports.RadioGroup = _dereq_('./RadioGroup'); +},{"./Radio":80,"./RadioGroup":81}],83:[function(_dereq_,module,exports){ 'use strict'; -exports.__esModule = true; - -var _react = require('react'); - -var _react2 = _interopRequireDefault(_react); - -var _reactSelect = require('react-select'); - -var _reactSelect2 = _interopRequireDefault(_reactSelect); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var Select = (function (_React$Component) { +var React = _dereq_('react'); +var PropTypes = React.PropTypes; + +var ReactSelect = _dereq_('react-select'); + +var Select = function (_React$Component) { _inherits(Select, _React$Component); function Select() { @@ -2887,15 +2865,15 @@ var Select = (function (_React$Component) { } Select.prototype.render = function render() { - return _react2.default.createElement( + return React.createElement( 'div', { className: 'cf-select' }, - this.props.label && _react2.default.createElement( + this.props.label && React.createElement( 'label', null, this.props.label ), - _react2.default.createElement(_reactSelect2.default + React.createElement(ReactSelect // Simplify if this isnt a searchable select , { searchable: this.props.searchable, clearable: this.props.searchable, @@ -2913,48 +2891,41 @@ var Select = (function (_React$Component) { }; return Select; -})(_react2.default.Component); +}(React.Component); Select.propTypes = { - label: _react2.default.PropTypes.string, + label: PropTypes.string, - onChange: _react2.default.PropTypes.func.isRequired, - onBlur: _react2.default.PropTypes.func, - onFocus: _react2.default.PropTypes.func, + onChange: PropTypes.func.isRequired, + onBlur: PropTypes.func, + onFocus: PropTypes.func, - multi: _react2.default.PropTypes.bool, - searchable: _react2.default.PropTypes.bool, + multi: PropTypes.bool, + searchable: PropTypes.bool, - value: _react2.default.PropTypes.any, - options: _react2.default.PropTypes.arrayOf(_react2.default.PropTypes.shape({ - label: _react2.default.PropTypes.string.isRequired, - value: _react2.default.PropTypes.any.isRequired + value: PropTypes.any, + options: PropTypes.arrayOf(PropTypes.shape({ + label: PropTypes.string.isRequired, + value: PropTypes.any.isRequired })), - placeholder: _react2.default.PropTypes.string + placeholder: PropTypes.string }; Select.defaultProps = { multi: false, searchable: false }; -exports.default = Select; -},{"react":493,"react-select":84}],82:[function(require,module,exports){ -'use strict'; - -exports.__esModule = true; -exports.default = undefined; - -var _Select = require('./Select'); - -var _Select2 = _interopRequireDefault(_Select); +; -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +module.exports = Select; +},{"react":475,"react-select":86}],84:[function(_dereq_,module,exports){ +'use strict'; -exports.default = _Select2.default; -},{"./Select":81}],83:[function(require,module,exports){ +module.exports = _dereq_('./Select'); +},{"./Select":83}],85:[function(_dereq_,module,exports){ 'use strict'; -var React = require('react'); -var classes = require('classnames'); +var React = _dereq_('react'); +var classes = _dereq_('classnames'); var Option = React.createClass({ displayName: 'Option', @@ -3015,7 +2986,7 @@ var Option = React.createClass({ }); module.exports = Option; -},{"classnames":87,"react":493}],84:[function(require,module,exports){ +},{"classnames":89,"react":475}],86:[function(_dereq_,module,exports){ /* disable some rules until we refactor more completely; fixing them now would cause conflicts with some open PRs unnecessarily. */ /* eslint react/jsx-sort-prop-types: 0, react/sort-comp: 0, react/prop-types: 0 */ @@ -3026,13 +2997,13 @@ var _extends = Object.assign || function (target) { for (var i = 1; i < argument function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } -var React = require('react'); -var ReactDOM = require('react-dom'); -var Input = require('react-input-autosize'); -var classes = require('classnames'); -var Value = require('./Value'); -var SingleValue = require('./SingleValue'); -var Option = require('./Option'); +var React = _dereq_('react'); +var ReactDOM = _dereq_('react-dom'); +var Input = _dereq_('react-input-autosize'); +var classes = _dereq_('classnames'); +var Value = _dereq_('./Value'); +var SingleValue = _dereq_('./SingleValue'); +var Option = _dereq_('./Option'); var requestId = 0; @@ -3963,11 +3934,11 @@ var Select = React.createClass({ }); module.exports = Select; -},{"./Option":83,"./SingleValue":85,"./Value":86,"classnames":87,"react":493,"react-dom":257,"react-input-autosize":88}],85:[function(require,module,exports){ +},{"./Option":85,"./SingleValue":87,"./Value":88,"classnames":89,"react":475,"react-dom":239,"react-input-autosize":90}],87:[function(_dereq_,module,exports){ 'use strict'; -var React = require('react'); -var classes = require('classnames'); +var React = _dereq_('react'); +var classes = _dereq_('classnames'); var SingleValue = React.createClass({ displayName: 'SingleValue', @@ -3991,11 +3962,11 @@ var SingleValue = React.createClass({ }); module.exports = SingleValue; -},{"classnames":87,"react":493}],86:[function(require,module,exports){ +},{"classnames":89,"react":475}],88:[function(_dereq_,module,exports){ 'use strict'; -var React = require('react'); -var classes = require('classnames'); +var React = _dereq_('react'); +var classes = _dereq_('classnames'); var Value = React.createClass({ @@ -4075,7 +4046,7 @@ var Value = React.createClass({ }); module.exports = Value; -},{"classnames":87,"react":493}],87:[function(require,module,exports){ +},{"classnames":89,"react":475}],89:[function(_dereq_,module,exports){ /*! Copyright (c) 2016 Jed Watson. Licensed under the MIT License (MIT), see @@ -4125,14 +4096,14 @@ module.exports = Value; } }()); -},{}],88:[function(require,module,exports){ +},{}],90:[function(_dereq_,module,exports){ 'use strict'; var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; -var React = require('react'); +var React = _dereq_('react'); -var sizerStyle = { position: 'absolute', visibility: 'hidden', height: 0, width: 0, overflow: 'scroll', whiteSpace: 'nowrap' }; +var sizerStyle = { position: 'absolute', visibility: 'hidden', height: 0, width: 0, overflow: 'scroll', whiteSpace: 'pre' }; var nextFrame = typeof window !== 'undefined' ? (function () { return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || function (callback) { @@ -4169,13 +4140,16 @@ var AutosizeInput = React.createClass({ this.updateInputWidth(); }, componentDidUpdate: function componentDidUpdate() { - this.queueUpdateInputWidth(); + this.updateInputWidth(); }, copyInputStyles: function copyInputStyles() { if (!this.isMounted() || !window.getComputedStyle) { return; } var inputStyle = window.getComputedStyle(this.refs.input); + if (!inputStyle) { + return; + } var widthNode = this.refs.sizer; widthNode.style.fontSize = inputStyle.fontSize; widthNode.style.fontFamily = inputStyle.fontFamily; @@ -4191,9 +4165,6 @@ var AutosizeInput = React.createClass({ placeholderNode.style.letterSpacing = inputStyle.letterSpacing; } }, - queueUpdateInputWidth: function queueUpdateInputWidth() { - nextFrame(this.updateInputWidth); - }, updateInputWidth: function updateInputWidth() { if (!this.isMounted() || typeof this.refs.sizer.scrollWidth === 'undefined') { return; @@ -4226,11 +4197,11 @@ var AutosizeInput = React.createClass({ this.refs.input.select(); }, render: function render() { - var escapedValue = (this.props.defaultValue || this.props.value || '').replace(/\&/g, '&').replace(/ /g, ' ').replace(/\/g, '>'); + var sizerValue = this.props.defaultValue || this.props.value || ''; var wrapperStyle = this.props.style || {}; if (!wrapperStyle.display) wrapperStyle.display = 'inline-block'; var inputStyle = _extends({}, this.props.inputStyle); - inputStyle.width = this.state.inputWidth; + inputStyle.width = this.state.inputWidth + 'px'; inputStyle.boxSizing = 'content-box'; var placeholder = this.props.placeholder ? React.createElement( 'div', @@ -4241,19 +4212,23 @@ var AutosizeInput = React.createClass({ 'div', { className: this.props.className, style: wrapperStyle }, React.createElement('input', _extends({}, this.props, { ref: 'input', className: this.props.inputClassName, style: inputStyle })), - React.createElement('div', { ref: 'sizer', style: sizerStyle, dangerouslySetInnerHTML: { __html: escapedValue } }), + React.createElement( + 'div', + { ref: 'sizer', style: sizerStyle }, + sizerValue + ), placeholder ); } }); module.exports = AutosizeInput; -},{"react":493}],89:[function(require,module,exports){ +},{"react":475}],91:[function(_dereq_,module,exports){ 'use strict'; exports.__esModule = true; -var _react = require('react'); +var _react = _dereq_('react'); var _react2 = _interopRequireDefault(_react); @@ -4305,12 +4280,12 @@ Table.defaultProps = { condensed: false }; exports.default = Table; -},{"react":493}],90:[function(require,module,exports){ +},{"react":475}],92:[function(_dereq_,module,exports){ "use strict"; exports.__esModule = true; -var _react = require("react"); +var _react = _dereq_("react"); var _react2 = _interopRequireDefault(_react); @@ -4343,12 +4318,12 @@ var TableBody = (function (_React$Component) { })(_react2.default.Component); exports.default = TableBody; -},{"react":493}],91:[function(require,module,exports){ +},{"react":475}],93:[function(_dereq_,module,exports){ 'use strict'; exports.__esModule = true; -var _react = require('react'); +var _react = _dereq_('react'); var _react2 = _interopRequireDefault(_react); @@ -4389,12 +4364,12 @@ TableCell.propTypes = { editable: _react.PropTypes.bool }; exports.default = TableCell; -},{"react":493}],92:[function(require,module,exports){ +},{"react":475}],94:[function(_dereq_,module,exports){ "use strict"; exports.__esModule = true; -var _react = require("react"); +var _react = _dereq_("react"); var _react2 = _interopRequireDefault(_react); @@ -4427,12 +4402,12 @@ var TableFoot = (function (_React$Component) { })(_react2.default.Component); exports.default = TableFoot; -},{"react":493}],93:[function(require,module,exports){ +},{"react":475}],95:[function(_dereq_,module,exports){ "use strict"; exports.__esModule = true; -var _react = require("react"); +var _react = _dereq_("react"); var _react2 = _interopRequireDefault(_react); @@ -4465,12 +4440,12 @@ var TableHead = (function (_React$Component) { })(_react2.default.Component); exports.default = TableHead; -},{"react":493}],94:[function(require,module,exports){ +},{"react":475}],96:[function(_dereq_,module,exports){ 'use strict'; exports.__esModule = true; -var _react = require('react'); +var _react = _dereq_('react'); var _react2 = _interopRequireDefault(_react); @@ -4511,12 +4486,12 @@ TableCell.propTypes = { editable: _react.PropTypes.bool }; exports.default = TableCell; -},{"react":493}],95:[function(require,module,exports){ +},{"react":475}],97:[function(_dereq_,module,exports){ 'use strict'; exports.__esModule = true; -var _react = require('react'); +var _react = _dereq_('react'); var _react2 = _interopRequireDefault(_react); @@ -4563,37 +4538,37 @@ Table.defaultProps = { accent: false }; exports.default = Table; -},{"react":493}],96:[function(require,module,exports){ +},{"react":475}],98:[function(_dereq_,module,exports){ 'use strict'; exports.__esModule = true; exports.TableRow = exports.TableHeadCell = exports.TableHead = exports.TableFoot = exports.TableCell = exports.TableBody = exports.Table = undefined; -var _Table2 = require('./Table'); +var _Table2 = _dereq_('./Table'); var _Table3 = _interopRequireDefault(_Table2); -var _TableBody2 = require('./TableBody'); +var _TableBody2 = _dereq_('./TableBody'); var _TableBody3 = _interopRequireDefault(_TableBody2); -var _TableCell2 = require('./TableCell'); +var _TableCell2 = _dereq_('./TableCell'); var _TableCell3 = _interopRequireDefault(_TableCell2); -var _TableFoot2 = require('./TableFoot'); +var _TableFoot2 = _dereq_('./TableFoot'); var _TableFoot3 = _interopRequireDefault(_TableFoot2); -var _TableHead2 = require('./TableHead'); +var _TableHead2 = _dereq_('./TableHead'); var _TableHead3 = _interopRequireDefault(_TableHead2); -var _TableHeadCell2 = require('./TableHeadCell'); +var _TableHeadCell2 = _dereq_('./TableHeadCell'); var _TableHeadCell3 = _interopRequireDefault(_TableHeadCell2); -var _TableRow2 = require('./TableRow'); +var _TableRow2 = _dereq_('./TableRow'); var _TableRow3 = _interopRequireDefault(_TableRow2); @@ -4606,7 +4581,7 @@ exports.TableFoot = _TableFoot3.default; exports.TableHead = _TableHead3.default; exports.TableHeadCell = _TableHeadCell3.default; exports.TableRow = _TableRow3.default; -},{"./Table":89,"./TableBody":90,"./TableCell":91,"./TableFoot":92,"./TableHead":93,"./TableHeadCell":94,"./TableRow":95}],97:[function(require,module,exports){ +},{"./Table":91,"./TableBody":92,"./TableCell":93,"./TableFoot":94,"./TableHead":95,"./TableHeadCell":96,"./TableRow":97}],99:[function(_dereq_,module,exports){ 'use strict'; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } @@ -4615,11 +4590,11 @@ function _possibleConstructorReturn(self, call) { if (!self) { throw new Referen function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var React = require('react'); +var React = _dereq_('react'); var PropTypes = React.PropTypes; -var Viewport = require('cf-component-viewport'); -var Select = require('cf-component-select'); +var Viewport = _dereq_('cf-component-viewport'); +var Select = _dereq_('cf-component-select'); var Tabs = function (_React$Component) { _inherits(Tabs, _React$Component); @@ -4715,8 +4690,9 @@ Tabs.childContextTypes = { activeTab: PropTypes.string.isRequired }; + module.exports = Tabs; -},{"cf-component-select":101,"cf-component-viewport":110,"react":493}],98:[function(require,module,exports){ +},{"cf-component-select":84,"cf-component-viewport":104,"react":475}],100:[function(_dereq_,module,exports){ "use strict"; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } @@ -4725,7 +4701,7 @@ function _possibleConstructorReturn(self, call) { if (!self) { throw new Referen function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var React = require('react'); +var React = _dereq_('react'); var PropTypes = React.PropTypes; var TabsPanel = function (_React$Component) { @@ -4762,94 +4738,27 @@ TabsPanel.contextTypes = { activeTab: PropTypes.string.isRequired }; + module.exports = TabsPanel; -},{"react":493}],99:[function(require,module,exports){ +},{"react":475}],101:[function(_dereq_,module,exports){ 'use strict'; -exports.Tabs = require('./Tabs'); -exports.TabsPanel = require('./TabsPanel'); -},{"./Tabs":97,"./TabsPanel":98}],100:[function(require,module,exports){ +exports.Tabs = _dereq_('./Tabs'); +exports.TabsPanel = _dereq_('./TabsPanel'); +},{"./Tabs":99,"./TabsPanel":100}],102:[function(_dereq_,module,exports){ 'use strict'; -var React = require('react'); -var PropTypes = React.PropTypes; - -var ReactSelect = require('react-select'); - -function Select(props) { - return React.createElement( - 'div', - { className: 'cf-select' }, - props.label && React.createElement( - 'label', - null, - props.label - ), - React.createElement(ReactSelect - // Simplify if this isnt a searchable select - , { searchable: props.searchable, - clearable: props.searchable, - backspaceRemoves: props.searchable, - - onChange: props.onChange, - onBlur: props.onBlur, - onFocus: props.onFocus, - - multi: props.multi, - value: props.value, - options: props.options, - placeholder: props.placeholder }) - ); -} - -Select.propTypes = { - label: PropTypes.string, - - onChange: PropTypes.func.isRequired, - onBlur: PropTypes.func, - onFocus: PropTypes.func, - - multi: PropTypes.bool, - searchable: PropTypes.bool, - - value: PropTypes.any, - options: PropTypes.arrayOf(PropTypes.shape({ - label: PropTypes.string.isRequired, - value: PropTypes.any.isRequired - })), - placeholder: PropTypes.string -}; -Select.defaultProps = { - multi: false, - searchable: false -}; -; +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } -module.exports = Select; -},{"react":493,"react-select":103}],101:[function(require,module,exports){ -'use strict'; +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } -module.exports = require('./Select'); -},{"./Select":100}],102:[function(require,module,exports){ -arguments[4][83][0].apply(exports,arguments) -},{"classnames":106,"dup":83,"react":493}],103:[function(require,module,exports){ -arguments[4][84][0].apply(exports,arguments) -},{"./Option":102,"./SingleValue":104,"./Value":105,"classnames":106,"dup":84,"react":493,"react-dom":257,"react-input-autosize":107}],104:[function(require,module,exports){ -arguments[4][85][0].apply(exports,arguments) -},{"classnames":106,"dup":85,"react":493}],105:[function(require,module,exports){ -arguments[4][86][0].apply(exports,arguments) -},{"classnames":106,"dup":86,"react":493}],106:[function(require,module,exports){ -arguments[4][87][0].apply(exports,arguments) -},{"dup":87}],107:[function(require,module,exports){ -arguments[4][88][0].apply(exports,arguments) -},{"dup":88,"react":493}],108:[function(require,module,exports){ -'use strict'; +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var React = require('react'); +var React = _dereq_('react'); var PropTypes = React.PropTypes; -var MediaQuery = require('react-responsive'); -var buildMediaQuery = require('./buildMediaQuery'); +var MediaQuery = _dereq_('react-responsive'); +var buildMediaQuery = _dereq_('./buildMediaQuery'); var SIZES = { mobile: { minWidth: null, maxWidth: '15.6em' }, @@ -4859,18 +4768,31 @@ var SIZES = { desktopLarge: { minWidth: '66em', maxWidth: null } }; -function Viewport(props) { - var size = props.size; - var not = props.not; +var Viewport = function (_React$Component) { + _inherits(Viewport, _React$Component); - var mediaQuery = buildMediaQuery(SIZES[size], not); + function Viewport() { + _classCallCheck(this, Viewport); - return React.createElement( - MediaQuery, - { query: mediaQuery }, - props.children - ); -} + return _possibleConstructorReturn(this, _React$Component.apply(this, arguments)); + } + + Viewport.prototype.render = function render() { + var _props = this.props; + var size = _props.size; + var not = _props.not; + + var mediaQuery = buildMediaQuery(SIZES[size], not); + + return React.createElement( + MediaQuery, + { query: mediaQuery }, + this.props.children + ); + }; + + return Viewport; +}(React.Component); Viewport.propTypes = { not: PropTypes.bool, @@ -4880,8 +4802,9 @@ Viewport.defaultProps = { not: false }; + module.exports = Viewport; -},{"./buildMediaQuery":109,"react":493,"react-responsive":115}],109:[function(require,module,exports){ +},{"./buildMediaQuery":103,"react":475,"react-responsive":109}],103:[function(_dereq_,module,exports){ 'use strict'; function buildMediaQuery(_ref, not) { @@ -4910,30 +4833,29 @@ function buildMediaQuery(_ref, not) { } module.exports = buildMediaQuery; -},{}],110:[function(require,module,exports){ +},{}],104:[function(_dereq_,module,exports){ 'use strict'; -module.exports = require('./Viewport'); -},{"./Viewport":108}],111:[function(require,module,exports){ +module.exports = _dereq_('./Viewport'); +},{"./Viewport":102}],105:[function(_dereq_,module,exports){ 'use strict'; -var uppercasePattern = /([A-Z])/g; +var uppercasePattern = /[A-Z]/g; var msPattern = /^ms-/; function hyphenateStyleName(string) { - return hyphenate(string).replace(msPattern, '-ms-'); -} - -function hyphenate(string) { - return string.replace(uppercasePattern, '-$1').toLowerCase(); + return string + .replace(uppercasePattern, '-$&') + .toLowerCase() + .replace(msPattern, '-ms-'); } module.exports = hyphenateStyleName; -},{}],112:[function(require,module,exports){ +},{}],106:[function(_dereq_,module,exports){ 'use strict'; -var staticMatch = require('css-mediaquery').match; +var staticMatch = _dereq_('css-mediaquery').match; var dynamicMatch = typeof window !== 'undefined' ? window.matchMedia : null; // our fake MediaQueryList @@ -4978,7 +4900,7 @@ function matchMedia(query, values){ module.exports = matchMedia; -},{"css-mediaquery":113}],113:[function(require,module,exports){ +},{"css-mediaquery":107}],107:[function(_dereq_,module,exports){ /* Copyright (c) 2014, Yahoo! Inc. All rights reserved. Copyrights licensed under the New BSD License. @@ -5137,9 +5059,9 @@ function toPx(length) { } } -},{}],114:[function(require,module,exports){ -/* eslint-disable no-unused-vars */ +},{}],108:[function(_dereq_,module,exports){ 'use strict'; +/* eslint-disable no-unused-vars */ var hasOwnProperty = Object.prototype.hasOwnProperty; var propIsEnumerable = Object.prototype.propertyIsEnumerable; @@ -5151,7 +5073,51 @@ function toObject(val) { return Object(val); } -module.exports = Object.assign || function (target, source) { +function shouldUseNative() { + try { + if (!Object.assign) { + return false; + } + + // Detect buggy property enumeration order in older V8 versions. + + // https://bugs.chromium.org/p/v8/issues/detail?id=4118 + var test1 = new String('abc'); // eslint-disable-line + test1[5] = 'de'; + if (Object.getOwnPropertyNames(test1)[0] === '5') { + return false; + } + + // https://bugs.chromium.org/p/v8/issues/detail?id=3056 + var test2 = {}; + for (var i = 0; i < 10; i++) { + test2['_' + String.fromCharCode(i)] = i; + } + var order2 = Object.getOwnPropertyNames(test2).map(function (n) { + return test2[n]; + }); + if (order2.join('') !== '0123456789') { + return false; + } + + // https://bugs.chromium.org/p/v8/issues/detail?id=3056 + var test3 = {}; + 'abcdefghijklmnopqrst'.split('').forEach(function (letter) { + test3[letter] = letter; + }); + if (Object.keys(Object.assign({}, test3)).join('') !== + 'abcdefghijklmnopqrst') { + return false; + } + + return true; + } catch (e) { + // We don't expect any of the above to throw, but better to be safe. + return false; + } +} + +module.exports = shouldUseNative() ? Object.assign : function (target, source) { var from; var to = toObject(target); var symbols; @@ -5178,15 +5144,15 @@ module.exports = Object.assign || function (target, source) { return to; }; -},{}],115:[function(require,module,exports){ +},{}],109:[function(_dereq_,module,exports){ 'use strict'; -var React = require('react'); -var matchMedia = require('matchmedia'); -var hyphenate = require('hyphenate-style-name'); -var mediaQuery = require('./mediaQuery'); -var toQuery = require('./toQuery'); -var assign = require('object-assign'); +var React = _dereq_('react'); +var matchMedia = _dereq_('matchmedia'); +var hyphenate = _dereq_('hyphenate-style-name'); +var mediaQuery = _dereq_('./mediaQuery'); +var toQuery = _dereq_('./toQuery'); +var assign = _dereq_('object-assign'); var defaultTypes = { component: React.PropTypes.node, @@ -5276,13 +5242,17 @@ var mq = React.createClass({ return null; } var props = omit(this.props, excludedPropKeys); - if (this.props.component || this.props.children.length > 1) { + var hasMergeProps = Object.keys(props).length > 0; + var wrapChildren = this.props.component || + React.Children.count(this.props.children) > 1 || + typeof this.props.children === 'string'; + if (wrapChildren) { return React.createElement( this.props.component || 'div', props, this.props.children ); - } else if (props) { + } else if (hasMergeProps) { return React.cloneElement( this.props.children, props @@ -5295,9 +5265,9 @@ var mq = React.createClass({ module.exports = mq; -},{"./mediaQuery":116,"./toQuery":117,"hyphenate-style-name":111,"matchmedia":112,"object-assign":114,"react":493}],116:[function(require,module,exports){ -var PropTypes = require('react').PropTypes; -var assign = require('object-assign'); +},{"./mediaQuery":110,"./toQuery":111,"hyphenate-style-name":105,"matchmedia":106,"object-assign":108,"react":475}],110:[function(_dereq_,module,exports){ +var PropTypes = _dereq_('react').PropTypes; +var assign = _dereq_('object-assign'); var stringOrNumber = PropTypes.oneOfType([ PropTypes.string, @@ -5394,11 +5364,11 @@ module.exports = { features: features }; -},{"object-assign":114,"react":493}],117:[function(require,module,exports){ +},{"object-assign":108,"react":475}],111:[function(_dereq_,module,exports){ 'use strict'; -var hyphenate = require('hyphenate-style-name'); -var mq = require('./mediaQuery'); +var hyphenate = _dereq_('hyphenate-style-name'); +var mq = _dereq_('./mediaQuery'); function negate(cond) { return 'not ' + cond; @@ -5435,24 +5405,19 @@ module.exports = function(obj){ return join(rules); }; -},{"./mediaQuery":116,"hyphenate-style-name":111}],118:[function(require,module,exports){ +},{"./mediaQuery":110,"hyphenate-style-name":105}],112:[function(_dereq_,module,exports){ 'use strict'; -exports.__esModule = true; - -var _react = require('react'); - -var _react2 = _interopRequireDefault(_react); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var Toggle = (function (_React$Component) { +var React = _dereq_('react'); +var PropTypes = React.PropTypes; + +var Toggle = function (_React$Component) { _inherits(Toggle, _React$Component); function Toggle() { @@ -5476,10 +5441,10 @@ var Toggle = (function (_React$Component) { className += ' cf-toggle--active'; } - return _react2.default.createElement( + return React.createElement( 'label', { htmlFor: this.props.name, className: className }, - _react2.default.createElement('input', { + React.createElement('input', { className: 'cf-toggle__checkbox', type: 'checkbox', id: this.props.name, @@ -5488,58 +5453,42 @@ var Toggle = (function (_React$Component) { onChange: this.handleChange, onFocus: this.props.onFocus, onBlur: this.props.onBlur }), - _react2.default.createElement( + React.createElement( 'span', { className: 'cf-toggle__label' }, this.props.label ), - _react2.default.createElement('span', { className: 'cf-toggle__handle' }) + React.createElement('span', { className: 'cf-toggle__handle' }) ); }; return Toggle; -})(_react2.default.Component); +}(React.Component); Toggle.propTypes = { - label: _react2.default.PropTypes.oneOfType([_react2.default.PropTypes.string, _react2.default.PropTypes.oneOf([false])]).isRequired, - name: _react2.default.PropTypes.string, - value: _react2.default.PropTypes.bool, - onChange: _react2.default.PropTypes.func, - onFocus: _react2.default.PropTypes.func, - onBlur: _react2.default.PropTypes.func + label: PropTypes.oneOfType([PropTypes.string, PropTypes.oneOf([false])]).isRequired, + name: PropTypes.string, + value: PropTypes.bool, + onChange: PropTypes.func, + onFocus: PropTypes.func, + onBlur: PropTypes.func }; -exports.default = Toggle; -},{"react":493}],119:[function(require,module,exports){ -'use strict'; - -exports.__esModule = true; -exports.default = undefined; - -var _Toggle = require('./Toggle'); - -var _Toggle2 = _interopRequireDefault(_Toggle); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -exports.default = _Toggle2.default; -},{"./Toggle":118}],120:[function(require,module,exports){ +module.exports = Toggle; +},{"react":475}],113:[function(_dereq_,module,exports){ 'use strict'; -var _superagent = require('superagent'); - -var _superagent2 = _interopRequireDefault(_superagent); - -var _cfUtilLogger = require('cf-util-logger'); - -var _cfUtilLogger2 = _interopRequireDefault(_cfUtilLogger); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +module.exports = _dereq_('./Toggle'); +},{"./Toggle":112}],114:[function(_dereq_,module,exports){ +'use strict'; -var logRequest = (0, _cfUtilLogger2.default)('http:request'); -var logError = (0, _cfUtilLogger2.default)('http:error'); -var logSuccess = (0, _cfUtilLogger2.default)('http:success'); +var superagent = _dereq_('superagent'); +var createLogger = _dereq_('cf-util-logger'); -var http = {}; +var logRequest = createLogger('http:request'); +var logError = createLogger('http:error'); +var logSuccess = createLogger('http:success'); // Mapping of http request types to superagent methods. var METHODS = { @@ -5558,22 +5507,22 @@ var beforeSendCallbacks = []; * Useful for authentication or other middleware. * * ```js - * http.beforeSend(function(opts) { + * beforeSend(function(opts) { * opts.url = '/api/v4' + opts.url; * }); * ``` * * @param {Function} callback */ -http.beforeSend = function (callback) { +function beforeSend(callback) { beforeSendCallbacks.push(callback); -}; +} /** * Perform an http request. * * ```js - * http.request('POST', '/posts', { + * request('POST', '/posts', { * body: { * title: 'A New Post', * content: 'Contents of the new post.' @@ -5595,7 +5544,7 @@ http.beforeSend = function (callback) { * @param {Function} [onError] * @returns {Function} Abort request. */ -http.request = function (method, url, opts, onSuccess, onError) { +function request(method, url, opts, onSuccess, onError) { opts = opts || {}; opts.method = method; @@ -5609,7 +5558,7 @@ http.request = function (method, url, opts, onSuccess, onError) { }); // Configure request - var req = _superagent2.default[METHODS[method]](opts.url); + var req = superagent[METHODS[method]](opts.url); if (opts.parameters) { req.query(opts.parameters); @@ -5653,84 +5602,87 @@ http.request = function (method, url, opts, onSuccess, onError) { return function () { req.abort(); }; -}; +} /** * Perform a GET request. */ -http.get = function () { +function get() { for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } - return http.request.apply(http, ['GET'].concat(args)); -}; + return request.apply(undefined, ['GET'].concat(args)); +} /** * Perform a POST request. */ -http.post = function () { +function post() { for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { args[_key2] = arguments[_key2]; } - return http.request.apply(http, ['POST'].concat(args)); -}; + return request.apply(undefined, ['POST'].concat(args)); +} /** * Perform a PUT request. */ -http.put = function () { +function put() { for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { args[_key3] = arguments[_key3]; } - return http.request.apply(http, ['PUT'].concat(args)); -}; + return request.apply(undefined, ['PUT'].concat(args)); +} /** * Perform a PATCH request. */ -http.patch = function () { +function patch() { for (var _len4 = arguments.length, args = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) { args[_key4] = arguments[_key4]; } - return http.request.apply(http, ['PATCH'].concat(args)); -}; + return request.apply(undefined, ['PATCH'].concat(args)); +} /** * Perform a DELETE request. */ -http.del = function () { +function del() { for (var _len5 = arguments.length, args = Array(_len5), _key5 = 0; _key5 < _len5; _key5++) { args[_key5] = arguments[_key5]; } - return http.request.apply(http, ['DELETE'].concat(args)); -}; + return request.apply(undefined, ['DELETE'].concat(args)); +} -module.exports = http; -},{"cf-util-logger":121,"superagent":125}],121:[function(require,module,exports){ +module.exports = { beforeSend: beforeSend, request: request, get: get, post: post, put: put, patch: patch, del: del }; +},{"cf-util-logger":117,"superagent":121}],115:[function(_dereq_,module,exports){ 'use strict'; -exports.__esModule = true; -exports.default = createLogger; - -var _debug = require('debug'); - -var _debug2 = _interopRequireDefault(_debug); +module.exports = _dereq_('./http'); +},{"./http":114}],116:[function(_dereq_,module,exports){ +'use strict'; -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +var debug = _dereq_('debug'); function createLogger(name) { - var logger = (0, _debug2.default)(name); + var logger = debug(name); return function (message) { logger(message); }; } -},{"debug":122}],122:[function(require,module,exports){ + +module.exports = createLogger; +},{"debug":118}],117:[function(_dereq_,module,exports){ +'use strict'; + +module.exports = _dereq_('./createLogger'); +},{"./createLogger":116}],118:[function(_dereq_,module,exports){ /** * This is the web browser implementation of `debug()`. @@ -5738,7 +5690,7 @@ function createLogger(name) { * Expose `debug()` as the module. */ -exports = module.exports = require('./debug'); +exports = module.exports = _dereq_('./debug'); exports.log = log; exports.formatArgs = formatArgs; exports.save = save; @@ -5900,7 +5852,7 @@ function localstorage(){ } catch (e) {} } -},{"./debug":123}],123:[function(require,module,exports){ +},{"./debug":119}],119:[function(_dereq_,module,exports){ /** * This is the common logic for both the Node.js and web browser @@ -5914,7 +5866,7 @@ exports.coerce = coerce; exports.disable = disable; exports.enable = enable; exports.enabled = enabled; -exports.humanize = require('ms'); +exports.humanize = _dereq_('ms'); /** * The currently active debug mode names, and names to skip. @@ -6099,7 +6051,7 @@ function coerce(val) { return val; } -},{"ms":124}],124:[function(require,module,exports){ +},{"ms":120}],120:[function(_dereq_,module,exports){ /** * Helpers. */ @@ -6226,13 +6178,15 @@ function plural(ms, n, name) { return Math.ceil(ms / n) + ' ' + name + 's'; } -},{}],125:[function(require,module,exports){ +},{}],121:[function(_dereq_,module,exports){ /** * Module dependencies. */ -var Emitter = require('emitter'); -var reduce = require('reduce'); +var Emitter = _dereq_('emitter'); +var reduce = _dereq_('reduce'); +var requestBase = _dereq_('./request-base'); +var isObject = _dereq_('./is-object'); /** * Root reference for iframes. @@ -6277,6 +6231,12 @@ function isHost(obj) { } } +/** + * Expose `request`. + */ + +var request = module.exports = _dereq_('./request').bind(null, Request); + /** * Determine XHR. */ @@ -6307,18 +6267,6 @@ var trim = ''.trim ? function(s) { return s.trim(); } : function(s) { return s.replace(/(^\s*|\s*$)/g, ''); }; -/** - * Check if `obj` is an object. - * - * @param {Object} obj - * @return {Boolean} - * @api private - */ - -function isObject(obj) { - return obj === Object(obj); -} - /** * Serialize the given `obj`. * @@ -6623,6 +6571,9 @@ Response.prototype.setHeaderProperties = function(header){ Response.prototype.parseBody = function(str){ var parse = request.parse[this.type]; + if (!parse && isJSON(this.type)) { + parse = request.parse['application/json']; + } return parse && str && (str.length || str instanceof Object) ? parse(str) : null; @@ -6717,12 +6668,11 @@ request.Response = Response; function Request(method, url) { var self = this; - Emitter.call(this); this._query = this._query || []; this.method = method; this.url = url; - this.header = {}; - this._header = {}; + this.header = {}; // preserves header name case + this._header = {}; // coerces header names to lowercase this.on('end', function(){ var err = null; var res = null; @@ -6735,6 +6685,8 @@ function Request(method, url) { err.original = e; // issue #675: return the raw response if the response parsing fails err.rawResponse = self.xhr && self.xhr.responseText ? self.xhr.responseText : null; + // issue #876: return the http status code if the response parsing fails + err.statusCode = self.xhr && self.xhr.status ? self.xhr.status : null; return self.callback(err); } @@ -6758,46 +6710,14 @@ function Request(method, url) { } /** - * Mixin `Emitter`. + * Mixin `Emitter` and `requestBase`. */ Emitter(Request.prototype); - -/** - * Allow for extension - */ - -Request.prototype.use = function(fn) { - fn(this); - return this; +for (var key in requestBase) { + Request.prototype[key] = requestBase[key]; } -/** - * Set timeout to `ms`. - * - * @param {Number} ms - * @return {Request} for chaining - * @api public - */ - -Request.prototype.timeout = function(ms){ - this._timeout = ms; - return this; -}; - -/** - * Clear previous timeout. - * - * @return {Request} for chaining - * @api public - */ - -Request.prototype.clearTimeout = function(){ - this._timeout = 0; - clearTimeout(this._timer); - return this; -}; - /** * Abort the request, and clear potential timeout. * @@ -6814,70 +6734,6 @@ Request.prototype.abort = function(){ return this; }; -/** - * Set header `field` to `val`, or multiple fields with one object. - * - * Examples: - * - * req.get('/') - * .set('Accept', 'application/json') - * .set('X-API-Key', 'foobar') - * .end(callback); - * - * req.get('/') - * .set({ Accept: 'application/json', 'X-API-Key': 'foobar' }) - * .end(callback); - * - * @param {String|Object} field - * @param {String} val - * @return {Request} for chaining - * @api public - */ - -Request.prototype.set = function(field, val){ - if (isObject(field)) { - for (var key in field) { - this.set(key, field[key]); - } - return this; - } - this._header[field.toLowerCase()] = val; - this.header[field] = val; - return this; -}; - -/** - * Remove header `field`. - * - * Example: - * - * req.get('/') - * .unset('User-Agent') - * .end(callback); - * - * @param {String} field - * @return {Request} for chaining - * @api public - */ - -Request.prototype.unset = function(field){ - delete this._header[field.toLowerCase()]; - delete this.header[field]; - return this; -}; - -/** - * Get case-insensitive header `field` value. - * - * @param {String} field - * @return {String} - * @api private - */ - -Request.prototype.getHeader = function(field){ - return this._header[field.toLowerCase()]; -}; - /** * Set Content-Type to `type`, mapping values from `request.types`. * @@ -6906,16 +6762,22 @@ Request.prototype.type = function(type){ }; /** - * Force given parser + * Set responseType to `val`. Presently valid responseTypes are 'blob' and + * 'arraybuffer'. * - * Sets the body parser no matter type. + * Examples: * - * @param {Function} + * req.get('/') + * .responseType('blob') + * .end(callback); + * + * @param {String} val + * @return {Request} for chaining * @api public */ -Request.prototype.parse = function(fn){ - this._parser = fn; +Request.prototype.responseType = function(val){ + this._responseType = val; return this; }; @@ -6949,13 +6811,29 @@ Request.prototype.accept = function(type){ * * @param {String} user * @param {String} pass + * @param {Object} options with 'type' property 'auto' or 'basic' (default 'basic') * @return {Request} for chaining * @api public */ -Request.prototype.auth = function(user, pass){ - var str = btoa(user + ':' + pass); - this.set('Authorization', 'Basic ' + str); +Request.prototype.auth = function(user, pass, options){ + if (!options) { + options = { + type: 'basic' + } + } + + switch (options.type) { + case 'basic': + var str = btoa(user + ':' + pass); + this.set('Authorization', 'Basic ' + str); + break; + + case 'auto': + this.username = user; + this.password = pass; + break; + } return this; }; @@ -6979,28 +6857,6 @@ Request.prototype.query = function(val){ return this; }; -/** - * Write the field `name` and `val` for "multipart/form-data" - * request bodies. - * - * ``` js - * request.post('/upload') - * .field('foo', 'bar') - * .end(callback); - * ``` - * - * @param {String} name - * @param {String|Blob|File} val - * @return {Request} for chaining - * @api public - */ - -Request.prototype.field = function(name, val){ - if (!this._formData) this._formData = new root.FormData(); - this._formData.append(name, val); - return this; -}; - /** * Queue the given `file` as an attachment to the specified `field`, * with optional `filename`. @@ -7019,11 +6875,17 @@ Request.prototype.field = function(name, val){ */ Request.prototype.attach = function(field, file, filename){ - if (!this._formData) this._formData = new root.FormData(); - this._formData.append(field, file, filename || file.name); + this._getFormData().append(field, file, filename || file.name); return this; }; +Request.prototype._getFormData = function(){ + if (!this._formData) { + this._formData = new root.FormData(); + } + return this._formData; +}; + /** * Send `data` as the request body, defaulting the `.type()` to "json" when * an object is given. @@ -7066,7 +6928,7 @@ Request.prototype.attach = function(field, file, filename){ Request.prototype.send = function(data){ var obj = isObject(data); - var type = this.getHeader('Content-Type'); + var type = this._header['content-type']; // merge if (obj && isObject(this._data)) { @@ -7075,7 +6937,7 @@ Request.prototype.send = function(data){ } } else if ('string' == typeof data) { if (!type) this.type('form'); - type = this.getHeader('Content-Type'); + type = this._header['content-type']; if ('application/x-www-form-urlencoded' == type) { this._data = this._data ? this._data + '&' + data @@ -7092,6 +6954,22 @@ Request.prototype.send = function(data){ return this; }; +/** + * @deprecated + */ +Response.prototype.parse = function serialize(fn){ + if (root.console) { + console.warn("Client-side parse() method has been renamed to serialize(). This method is not compatible with superagent v2.0"); + } + this.serialize(fn); + return this; +}; + +Response.prototype.serialize = function serialize(fn){ + this._parser = fn; + return this; +}; + /** * Invoke the callback with `err` and `res` * and handle arity check. @@ -7227,7 +7105,11 @@ Request.prototype.end = function(fn){ } // initiate request - xhr.open(this.method, this.url, true); + if (this.username && this.password) { + xhr.open(this.method, this.url, true, this.username, this.password); + } else { + xhr.open(this.method, this.url, true); + } // CORS if (this._withCredentials) xhr.withCredentials = true; @@ -7235,7 +7117,7 @@ Request.prototype.end = function(fn){ // body if ('GET' != this.method && 'HEAD' != this.method && 'string' != typeof data && !isHost(data)) { // serialize stuff - var contentType = this.getHeader('Content-Type'); + var contentType = this._header['content-type']; var serialize = this._parser || request.serialize[contentType ? contentType.split(';')[0] : '']; if (!serialize && isJSON(contentType)) serialize = request.serialize['application/json']; if (serialize) data = serialize(data); @@ -7247,6 +7129,10 @@ Request.prototype.end = function(fn){ xhr.setRequestHeader(field, this.header[field]); } + if (this._responseType) { + xhr.responseType = this._responseType; + } + // send stuff this.emit('request', this); @@ -7256,19 +7142,6 @@ Request.prototype.end = function(fn){ return this; }; -/** - * Faux promise support - * - * @param {Function} fulfill - * @param {Function} reject - * @return {Request} - */ - -Request.prototype.then = function (fulfill, reject) { - return this.end(function(err, res) { - err ? reject(err) : fulfill(res); - }); -} /** * Expose `Request`. @@ -7276,35 +7149,6 @@ Request.prototype.then = function (fulfill, reject) { request.Request = Request; -/** - * Issue a request: - * - * Examples: - * - * request('GET', '/users').end(callback) - * request('/users').end(callback) - * request('/users', callback) - * - * @param {String} method - * @param {String|Function} url or callback - * @return {Request} - * @api public - */ - -function request(method, url) { - // callback - if ('function' == typeof url) { - return new Request('GET', method).end(url); - } - - // url first - if (1 == arguments.length) { - return new Request('GET', method); - } - - return new Request(method, url); -} - /** * GET `url` with optional callback `fn(res)`. * @@ -7413,176 +7257,389 @@ request.put = function(url, data, fn){ return req; }; +},{"./is-object":122,"./request":124,"./request-base":123,"emitter":125,"reduce":126}],122:[function(_dereq_,module,exports){ /** - * Expose `request`. + * Check if `obj` is an object. + * + * @param {Object} obj + * @return {Boolean} + * @api private */ -module.exports = request; +function isObject(obj) { + return null != obj && 'object' == typeof obj; +} -},{"emitter":126,"reduce":127}],126:[function(require,module,exports){ +module.exports = isObject; +},{}],123:[function(_dereq_,module,exports){ /** - * Expose `Emitter`. + * Module of mixed-in functions shared between node and client code */ - -module.exports = Emitter; +var isObject = _dereq_('./is-object'); /** - * Initialize a new `Emitter`. + * Clear previous timeout. * + * @return {Request} for chaining * @api public */ -function Emitter(obj) { - if (obj) return mixin(obj); +exports.clearTimeout = function _clearTimeout(){ + this._timeout = 0; + clearTimeout(this._timer); + return this; }; /** - * Mixin the emitter properties. + * Force given parser * - * @param {Object} obj - * @return {Object} - * @api private + * Sets the body parser no matter type. + * + * @param {Function} + * @api public */ -function mixin(obj) { - for (var key in Emitter.prototype) { - obj[key] = Emitter.prototype[key]; - } - return obj; -} +exports.parse = function parse(fn){ + this._parser = fn; + return this; +}; /** - * Listen on the given `event` with `fn`. + * Set timeout to `ms`. * - * @param {String} event - * @param {Function} fn - * @return {Emitter} + * @param {Number} ms + * @return {Request} for chaining * @api public */ -Emitter.prototype.on = -Emitter.prototype.addEventListener = function(event, fn){ - this._callbacks = this._callbacks || {}; - (this._callbacks['$' + event] = this._callbacks['$' + event] || []) - .push(fn); +exports.timeout = function timeout(ms){ + this._timeout = ms; return this; }; /** - * Adds an `event` listener that will be invoked a single - * time then automatically removed. + * Faux promise support * - * @param {String} event - * @param {Function} fn - * @return {Emitter} - * @api public + * @param {Function} fulfill + * @param {Function} reject + * @return {Request} */ -Emitter.prototype.once = function(event, fn){ - function on() { - this.off(event, on); - fn.apply(this, arguments); - } +exports.then = function then(fulfill, reject) { + return this.end(function(err, res) { + err ? reject(err) : fulfill(res); + }); +} + +/** + * Allow for extension + */ - on.fn = fn; - this.on(event, on); +exports.use = function use(fn) { + fn(this); return this; -}; +} + /** - * Remove the given callback for `event` or all - * registered callbacks. + * Get request header `field`. + * Case-insensitive. * - * @param {String} event - * @param {Function} fn - * @return {Emitter} + * @param {String} field + * @return {String} * @api public */ -Emitter.prototype.off = -Emitter.prototype.removeListener = -Emitter.prototype.removeAllListeners = -Emitter.prototype.removeEventListener = function(event, fn){ - this._callbacks = this._callbacks || {}; +exports.get = function(field){ + return this._header[field.toLowerCase()]; +}; - // all - if (0 == arguments.length) { - this._callbacks = {}; - return this; - } +/** + * Get case-insensitive header `field` value. + * This is a deprecated internal API. Use `.get(field)` instead. + * + * (getHeader is no longer used internally by the superagent code base) + * + * @param {String} field + * @return {String} + * @api private + * @deprecated + */ - // specific event - var callbacks = this._callbacks['$' + event]; - if (!callbacks) return this; +exports.getHeader = exports.get; - // remove all handlers - if (1 == arguments.length) { - delete this._callbacks['$' + event]; - return this; - } +/** + * Set header `field` to `val`, or multiple fields with one object. + * Case-insensitive. + * + * Examples: + * + * req.get('/') + * .set('Accept', 'application/json') + * .set('X-API-Key', 'foobar') + * .end(callback); + * + * req.get('/') + * .set({ Accept: 'application/json', 'X-API-Key': 'foobar' }) + * .end(callback); + * + * @param {String|Object} field + * @param {String} val + * @return {Request} for chaining + * @api public + */ - // remove specific handler - var cb; - for (var i = 0; i < callbacks.length; i++) { - cb = callbacks[i]; - if (cb === fn || cb.fn === fn) { - callbacks.splice(i, 1); - break; +exports.set = function(field, val){ + if (isObject(field)) { + for (var key in field) { + this.set(key, field[key]); } + return this; } + this._header[field.toLowerCase()] = val; + this.header[field] = val; return this; }; /** - * Emit `event` with the given args. + * Remove header `field`. + * Case-insensitive. * - * @param {String} event - * @param {Mixed} ... - * @return {Emitter} + * Example: + * + * req.get('/') + * .unset('User-Agent') + * .end(callback); + * + * @param {String} field */ - -Emitter.prototype.emit = function(event){ - this._callbacks = this._callbacks || {}; - var args = [].slice.call(arguments, 1) - , callbacks = this._callbacks['$' + event]; - - if (callbacks) { - callbacks = callbacks.slice(0); - for (var i = 0, len = callbacks.length; i < len; ++i) { - callbacks[i].apply(this, args); - } - } - +exports.unset = function(field){ + delete this._header[field.toLowerCase()]; + delete this.header[field]; return this; }; /** - * Return array of callbacks for `event`. + * Write the field `name` and `val` for "multipart/form-data" + * request bodies. * - * @param {String} event - * @return {Array} + * ``` js + * request.post('/upload') + * .field('foo', 'bar') + * .end(callback); + * ``` + * + * @param {String} name + * @param {String|Blob|File|Buffer|fs.ReadStream} val + * @return {Request} for chaining * @api public */ - -Emitter.prototype.listeners = function(event){ - this._callbacks = this._callbacks || {}; - return this._callbacks['$' + event] || []; +exports.field = function(name, val) { + this._getFormData().append(name, val); + return this; }; +},{"./is-object":122}],124:[function(_dereq_,module,exports){ +// The node and browser modules expose versions of this with the +// appropriate constructor function bound as first argument /** - * Check if this emitter has `event` handlers. + * Issue a request: * - * @param {String} event - * @return {Boolean} + * Examples: + * + * request('GET', '/users').end(callback) + * request('/users').end(callback) + * request('/users', callback) + * + * @param {String} method + * @param {String|Function} url or callback + * @return {Request} * @api public */ -Emitter.prototype.hasListeners = function(event){ - return !! this.listeners(event).length; -}; +function request(RequestConstructor, method, url) { + // callback + if ('function' == typeof url) { + return new RequestConstructor('GET', method).end(url); + } + + // url first + if (2 == arguments.length) { + return new RequestConstructor('GET', method); + } + + return new RequestConstructor(method, url); +} + +module.exports = request; -},{}],127:[function(require,module,exports){ +},{}],125:[function(_dereq_,module,exports){ + +/** + * Expose `Emitter`. + */ + +if (typeof module !== 'undefined') { + module.exports = Emitter; +} + +/** + * Initialize a new `Emitter`. + * + * @api public + */ + +function Emitter(obj) { + if (obj) return mixin(obj); +}; + +/** + * Mixin the emitter properties. + * + * @param {Object} obj + * @return {Object} + * @api private + */ + +function mixin(obj) { + for (var key in Emitter.prototype) { + obj[key] = Emitter.prototype[key]; + } + return obj; +} + +/** + * Listen on the given `event` with `fn`. + * + * @param {String} event + * @param {Function} fn + * @return {Emitter} + * @api public + */ + +Emitter.prototype.on = +Emitter.prototype.addEventListener = function(event, fn){ + this._callbacks = this._callbacks || {}; + (this._callbacks['$' + event] = this._callbacks['$' + event] || []) + .push(fn); + return this; +}; + +/** + * Adds an `event` listener that will be invoked a single + * time then automatically removed. + * + * @param {String} event + * @param {Function} fn + * @return {Emitter} + * @api public + */ + +Emitter.prototype.once = function(event, fn){ + function on() { + this.off(event, on); + fn.apply(this, arguments); + } + + on.fn = fn; + this.on(event, on); + return this; +}; + +/** + * Remove the given callback for `event` or all + * registered callbacks. + * + * @param {String} event + * @param {Function} fn + * @return {Emitter} + * @api public + */ + +Emitter.prototype.off = +Emitter.prototype.removeListener = +Emitter.prototype.removeAllListeners = +Emitter.prototype.removeEventListener = function(event, fn){ + this._callbacks = this._callbacks || {}; + + // all + if (0 == arguments.length) { + this._callbacks = {}; + return this; + } + + // specific event + var callbacks = this._callbacks['$' + event]; + if (!callbacks) return this; + + // remove all handlers + if (1 == arguments.length) { + delete this._callbacks['$' + event]; + return this; + } + + // remove specific handler + var cb; + for (var i = 0; i < callbacks.length; i++) { + cb = callbacks[i]; + if (cb === fn || cb.fn === fn) { + callbacks.splice(i, 1); + break; + } + } + return this; +}; + +/** + * Emit `event` with the given args. + * + * @param {String} event + * @param {Mixed} ... + * @return {Emitter} + */ + +Emitter.prototype.emit = function(event){ + this._callbacks = this._callbacks || {}; + var args = [].slice.call(arguments, 1) + , callbacks = this._callbacks['$' + event]; + + if (callbacks) { + callbacks = callbacks.slice(0); + for (var i = 0, len = callbacks.length; i < len; ++i) { + callbacks[i].apply(this, args); + } + } + + return this; +}; + +/** + * Return array of callbacks for `event`. + * + * @param {String} event + * @return {Array} + * @api public + */ + +Emitter.prototype.listeners = function(event){ + this._callbacks = this._callbacks || {}; + return this._callbacks['$' + event] || []; +}; + +/** + * Check if this emitter has `event` handlers. + * + * @param {String} event + * @return {Boolean} + * @api public + */ + +Emitter.prototype.hasListeners = function(event){ + return !! this.listeners(event).length; +}; + +},{}],126:[function(_dereq_,module,exports){ /** * Reduce `arr` with `fn`. @@ -7607,7 +7664,7 @@ module.exports = function(arr, fn, initial){ return curr; }; -},{}],128:[function(require,module,exports){ +},{}],127:[function(_dereq_,module,exports){ /** * Indicates that navigation was caused by a call to history.push. */ @@ -7639,7 +7696,7 @@ exports['default'] = { REPLACE: REPLACE, POP: POP }; -},{}],129:[function(require,module,exports){ +},{}],128:[function(_dereq_,module,exports){ "use strict"; exports.__esModule = true; @@ -7666,7 +7723,7 @@ function loopAsync(turns, work, callback) { next(); } -},{}],130:[function(require,module,exports){ +},{}],129:[function(_dereq_,module,exports){ (function (process){ /*eslint-disable no-empty */ 'use strict'; @@ -7677,7 +7734,7 @@ exports.readState = readState; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _warning = require('warning'); +var _warning = _dereq_('warning'); var _warning2 = _interopRequireDefault(_warning); @@ -7736,9 +7793,9 @@ function readState(key) { return null; } -}).call(this,require('_process')) +}).call(this,_dereq_('_process')) -},{"_process":2,"warning":150}],131:[function(require,module,exports){ +},{"_process":2,"warning":149}],130:[function(_dereq_,module,exports){ 'use strict'; exports.__esModule = true; @@ -7819,13 +7876,13 @@ function supportsGoWithoutReloadUsingHash() { var ua = navigator.userAgent; return ua.indexOf('Firefox') === -1; } -},{}],132:[function(require,module,exports){ +},{}],131:[function(_dereq_,module,exports){ 'use strict'; exports.__esModule = true; var canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement); exports.canUseDOM = canUseDOM; -},{}],133:[function(require,module,exports){ +},{}],132:[function(_dereq_,module,exports){ (function (process){ 'use strict'; @@ -7835,15 +7892,15 @@ var _extends = Object.assign || function (target) { for (var i = 1; i < argument function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _invariant = require('invariant'); +var _invariant = _dereq_('invariant'); var _invariant2 = _interopRequireDefault(_invariant); -var _ExecutionEnvironment = require('./ExecutionEnvironment'); +var _ExecutionEnvironment = _dereq_('./ExecutionEnvironment'); -var _DOMUtils = require('./DOMUtils'); +var _DOMUtils = _dereq_('./DOMUtils'); -var _createHistory = require('./createHistory'); +var _createHistory = _dereq_('./createHistory'); var _createHistory2 = _interopRequireDefault(_createHistory); @@ -7867,9 +7924,9 @@ function createDOMHistory(options) { exports['default'] = createDOMHistory; module.exports = exports['default']; -}).call(this,require('_process')) +}).call(this,_dereq_('_process')) -},{"./DOMUtils":131,"./ExecutionEnvironment":132,"./createHistory":135,"_process":2,"invariant":147}],134:[function(require,module,exports){ +},{"./DOMUtils":130,"./ExecutionEnvironment":131,"./createHistory":134,"_process":2,"invariant":146}],133:[function(_dereq_,module,exports){ (function (process){ 'use strict'; @@ -7879,27 +7936,27 @@ var _extends = Object.assign || function (target) { for (var i = 1; i < argument function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _warning = require('warning'); +var _warning = _dereq_('warning'); var _warning2 = _interopRequireDefault(_warning); -var _invariant = require('invariant'); +var _invariant = _dereq_('invariant'); var _invariant2 = _interopRequireDefault(_invariant); -var _Actions = require('./Actions'); +var _Actions = _dereq_('./Actions'); -var _ExecutionEnvironment = require('./ExecutionEnvironment'); +var _ExecutionEnvironment = _dereq_('./ExecutionEnvironment'); -var _DOMUtils = require('./DOMUtils'); +var _DOMUtils = _dereq_('./DOMUtils'); -var _DOMStateStorage = require('./DOMStateStorage'); +var _DOMStateStorage = _dereq_('./DOMStateStorage'); -var _createDOMHistory = require('./createDOMHistory'); +var _createDOMHistory = _dereq_('./createDOMHistory'); var _createDOMHistory2 = _interopRequireDefault(_createDOMHistory); -var _parsePath = require('./parsePath'); +var _parsePath = _dereq_('./parsePath'); var _parsePath2 = _interopRequireDefault(_parsePath); @@ -8119,9 +8176,9 @@ function createHashHistory() { exports['default'] = createHashHistory; module.exports = exports['default']; -}).call(this,require('_process')) +}).call(this,_dereq_('_process')) -},{"./Actions":128,"./DOMStateStorage":130,"./DOMUtils":131,"./ExecutionEnvironment":132,"./createDOMHistory":133,"./parsePath":140,"_process":2,"invariant":147,"warning":150}],135:[function(require,module,exports){ +},{"./Actions":127,"./DOMStateStorage":129,"./DOMUtils":130,"./ExecutionEnvironment":131,"./createDOMHistory":132,"./parsePath":139,"_process":2,"invariant":146,"warning":149}],134:[function(_dereq_,module,exports){ //import warning from 'warning' 'use strict'; @@ -8131,27 +8188,27 @@ var _extends = Object.assign || function (target) { for (var i = 1; i < argument function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _deepEqual = require('deep-equal'); +var _deepEqual = _dereq_('deep-equal'); var _deepEqual2 = _interopRequireDefault(_deepEqual); -var _AsyncUtils = require('./AsyncUtils'); +var _AsyncUtils = _dereq_('./AsyncUtils'); -var _Actions = require('./Actions'); +var _Actions = _dereq_('./Actions'); -var _createLocation2 = require('./createLocation'); +var _createLocation2 = _dereq_('./createLocation'); var _createLocation3 = _interopRequireDefault(_createLocation2); -var _runTransitionHook = require('./runTransitionHook'); +var _runTransitionHook = _dereq_('./runTransitionHook'); var _runTransitionHook2 = _interopRequireDefault(_runTransitionHook); -var _parsePath = require('./parsePath'); +var _parsePath = _dereq_('./parsePath'); var _parsePath2 = _interopRequireDefault(_parsePath); -var _deprecate = require('./deprecate'); +var _deprecate = _dereq_('./deprecate'); var _deprecate2 = _interopRequireDefault(_deprecate); @@ -8413,7 +8470,7 @@ function createHistory() { exports['default'] = createHistory; module.exports = exports['default']; -},{"./Actions":128,"./AsyncUtils":129,"./createLocation":136,"./deprecate":138,"./parsePath":140,"./runTransitionHook":141,"deep-equal":144}],136:[function(require,module,exports){ +},{"./Actions":127,"./AsyncUtils":128,"./createLocation":135,"./deprecate":137,"./parsePath":139,"./runTransitionHook":140,"deep-equal":143}],135:[function(_dereq_,module,exports){ //import warning from 'warning' 'use strict'; @@ -8423,9 +8480,9 @@ var _extends = Object.assign || function (target) { for (var i = 1; i < argument function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _Actions = require('./Actions'); +var _Actions = _dereq_('./Actions'); -var _parsePath = require('./parsePath'); +var _parsePath = _dereq_('./parsePath'); var _parsePath2 = _interopRequireDefault(_parsePath); @@ -8468,7 +8525,7 @@ function createLocation() { exports['default'] = createLocation; module.exports = exports['default']; -},{"./Actions":128,"./parsePath":140}],137:[function(require,module,exports){ +},{"./Actions":127,"./parsePath":139}],136:[function(_dereq_,module,exports){ (function (process){ 'use strict'; @@ -8478,21 +8535,21 @@ var _extends = Object.assign || function (target) { for (var i = 1; i < argument function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _warning = require('warning'); +var _warning = _dereq_('warning'); var _warning2 = _interopRequireDefault(_warning); -var _invariant = require('invariant'); +var _invariant = _dereq_('invariant'); var _invariant2 = _interopRequireDefault(_invariant); -var _Actions = require('./Actions'); +var _Actions = _dereq_('./Actions'); -var _createHistory = require('./createHistory'); +var _createHistory = _dereq_('./createHistory'); var _createHistory2 = _interopRequireDefault(_createHistory); -var _parsePath = require('./parsePath'); +var _parsePath = _dereq_('./parsePath'); var _parsePath2 = _interopRequireDefault(_parsePath); @@ -8625,9 +8682,9 @@ function createMemoryHistory() { exports['default'] = createMemoryHistory; module.exports = exports['default']; -}).call(this,require('_process')) +}).call(this,_dereq_('_process')) -},{"./Actions":128,"./createHistory":135,"./parsePath":140,"_process":2,"invariant":147,"warning":150}],138:[function(require,module,exports){ +},{"./Actions":127,"./createHistory":134,"./parsePath":139,"_process":2,"invariant":146,"warning":149}],137:[function(_dereq_,module,exports){ //import warning from 'warning' "use strict"; @@ -8643,7 +8700,7 @@ function deprecate(fn) { exports["default"] = deprecate; module.exports = exports["default"]; -},{}],139:[function(require,module,exports){ +},{}],138:[function(_dereq_,module,exports){ "use strict"; exports.__esModule = true; @@ -8657,7 +8714,7 @@ function extractPath(string) { exports["default"] = extractPath; module.exports = exports["default"]; -},{}],140:[function(require,module,exports){ +},{}],139:[function(_dereq_,module,exports){ (function (process){ 'use strict'; @@ -8665,11 +8722,11 @@ exports.__esModule = true; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _warning = require('warning'); +var _warning = _dereq_('warning'); var _warning2 = _interopRequireDefault(_warning); -var _extractPath = require('./extractPath'); +var _extractPath = _dereq_('./extractPath'); var _extractPath2 = _interopRequireDefault(_extractPath); @@ -8703,9 +8760,9 @@ function parsePath(path) { exports['default'] = parsePath; module.exports = exports['default']; -}).call(this,require('_process')) +}).call(this,_dereq_('_process')) -},{"./extractPath":139,"_process":2,"warning":150}],141:[function(require,module,exports){ +},{"./extractPath":138,"_process":2,"warning":149}],140:[function(_dereq_,module,exports){ (function (process){ 'use strict'; @@ -8713,7 +8770,7 @@ exports.__esModule = true; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _warning = require('warning'); +var _warning = _dereq_('warning'); var _warning2 = _interopRequireDefault(_warning); @@ -8731,9 +8788,9 @@ function runTransitionHook(hook, location, callback) { exports['default'] = runTransitionHook; module.exports = exports['default']; -}).call(this,require('_process')) +}).call(this,_dereq_('_process')) -},{"_process":2,"warning":150}],142:[function(require,module,exports){ +},{"_process":2,"warning":149}],141:[function(_dereq_,module,exports){ 'use strict'; exports.__esModule = true; @@ -8744,21 +8801,21 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'd function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; } -var _ExecutionEnvironment = require('./ExecutionEnvironment'); +var _ExecutionEnvironment = _dereq_('./ExecutionEnvironment'); -var _runTransitionHook = require('./runTransitionHook'); +var _runTransitionHook = _dereq_('./runTransitionHook'); var _runTransitionHook2 = _interopRequireDefault(_runTransitionHook); -var _extractPath = require('./extractPath'); +var _extractPath = _dereq_('./extractPath'); var _extractPath2 = _interopRequireDefault(_extractPath); -var _parsePath = require('./parsePath'); +var _parsePath = _dereq_('./parsePath'); var _parsePath2 = _interopRequireDefault(_parsePath); -var _deprecate = require('./deprecate'); +var _deprecate = _dereq_('./deprecate'); var _deprecate2 = _interopRequireDefault(_deprecate); @@ -8874,7 +8931,7 @@ function useBasename(createHistory) { exports['default'] = useBasename; module.exports = exports['default']; -},{"./ExecutionEnvironment":132,"./deprecate":138,"./extractPath":139,"./parsePath":140,"./runTransitionHook":141}],143:[function(require,module,exports){ +},{"./ExecutionEnvironment":131,"./deprecate":137,"./extractPath":138,"./parsePath":139,"./runTransitionHook":140}],142:[function(_dereq_,module,exports){ (function (process){ 'use strict'; @@ -8886,21 +8943,21 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'd function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; } -var _warning = require('warning'); +var _warning = _dereq_('warning'); var _warning2 = _interopRequireDefault(_warning); -var _queryString = require('query-string'); +var _queryString = _dereq_('query-string'); -var _runTransitionHook = require('./runTransitionHook'); +var _runTransitionHook = _dereq_('./runTransitionHook'); var _runTransitionHook2 = _interopRequireDefault(_runTransitionHook); -var _parsePath = require('./parsePath'); +var _parsePath = _dereq_('./parsePath'); var _parsePath2 = _interopRequireDefault(_parsePath); -var _deprecate = require('./deprecate'); +var _deprecate = _dereq_('./deprecate'); var _deprecate2 = _interopRequireDefault(_deprecate); @@ -9048,12 +9105,12 @@ function useQueries(createHistory) { exports['default'] = useQueries; module.exports = exports['default']; -}).call(this,require('_process')) +}).call(this,_dereq_('_process')) -},{"./deprecate":138,"./parsePath":140,"./runTransitionHook":141,"_process":2,"query-string":148,"warning":150}],144:[function(require,module,exports){ +},{"./deprecate":137,"./parsePath":139,"./runTransitionHook":140,"_process":2,"query-string":147,"warning":149}],143:[function(_dereq_,module,exports){ var pSlice = Array.prototype.slice; -var objectKeys = require('./lib/keys.js'); -var isArguments = require('./lib/is_arguments.js'); +var objectKeys = _dereq_('./lib/keys.js'); +var isArguments = _dereq_('./lib/is_arguments.js'); var deepEqual = module.exports = function (actual, expected, opts) { if (!opts) opts = {}; @@ -9146,7 +9203,7 @@ function objEquiv(a, b, opts) { return typeof a === typeof b; } -},{"./lib/is_arguments.js":145,"./lib/keys.js":146}],145:[function(require,module,exports){ +},{"./lib/is_arguments.js":144,"./lib/keys.js":145}],144:[function(_dereq_,module,exports){ var supportsArgumentsClass = (function(){ return Object.prototype.toString.call(arguments) })() == '[object Arguments]'; @@ -9168,7 +9225,7 @@ function unsupported(object){ false; }; -},{}],146:[function(require,module,exports){ +},{}],145:[function(_dereq_,module,exports){ exports = module.exports = typeof Object.keys === 'function' ? Object.keys : shim; @@ -9179,7 +9236,7 @@ function shim (obj) { return keys; } -},{}],147:[function(require,module,exports){ +},{}],146:[function(_dereq_,module,exports){ (function (process){ /** * Copyright 2013-2015, Facebook, Inc. @@ -9233,11 +9290,11 @@ var invariant = function(condition, format, a, b, c, d, e, f) { module.exports = invariant; -}).call(this,require('_process')) +}).call(this,_dereq_('_process')) -},{"_process":2}],148:[function(require,module,exports){ +},{"_process":2}],147:[function(_dereq_,module,exports){ 'use strict'; -var strictUriEncode = require('strict-uri-encode'); +var strictUriEncode = _dereq_('strict-uri-encode'); exports.extract = function (str) { return str.split('?')[1] || ''; @@ -9292,7 +9349,7 @@ exports.stringify = function (obj) { } if (Array.isArray(val)) { - return val.sort().map(function (val2) { + return val.slice().sort().map(function (val2) { return strictUriEncode(key) + '=' + strictUriEncode(val2); }).join('&'); } @@ -9303,7 +9360,7 @@ exports.stringify = function (obj) { }).join('&') : ''; }; -},{"strict-uri-encode":149}],149:[function(require,module,exports){ +},{"strict-uri-encode":148}],148:[function(_dereq_,module,exports){ 'use strict'; module.exports = function (str) { return encodeURIComponent(str).replace(/[!'()*]/g, function (c) { @@ -9311,7 +9368,7 @@ module.exports = function (str) { }); }; -},{}],150:[function(require,module,exports){ +},{}],149:[function(_dereq_,module,exports){ (function (process){ /** * Copyright 2014-2015, Facebook, Inc. @@ -9374,609 +9431,651 @@ if (process.env.NODE_ENV !== 'production') { module.exports = warning; -}).call(this,require('_process')) +}).call(this,_dereq_('_process')) -},{"_process":2}],151:[function(require,module,exports){ +},{"_process":2}],150:[function(_dereq_,module,exports){ (function (global){ -var m = require('./lib/core.js'), - IntlPolyfill = m['default']; - // Expose `IntlPolyfill` as global to add locale data into runtime later on. -global.IntlPolyfill = IntlPolyfill; +global.IntlPolyfill = _dereq_('./lib/core.js'); // Require all locale data for `Intl`. This module will be // ignored when bundling for the browser with Browserify/Webpack. -require('./locale-data/complete.js'); +_dereq_('./locale-data/complete.js'); // hack to export the polyfill as global Intl if needed if (!global.Intl) { - global.Intl = IntlPolyfill; - IntlPolyfill.__applyLocaleSensitivePrototypes(); + global.Intl = global.IntlPolyfill; + global.IntlPolyfill.__applyLocaleSensitivePrototypes(); } // providing an idiomatic api for the nodejs version of this module -module.exports = exports = IntlPolyfill; -// preserving the original api in case another module is relying on that -exports['default'] = IntlPolyfill; +module.exports = global.IntlPolyfill; }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"./lib/core.js":153,"./locale-data/complete.js":1}],152:[function(require,module,exports){ -/* jslint esnext: true */ - -// Match these datetime components in a CLDR pattern, except those in single quotes -"use strict"; -exports.createDateTimeFormat = createDateTimeFormat, exports.createDateTimeFormats = createDateTimeFormats; -var expDTComponents = /(?:[Eec]{1,6}|G{1,5}|[Qq]{1,5}|(?:[yYur]+|U{1,5})|[ML]{1,5}|d{1,2}|D{1,3}|F{1}|[abB]{1,5}|[hkHK]{1,2}|w{1,2}|W{1}|m{1,2}|s{1,2}|[zZOvVxX]{1,4})(?=([^']*'[^']*')*[^']*$)/g; -// trim patterns after transformations -var expPatternTrimmer = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g; -// Skip over patterns with these datetime components because we don't have data -// to back them up: -// timezone, weekday, amoung others -var unwantedDTCs = /[rqQxXVOvZASjJgwWIQq]/; - -var dtKeys = ["weekday", "era", "year", "month", "day", "weekday", "quarter"]; -var tmKeys = ["hour", "minute", "second", "hour12", "timeZoneName"]; +},{"./lib/core.js":151,"./locale-data/complete.js":1}],151:[function(_dereq_,module,exports){ +'use strict'; -function isDateFormatOnly(obj) { - for (var i = 0; i < tmKeys.length; i += 1) { - if (obj.hasOwnProperty(tmKeys[i])) { - return false; - } - } - return true; -} +var babelHelpers = {}; +babelHelpers.typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { + return typeof obj; +} : function (obj) { + return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; +}; +babelHelpers; -function isTimeFormatOnly(obj) { - for (var i = 0; i < dtKeys.length; i += 1) { - if (obj.hasOwnProperty(dtKeys[i])) { - return false; - } +var realDefineProp = function () { + var sentinel = {}; + try { + Object.defineProperty(sentinel, 'a', {}); + return 'a' in sentinel; + } catch (e) { + return false; } - return true; -} +}(); -function joinDateAndTimeFormats(dateFormatObj, timeFormatObj) { - var o = {}; - for (var i = 0; i < dtKeys.length; i += 1) { - if (dateFormatObj[dtKeys[i]]) { - o[dtKeys[i]] = dateFormatObj[dtKeys[i]]; - } - } - for (var j = 0; j < tmKeys.length; j += 1) { - if (timeFormatObj[tmKeys[j]]) { - o[tmKeys[j]] = timeFormatObj[tmKeys[j]]; - } - } - return o; -} +// Need a workaround for getters in ES3 +var es3 = !realDefineProp && !Object.prototype.__defineGetter__; -function computeFinalPatterns(formatObj) { - // From http://www.unicode.org/reports/tr35/tr35-dates.html#Date_Format_Patterns: - // 'In patterns, two single quotes represents a literal single quote, either - // inside or outside single quotes. Text within single quotes is not - // interpreted in any way (except for two adjacent single quotes).' - formatObj.pattern12 = formatObj.extendedPattern.replace(/'([^']*)'/g, function ($0, literal) { - return literal ? literal : "'"; - }); +// We use this a lot (and need it for proto-less objects) +var hop = Object.prototype.hasOwnProperty; - // pattern 12 is always the default. we can produce the 24 by removing {ampm} - formatObj.pattern = formatObj.pattern12.replace('{ampm}', '').replace(expPatternTrimmer, ''); - return formatObj; -} +// Naive defineProperty for compatibility +var defineProperty = realDefineProp ? Object.defineProperty : function (obj, name, desc) { + if ('get' in desc && obj.__defineGetter__) obj.__defineGetter__(name, desc.get);else if (!hop.call(obj, name) || 'value' in desc) obj[name] = desc.value; +}; -function createDateTimeFormat(skeleton, pattern) { - // we ignore certain patterns that are unsupported to avoid this expensive op. - if (unwantedDTCs.test(pattern)) - return undefined; +// Array.prototype.indexOf, as good as we need it to be +var arrIndexOf = Array.prototype.indexOf || function (search) { + /*jshint validthis:true */ + var t = this; + if (!t.length) return -1; - var formatObj = { - originalPattern: pattern - }; + for (var i = arguments[1] || 0, max = t.length; i < max; i++) { + if (t[i] === search) return i; + } - // Replace the pattern string with the one required by the specification, whilst - // at the same time evaluating it for the subsets and formats - formatObj.extendedPattern = pattern.replace(expDTComponents, function ($0) { - // See which symbol we're dealing with - switch ($0.charAt(0)) { - - // --- Era - case 'G': - return '{era}'; - - // --- Year - case 'y': - case 'Y': - case 'u': - case 'U': - case 'r': - return '{year}'; - - // --- Quarter (not supported in this polyfill) - case 'Q': - case 'q': - return '{quarter}'; - - // --- Month - case 'M': - case 'L': - return '{month}'; - - // --- Week (not supported in this polyfill) - case 'w': - case 'W': - return '{weekday}'; - - // --- Day - case 'd': - case 'D': - case 'F': - case 'g': - return '{day}'; - - // --- Week Day - case 'E': - case 'e': - case 'c': - return '{weekday}'; - - // --- Period - case 'a': - case 'b': - case 'B': - return '{ampm}'; - - // --- Hour - case 'h': - case 'H': - case 'k': - case 'K': - return '{hour}'; - - // --- Minute - case 'm': - return '{minute}'; - - // --- Second - case 's': - case 'S': - case 'A': - return '{second}'; - - // --- Timezone - case 'z': - case 'Z': - case 'O': - case 'v': - case 'V': - case 'X': - case 'x': - return '{timeZoneName}'; + return -1; +}; - } - }); +// Create an object with the specified prototype (2nd arg required for Record) +var objCreate = Object.create || function (proto, props) { + var obj = void 0; - // Match the skeleton string with the one required by the specification - // this implementation is based on the Date Field Symbol Table: - // http://unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table - // Note: we are adding extra data to the formatObject even though this polyfill - // might not support it. - skeleton.replace(expDTComponents, function ($0) { - // See which symbol we're dealing with - switch ($0.charAt(0)) { + function F() {} + F.prototype = proto; + obj = new F(); - // --- Era - case 'G': - formatObj.era = [ 'short', 'short', 'short', 'long', 'narrow' ][$0.length-1]; - break; + for (var k in props) { + if (hop.call(props, k)) defineProperty(obj, k, props[k]); + } - // --- Year - case 'y': - case 'Y': - case 'u': - case 'U': - formatObj.year = $0.length === 2 ? '2-digit' : 'numeric'; - break; - // case 'r': - // r: 1..n - For the Gregorian calendar, the 'r' year is the same as the 'u' year. - // break; - - // --- Quarter (not supported in this polyfill) - case 'Q': - case 'q': - formatObj.quarter = [ 'numeric', '2-digit', 'short', 'long', 'narrow' ][$0.length-1]; - break; + return obj; +}; - // --- Month - case 'M': - case 'L': - formatObj.month = [ 'numeric', '2-digit', 'short', 'long', 'narrow' ][$0.length-1]; - break; +// Snapshot some (hopefully still) native built-ins +var arrSlice = Array.prototype.slice; +var arrConcat = Array.prototype.concat; +var arrPush = Array.prototype.push; +var arrJoin = Array.prototype.join; +var arrShift = Array.prototype.shift; + +// Naive Function.prototype.bind for compatibility +var fnBind = Function.prototype.bind || function (thisObj) { + var fn = this, + args = arrSlice.call(arguments, 1); + + // All our (presently) bound functions have either 1 or 0 arguments. By returning + // different function signatures, we can pass some tests in ES3 environments + if (fn.length === 1) { + return function () { + return fn.apply(thisObj, arrConcat.call(args, arrSlice.call(arguments))); + }; + } + return function () { + return fn.apply(thisObj, arrConcat.call(args, arrSlice.call(arguments))); + }; +}; - // --- Week (not supported in this polyfill) - case 'w': - // week of the year - formatObj.week = $0.length === 2 ? '2-digit' : 'numeric'; - break; - case 'W': - // week of the month - formatObj.week = 'numeric'; - break; +// Object housing internal properties for constructors +var internals = objCreate(null); - // --- Day - case 'd': - // day of the month - formatObj.day = $0.length === 2 ? '2-digit' : 'numeric'; - break; - case 'D': - // day of the year - formatObj.day = 'numeric'; - break; - case 'F': - // day of the week - formatObj.day = 'numeric'; - break; - // case 'g': - // 1..n: Modified Julian day - // break; - - // --- Week Day - case 'E': - // day of the week - formatObj.weekday = [ 'short', 'short', 'short', 'long', 'narrow', 'short' ][$0.length-1]; - break; - case 'e': - // local day of the week - formatObj.weekday = [ 'numeric', '2-digit', 'short', 'long', 'narrow', 'short' ][$0.length-1]; - break; - case 'c': - // stand alone local day of the week - formatObj.weekday = [ 'numeric', undefined, 'short', 'long', 'narrow', 'short' ][$0.length-1]; - break; +// Keep internal properties internal +var secret = Math.random(); - // --- Period - case 'a': // AM, PM - case 'b': // am, pm, noon, midnight - case 'B': // flexible day periods - formatObj.hour12 = true; - break; +// Helper functions +// ================ - // --- Hour - case 'H': - case 'k': - formatObj.hour = $0.length === 2 ? '2-digit' : 'numeric'; - break; - case 'h': - case 'K': - formatObj.hour12 = true; // 12-hour-cycle time formats (using h or K) - formatObj.hour = $0.length === 2 ? '2-digit' : 'numeric'; - break; +/** + * A function to deal with the inaccuracy of calculating log10 in pre-ES6 + * JavaScript environments. Math.log(num) / Math.LN10 was responsible for + * causing issue #62. + */ +function log10Floor(n) { + // ES6 provides the more accurate Math.log10 + if (typeof Math.log10 === 'function') return Math.floor(Math.log10(n)); - // --- Minute - case 'm': - formatObj.minute = $0.length === 2 ? '2-digit' : 'numeric'; - break; + var x = Math.round(Math.log(n) * Math.LOG10E); + return x - (Number('1e' + x) > n); +} - // --- Second - case 's': - formatObj.second = $0.length === 2 ? '2-digit' : 'numeric'; - break; - // case 'S': // 1..n: factional seconds - // case 'A': // 1..n: miliseconds in day - - // --- Timezone - case 'z': // 1..3, 4: specific non-location format - case 'Z': // 1..3, 4, 5: The ISO8601 varios formats - case 'O': // 1, 4: miliseconds in day short, long - case 'v': // 1, 4: generic non-location format - case 'V': // 1, 2, 3, 4: time zone ID or city - case 'X': // 1, 2, 3, 4: The ISO8601 varios formats - case 'x': // 1, 2, 3, 4: The ISO8601 varios formats - // this polyfill only supports much, for now, we are just doing something dummy - formatObj.timeZoneName = $0.length < 4 ? 'short' : 'long'; - break; +/** + * A map that doesn't contain Object in its prototype chain + */ +function Record(obj) { + // Copy only own properties over unless this object is already a Record instance + for (var k in obj) { + if (obj instanceof Record || hop.call(obj, k)) defineProperty(this, k, { value: obj[k], enumerable: true, writable: true, configurable: true }); + } +} +Record.prototype = objCreate(null); - } - }); +/** + * An ordered list + */ +function List() { + defineProperty(this, 'length', { writable: true, value: 0 }); - return computeFinalPatterns(formatObj); + if (arguments.length) arrPush.apply(this, arrSlice.call(arguments)); } +List.prototype = objCreate(null); -function createDateTimeFormats(formats) { - var availableFormats = formats.availableFormats; - var timeFormats = formats.timeFormats; - var dateFormats = formats.dateFormats; - var result = []; - var skeleton, pattern, computed, i, j; - var timeRelatedFormats = []; - var dateRelatedFormats = []; +/** + * Constructs a regular expression to restore tainted RegExp properties + */ +function createRegExpRestore() { + var esc = /[.?*+^$[\]\\(){}|-]/g, + lm = RegExp.lastMatch || '', + ml = RegExp.multiline ? 'm' : '', + ret = { input: RegExp.input }, + reg = new List(), + has = false, + cap = {}; - // Map available (custom) formats into a pattern for createDateTimeFormats - for (skeleton in availableFormats) { - if (availableFormats.hasOwnProperty(skeleton)) { - pattern = availableFormats[skeleton]; - computed = createDateTimeFormat(skeleton, pattern); - if (computed) { - result.push(computed); - // in some cases, the format is only displaying date specific props - // or time specific props, in which case we need to also produce the - // combined formats. - if (isDateFormatOnly(computed)) { - dateRelatedFormats.push(computed); - } else if (isTimeFormatOnly(computed)) { - timeRelatedFormats.push(computed); - } - } - } - } + // Create a snapshot of all the 'captured' properties + for (var i = 1; i <= 9; i++) { + has = (cap['$' + i] = RegExp['$' + i]) || has; + } // Now we've snapshotted some properties, escape the lastMatch string + lm = lm.replace(esc, '\\$&'); - // Map time formats into a pattern for createDateTimeFormats - for (skeleton in timeFormats) { - if (timeFormats.hasOwnProperty(skeleton)) { - pattern = timeFormats[skeleton]; - computed = createDateTimeFormat(skeleton, pattern); - if (computed) { - result.push(computed); - timeRelatedFormats.push(computed); - } - } - } + // If any of the captured strings were non-empty, iterate over them all + if (has) { + for (var _i = 1; _i <= 9; _i++) { + var m = cap['$' + _i]; - // Map date formats into a pattern for createDateTimeFormats - for (skeleton in dateFormats) { - if (dateFormats.hasOwnProperty(skeleton)) { - pattern = dateFormats[skeleton]; - computed = createDateTimeFormat(skeleton, pattern); - if (computed) { - result.push(computed); - dateRelatedFormats.push(computed); - } - } - } + // If it's empty, add an empty capturing group + if (!m) lm = '()' + lm; - // combine custom time and custom date formats when they are orthogonals to complete the - // formats supported by CLDR. - // This Algo is based on section "Missing Skeleton Fields" from: - // http://unicode.org/reports/tr35/tr35-dates.html#availableFormats_appendItems - for (i = 0; i < timeRelatedFormats.length; i += 1) { - for (j = 0; j < dateRelatedFormats.length; j += 1) { - if (dateRelatedFormats[j].month === 'long') { - pattern = dateRelatedFormats[j].weekday ? formats.full : formats.long; - } else if (dateRelatedFormats[j].month === 'short') { - pattern = formats.medium; - } else { - pattern = formats.short; - } - computed = joinDateAndTimeFormats(dateRelatedFormats[j], timeRelatedFormats[i]); - computed.originalPattern = pattern; - computed.extendedPattern = pattern - .replace('{0}', timeRelatedFormats[i].extendedPattern) - .replace('{1}', dateRelatedFormats[j].extendedPattern) - .replace(/^[,\s]+|[,\s]+$/gi, ''); - result.push(computeFinalPatterns(computed)); + // Else find the string in lm and escape & wrap it to capture it + else { + m = m.replace(esc, '\\$&'); + lm = lm.replace(m, '(' + m + ')'); + } + + // Push it to the reg and chop lm to make sure further groups come after + arrPush.call(reg, lm.slice(0, lm.indexOf('(') + 1)); + lm = lm.slice(lm.indexOf('(') + 1); } } - return result; -} + // Create the regular expression that will reconstruct the RegExp properties + ret.exp = new RegExp(arrJoin.call(reg, '') + lm, ml); + return ret; +} -},{}],153:[function(require,module,exports){ /** - * @license Copyright 2013 Andy Earnshaw, MIT License - * - * Implements the ECMAScript Internationalization API in ES5-compatible environments, - * following the ECMA-402 specification as closely as possible - * - * ECMA-402: http://ecma-international.org/ecma-402/1.0/ - * - * CLDR format locale data should be provided using IntlPolyfill.__addLocaleData(). + * Mimics ES5's abstract ToObject() function */ -/*jshint esnext: true, proto:true, eqnull:true, boss:true, laxbreak:true, newcap:false, shadow:true, funcscope:true */ - -"use strict"; -var src$exp$$ = require("./exp"), src$cldr$$ = require("./cldr"); - -var Intl = {}, +function toObject(arg) { + if (arg === null) throw new TypeError('Cannot convert null or undefined to object'); - realDefineProp = (function () { - var sentinel = {}; - try { - Object.defineProperty(sentinel, 'a', {}); - return 'a' in sentinel; - } catch (e) { - return false; - } - })(), + return Object(arg); +} - // Need a workaround for getters in ES3 - es3 = !realDefineProp && !Object.prototype.__defineGetter__, +/** + * Returns "internal" properties for an object + */ +function getInternalProperties(obj) { + if (hop.call(obj, '__getInternalProperties')) return obj.__getInternalProperties(secret); - // We use this a lot (and need it for proto-less objects) - hop = Object.prototype.hasOwnProperty, + return objCreate(null); +} - // Naive defineProperty for compatibility - defineProperty = realDefineProp ? Object.defineProperty : function (obj, name, desc) { - if ('get' in desc && obj.__defineGetter__) - obj.__defineGetter__(name, desc.get); +/** +* Defines regular expressions for various operations related to the BCP 47 syntax, +* as defined at http://tools.ietf.org/html/bcp47#section-2.1 +*/ - else if (!hop.call(obj, name) || 'value' in desc) - obj[name] = desc.value; +// extlang = 3ALPHA ; selected ISO 639 codes +// *2("-" 3ALPHA) ; permanently reserved +var extlang = '[a-z]{3}(?:-[a-z]{3}){0,2}'; + +// language = 2*3ALPHA ; shortest ISO 639 code +// ["-" extlang] ; sometimes followed by +// ; extended language subtags +// / 4ALPHA ; or reserved for future use +// / 5*8ALPHA ; or registered language subtag +var language = '(?:[a-z]{2,3}(?:-' + extlang + ')?|[a-z]{4}|[a-z]{5,8})'; + +// script = 4ALPHA ; ISO 15924 code +var script = '[a-z]{4}'; + +// region = 2ALPHA ; ISO 3166-1 code +// / 3DIGIT ; UN M.49 code +var region = '(?:[a-z]{2}|\\d{3})'; + +// variant = 5*8alphanum ; registered variants +// / (DIGIT 3alphanum) +var variant = '(?:[a-z0-9]{5,8}|\\d[a-z0-9]{3})'; + +// ; Single alphanumerics +// ; "x" reserved for private use +// singleton = DIGIT ; 0 - 9 +// / %x41-57 ; A - W +// / %x59-5A ; Y - Z +// / %x61-77 ; a - w +// / %x79-7A ; y - z +var singleton = '[0-9a-wy-z]'; + +// extension = singleton 1*("-" (2*8alphanum)) +var extension = singleton + '(?:-[a-z0-9]{2,8})+'; + +// privateuse = "x" 1*("-" (1*8alphanum)) +var privateuse = 'x(?:-[a-z0-9]{1,8})+'; + +// irregular = "en-GB-oed" ; irregular tags do not match +// / "i-ami" ; the 'langtag' production and +// / "i-bnn" ; would not otherwise be +// / "i-default" ; considered 'well-formed' +// / "i-enochian" ; These tags are all valid, +// / "i-hak" ; but most are deprecated +// / "i-klingon" ; in favor of more modern +// / "i-lux" ; subtags or subtag +// / "i-mingo" ; combination +// / "i-navajo" +// / "i-pwn" +// / "i-tao" +// / "i-tay" +// / "i-tsu" +// / "sgn-BE-FR" +// / "sgn-BE-NL" +// / "sgn-CH-DE" +var irregular = '(?:en-GB-oed' + '|i-(?:ami|bnn|default|enochian|hak|klingon|lux|mingo|navajo|pwn|tao|tay|tsu)' + '|sgn-(?:BE-FR|BE-NL|CH-DE))'; + +// regular = "art-lojban" ; these tags match the 'langtag' +// / "cel-gaulish" ; production, but their subtags +// / "no-bok" ; are not extended language +// / "no-nyn" ; or variant subtags: their meaning +// / "zh-guoyu" ; is defined by their registration +// / "zh-hakka" ; and all of these are deprecated +// / "zh-min" ; in favor of a more modern +// / "zh-min-nan" ; subtag or sequence of subtags +// / "zh-xiang" +var regular = '(?:art-lojban|cel-gaulish|no-bok|no-nyn' + '|zh-(?:guoyu|hakka|min|min-nan|xiang))'; + +// grandfathered = irregular ; non-redundant tags registered +// / regular ; during the RFC 3066 era +var grandfathered = '(?:' + irregular + '|' + regular + ')'; + +// langtag = language +// ["-" script] +// ["-" region] +// *("-" variant) +// *("-" extension) +// ["-" privateuse] +var langtag = language + '(?:-' + script + ')?(?:-' + region + ')?(?:-' + variant + ')*(?:-' + extension + ')*(?:-' + privateuse + ')?'; + +// Language-Tag = langtag ; normal language tags +// / privateuse ; private use tag +// / grandfathered ; grandfathered tags +var expBCP47Syntax = RegExp('^(?:' + langtag + '|' + privateuse + '|' + grandfathered + ')$', 'i'); + +// Match duplicate variants in a language tag +var expVariantDupes = RegExp('^(?!x).*?-(' + variant + ')-(?:\\w{4,8}-(?!x-))*\\1\\b', 'i'); + +// Match duplicate singletons in a language tag (except in private use) +var expSingletonDupes = RegExp('^(?!x).*?-(' + singleton + ')-(?:\\w+-(?!x-))*\\1\\b', 'i'); + +// Match all extension sequences +var expExtSequences = RegExp('-' + extension, 'ig'); + +// Default locale is the first-added locale data for us +var defaultLocale = void 0; +function setDefaultLocale(locale) { + defaultLocale = locale; +} + +// IANA Subtag Registry redundant tag and subtag maps +var redundantTags = { + tags: { + "art-lojban": "jbo", + "i-ami": "ami", + "i-bnn": "bnn", + "i-hak": "hak", + "i-klingon": "tlh", + "i-lux": "lb", + "i-navajo": "nv", + "i-pwn": "pwn", + "i-tao": "tao", + "i-tay": "tay", + "i-tsu": "tsu", + "no-bok": "nb", + "no-nyn": "nn", + "sgn-BE-FR": "sfb", + "sgn-BE-NL": "vgt", + "sgn-CH-DE": "sgg", + "zh-guoyu": "cmn", + "zh-hakka": "hak", + "zh-min-nan": "nan", + "zh-xiang": "hsn", + "sgn-BR": "bzs", + "sgn-CO": "csn", + "sgn-DE": "gsg", + "sgn-DK": "dsl", + "sgn-ES": "ssp", + "sgn-FR": "fsl", + "sgn-GB": "bfi", + "sgn-GR": "gss", + "sgn-IE": "isg", + "sgn-IT": "ise", + "sgn-JP": "jsl", + "sgn-MX": "mfs", + "sgn-NI": "ncs", + "sgn-NL": "dse", + "sgn-NO": "nsl", + "sgn-PT": "psr", + "sgn-SE": "swl", + "sgn-US": "ase", + "sgn-ZA": "sfs", + "zh-cmn": "cmn", + "zh-cmn-Hans": "cmn-Hans", + "zh-cmn-Hant": "cmn-Hant", + "zh-gan": "gan", + "zh-wuu": "wuu", + "zh-yue": "yue" }, - - // Array.prototype.indexOf, as good as we need it to be - arrIndexOf = Array.prototype.indexOf || function (search) { - /*jshint validthis:true */ - var t = this; - if (!t.length) - return -1; - - for (var i = arguments[1] || 0, max = t.length; i < max; i++) { - if (t[i] === search) - return i; - } - - return -1; + subtags: { + BU: "MM", + DD: "DE", + FX: "FR", + TP: "TL", + YD: "YE", + ZR: "CD", + heploc: "alalc97", + 'in': "id", + iw: "he", + ji: "yi", + jw: "jv", + mo: "ro", + ayx: "nun", + bjd: "drl", + ccq: "rki", + cjr: "mom", + cka: "cmr", + cmk: "xch", + drh: "khk", + drw: "prs", + gav: "dev", + hrr: "jal", + ibi: "opa", + kgh: "kml", + lcq: "ppr", + mst: "mry", + myt: "mry", + sca: "hle", + tie: "ras", + tkk: "twm", + tlw: "weo", + tnf: "prs", + ybd: "rki", + yma: "lrr" }, + extLang: { + aao: ["aao", "ar"], + abh: ["abh", "ar"], + abv: ["abv", "ar"], + acm: ["acm", "ar"], + acq: ["acq", "ar"], + acw: ["acw", "ar"], + acx: ["acx", "ar"], + acy: ["acy", "ar"], + adf: ["adf", "ar"], + ads: ["ads", "sgn"], + aeb: ["aeb", "ar"], + aec: ["aec", "ar"], + aed: ["aed", "sgn"], + aen: ["aen", "sgn"], + afb: ["afb", "ar"], + afg: ["afg", "sgn"], + ajp: ["ajp", "ar"], + apc: ["apc", "ar"], + apd: ["apd", "ar"], + arb: ["arb", "ar"], + arq: ["arq", "ar"], + ars: ["ars", "ar"], + ary: ["ary", "ar"], + arz: ["arz", "ar"], + ase: ["ase", "sgn"], + asf: ["asf", "sgn"], + asp: ["asp", "sgn"], + asq: ["asq", "sgn"], + asw: ["asw", "sgn"], + auz: ["auz", "ar"], + avl: ["avl", "ar"], + ayh: ["ayh", "ar"], + ayl: ["ayl", "ar"], + ayn: ["ayn", "ar"], + ayp: ["ayp", "ar"], + bbz: ["bbz", "ar"], + bfi: ["bfi", "sgn"], + bfk: ["bfk", "sgn"], + bjn: ["bjn", "ms"], + bog: ["bog", "sgn"], + bqn: ["bqn", "sgn"], + bqy: ["bqy", "sgn"], + btj: ["btj", "ms"], + bve: ["bve", "ms"], + bvl: ["bvl", "sgn"], + bvu: ["bvu", "ms"], + bzs: ["bzs", "sgn"], + cdo: ["cdo", "zh"], + cds: ["cds", "sgn"], + cjy: ["cjy", "zh"], + cmn: ["cmn", "zh"], + coa: ["coa", "ms"], + cpx: ["cpx", "zh"], + csc: ["csc", "sgn"], + csd: ["csd", "sgn"], + cse: ["cse", "sgn"], + csf: ["csf", "sgn"], + csg: ["csg", "sgn"], + csl: ["csl", "sgn"], + csn: ["csn", "sgn"], + csq: ["csq", "sgn"], + csr: ["csr", "sgn"], + czh: ["czh", "zh"], + czo: ["czo", "zh"], + doq: ["doq", "sgn"], + dse: ["dse", "sgn"], + dsl: ["dsl", "sgn"], + dup: ["dup", "ms"], + ecs: ["ecs", "sgn"], + esl: ["esl", "sgn"], + esn: ["esn", "sgn"], + eso: ["eso", "sgn"], + eth: ["eth", "sgn"], + fcs: ["fcs", "sgn"], + fse: ["fse", "sgn"], + fsl: ["fsl", "sgn"], + fss: ["fss", "sgn"], + gan: ["gan", "zh"], + gds: ["gds", "sgn"], + gom: ["gom", "kok"], + gse: ["gse", "sgn"], + gsg: ["gsg", "sgn"], + gsm: ["gsm", "sgn"], + gss: ["gss", "sgn"], + gus: ["gus", "sgn"], + hab: ["hab", "sgn"], + haf: ["haf", "sgn"], + hak: ["hak", "zh"], + hds: ["hds", "sgn"], + hji: ["hji", "ms"], + hks: ["hks", "sgn"], + hos: ["hos", "sgn"], + hps: ["hps", "sgn"], + hsh: ["hsh", "sgn"], + hsl: ["hsl", "sgn"], + hsn: ["hsn", "zh"], + icl: ["icl", "sgn"], + ils: ["ils", "sgn"], + inl: ["inl", "sgn"], + ins: ["ins", "sgn"], + ise: ["ise", "sgn"], + isg: ["isg", "sgn"], + isr: ["isr", "sgn"], + jak: ["jak", "ms"], + jax: ["jax", "ms"], + jcs: ["jcs", "sgn"], + jhs: ["jhs", "sgn"], + jls: ["jls", "sgn"], + jos: ["jos", "sgn"], + jsl: ["jsl", "sgn"], + jus: ["jus", "sgn"], + kgi: ["kgi", "sgn"], + knn: ["knn", "kok"], + kvb: ["kvb", "ms"], + kvk: ["kvk", "sgn"], + kvr: ["kvr", "ms"], + kxd: ["kxd", "ms"], + lbs: ["lbs", "sgn"], + lce: ["lce", "ms"], + lcf: ["lcf", "ms"], + liw: ["liw", "ms"], + lls: ["lls", "sgn"], + lsg: ["lsg", "sgn"], + lsl: ["lsl", "sgn"], + lso: ["lso", "sgn"], + lsp: ["lsp", "sgn"], + lst: ["lst", "sgn"], + lsy: ["lsy", "sgn"], + ltg: ["ltg", "lv"], + lvs: ["lvs", "lv"], + lzh: ["lzh", "zh"], + max: ["max", "ms"], + mdl: ["mdl", "sgn"], + meo: ["meo", "ms"], + mfa: ["mfa", "ms"], + mfb: ["mfb", "ms"], + mfs: ["mfs", "sgn"], + min: ["min", "ms"], + mnp: ["mnp", "zh"], + mqg: ["mqg", "ms"], + mre: ["mre", "sgn"], + msd: ["msd", "sgn"], + msi: ["msi", "ms"], + msr: ["msr", "sgn"], + mui: ["mui", "ms"], + mzc: ["mzc", "sgn"], + mzg: ["mzg", "sgn"], + mzy: ["mzy", "sgn"], + nan: ["nan", "zh"], + nbs: ["nbs", "sgn"], + ncs: ["ncs", "sgn"], + nsi: ["nsi", "sgn"], + nsl: ["nsl", "sgn"], + nsp: ["nsp", "sgn"], + nsr: ["nsr", "sgn"], + nzs: ["nzs", "sgn"], + okl: ["okl", "sgn"], + orn: ["orn", "ms"], + ors: ["ors", "ms"], + pel: ["pel", "ms"], + pga: ["pga", "ar"], + pks: ["pks", "sgn"], + prl: ["prl", "sgn"], + prz: ["prz", "sgn"], + psc: ["psc", "sgn"], + psd: ["psd", "sgn"], + pse: ["pse", "ms"], + psg: ["psg", "sgn"], + psl: ["psl", "sgn"], + pso: ["pso", "sgn"], + psp: ["psp", "sgn"], + psr: ["psr", "sgn"], + pys: ["pys", "sgn"], + rms: ["rms", "sgn"], + rsi: ["rsi", "sgn"], + rsl: ["rsl", "sgn"], + sdl: ["sdl", "sgn"], + sfb: ["sfb", "sgn"], + sfs: ["sfs", "sgn"], + sgg: ["sgg", "sgn"], + sgx: ["sgx", "sgn"], + shu: ["shu", "ar"], + slf: ["slf", "sgn"], + sls: ["sls", "sgn"], + sqk: ["sqk", "sgn"], + sqs: ["sqs", "sgn"], + ssh: ["ssh", "ar"], + ssp: ["ssp", "sgn"], + ssr: ["ssr", "sgn"], + svk: ["svk", "sgn"], + swc: ["swc", "sw"], + swh: ["swh", "sw"], + swl: ["swl", "sgn"], + syy: ["syy", "sgn"], + tmw: ["tmw", "ms"], + tse: ["tse", "sgn"], + tsm: ["tsm", "sgn"], + tsq: ["tsq", "sgn"], + tss: ["tss", "sgn"], + tsy: ["tsy", "sgn"], + tza: ["tza", "sgn"], + ugn: ["ugn", "sgn"], + ugy: ["ugy", "sgn"], + ukl: ["ukl", "sgn"], + uks: ["uks", "sgn"], + urk: ["urk", "ms"], + uzn: ["uzn", "uz"], + uzs: ["uzs", "uz"], + vgt: ["vgt", "sgn"], + vkk: ["vkk", "ms"], + vkt: ["vkt", "ms"], + vsi: ["vsi", "sgn"], + vsl: ["vsl", "sgn"], + vsv: ["vsv", "sgn"], + wuu: ["wuu", "zh"], + xki: ["xki", "sgn"], + xml: ["xml", "sgn"], + xmm: ["xmm", "ms"], + xms: ["xms", "sgn"], + yds: ["yds", "sgn"], + ysl: ["ysl", "sgn"], + yue: ["yue", "zh"], + zib: ["zib", "sgn"], + zlm: ["zlm", "ms"], + zmi: ["zmi", "ms"], + zsl: ["zsl", "sgn"], + zsm: ["zsm", "ms"] + } +}; - // Create an object with the specified prototype (2nd arg required for Record) - objCreate = Object.create || function (proto, props) { - var obj; - - function F() {} - F.prototype = proto; - obj = new F(); +/** + * Convert only a-z to uppercase as per section 6.1 of the spec + */ +function toLatinUpperCase(str) { + var i = str.length; - for (var k in props) { - if (hop.call(props, k)) - defineProperty(obj, k, props[k]); - } + while (i--) { + var ch = str.charAt(i); - return obj; - }, + if (ch >= "a" && ch <= "z") str = str.slice(0, i) + ch.toUpperCase() + str.slice(i + 1); + } - // Snapshot some (hopefully still) native built-ins - arrSlice = Array.prototype.slice, - arrConcat = Array.prototype.concat, - arrPush = Array.prototype.push, - arrJoin = Array.prototype.join, - arrShift = Array.prototype.shift, - arrUnshift= Array.prototype.unshift, - - // Naive Function.prototype.bind for compatibility - fnBind = Function.prototype.bind || function (thisObj) { - var fn = this, - args = arrSlice.call(arguments, 1); - - // All our (presently) bound functions have either 1 or 0 arguments. By returning - // different function signatures, we can pass some tests in ES3 environments - if (fn.length === 1) { - return function (a) { - return fn.apply(thisObj, arrConcat.call(args, arrSlice.call(arguments))); - }; - } - else { - return function () { - return fn.apply(thisObj, arrConcat.call(args, arrSlice.call(arguments))); - }; - } - }, - - // Default locale is the first-added locale data for us - defaultLocale, - - // Object housing internal properties for constructors - internals = objCreate(null), - - // Keep internal properties internal - secret = Math.random(), - - // An object map of date component keys, saves using a regex later - dateWidths = objCreate(null, { narrow:{}, short:{}, long:{} }), - - // Each constructor prototype should be an instance of the constructor itself, but we - // can't initialise them as such until some locale data has been added, so this is how - // we keep track - numberFormatProtoInitialised = false, - dateTimeFormatProtoInitialised = false, - - // Some regular expressions we're using - expCurrencyCode = /^[A-Z]{3}$/, - expUnicodeExSeq = /-u(?:-[0-9a-z]{2,8})+/gi, // See `extension` below - - // IANA Subtag Registry redundant tag and subtag maps - redundantTags = { - tags: { - "art-lojban": "jbo", "i-ami": "ami", "i-bnn": "bnn", "i-hak": "hak", - "i-klingon": "tlh", "i-lux": "lb", "i-navajo": "nv", "i-pwn": "pwn", - "i-tao": "tao", "i-tay": "tay", "i-tsu": "tsu", "no-bok": "nb", - "no-nyn": "nn", "sgn-BE-FR": "sfb", "sgn-BE-NL": "vgt", "sgn-CH-DE": "sgg", - "zh-guoyu": "cmn", "zh-hakka": "hak", "zh-min-nan": "nan", "zh-xiang": "hsn", - "sgn-BR": "bzs", "sgn-CO": "csn", "sgn-DE": "gsg", "sgn-DK": "dsl", - "sgn-ES": "ssp", "sgn-FR": "fsl", "sgn-GB": "bfi", "sgn-GR": "gss", - "sgn-IE": "isg", "sgn-IT": "ise", "sgn-JP": "jsl", "sgn-MX": "mfs", - "sgn-NI": "ncs", "sgn-NL": "dse", "sgn-NO": "nsl", "sgn-PT": "psr", - "sgn-SE": "swl", "sgn-US": "ase", "sgn-ZA": "sfs", "zh-cmn": "cmn", - "zh-cmn-Hans": "cmn-Hans", "zh-cmn-Hant": "cmn-Hant", "zh-gan": "gan", "zh-wuu": "wuu", - "zh-yue": "yue" - }, - subtags: { - BU: "MM", DD: "DE", FX: "FR", TP: "TL", YD: "YE", ZR: "CD", heploc: "alalc97", - 'in': "id", iw: "he", ji: "yi", jw: "jv", mo: "ro", ayx: "nun", bjd: "drl", - ccq: "rki", cjr: "mom", cka: "cmr", cmk: "xch", drh: "khk", drw: "prs", gav: "dev", - hrr: "jal", ibi: "opa", kgh: "kml", lcq: "ppr", mst: "mry", myt: "mry", sca: "hle", - tie: "ras", tkk: "twm", tlw: "weo", tnf: "prs", ybd: "rki", yma: "lrr" - }, - extLang: { - aao: [ "aao", "ar" ], abh: [ "abh", "ar" ], abv: [ "abv", "ar" ], acm: [ "acm", "ar" ], - acq: [ "acq", "ar" ], acw: [ "acw", "ar" ], acx: [ "acx", "ar" ], acy: [ "acy", "ar" ], - adf: [ "adf", "ar" ], ads: [ "ads", "sgn" ], aeb: [ "aeb", "ar" ], aec: [ "aec", "ar" ], - aed: [ "aed", "sgn" ], aen: [ "aen", "sgn" ], afb: [ "afb", "ar" ], afg: [ "afg", "sgn" ], - ajp: [ "ajp", "ar" ], apc: [ "apc", "ar" ], apd: [ "apd", "ar" ], arb: [ "arb", "ar" ], - arq: [ "arq", "ar" ], ars: [ "ars", "ar" ], ary: [ "ary", "ar" ], arz: [ "arz", "ar" ], - ase: [ "ase", "sgn" ], asf: [ "asf", "sgn" ], asp: [ "asp", "sgn" ], asq: [ "asq", "sgn" ], - asw: [ "asw", "sgn" ], auz: [ "auz", "ar" ], avl: [ "avl", "ar" ], ayh: [ "ayh", "ar" ], - ayl: [ "ayl", "ar" ], ayn: [ "ayn", "ar" ], ayp: [ "ayp", "ar" ], bbz: [ "bbz", "ar" ], - bfi: [ "bfi", "sgn" ], bfk: [ "bfk", "sgn" ], bjn: [ "bjn", "ms" ], bog: [ "bog", "sgn" ], - bqn: [ "bqn", "sgn" ], bqy: [ "bqy", "sgn" ], btj: [ "btj", "ms" ], bve: [ "bve", "ms" ], - bvl: [ "bvl", "sgn" ], bvu: [ "bvu", "ms" ], bzs: [ "bzs", "sgn" ], cdo: [ "cdo", "zh" ], - cds: [ "cds", "sgn" ], cjy: [ "cjy", "zh" ], cmn: [ "cmn", "zh" ], coa: [ "coa", "ms" ], - cpx: [ "cpx", "zh" ], csc: [ "csc", "sgn" ], csd: [ "csd", "sgn" ], cse: [ "cse", "sgn" ], - csf: [ "csf", "sgn" ], csg: [ "csg", "sgn" ], csl: [ "csl", "sgn" ], csn: [ "csn", "sgn" ], - csq: [ "csq", "sgn" ], csr: [ "csr", "sgn" ], czh: [ "czh", "zh" ], czo: [ "czo", "zh" ], - doq: [ "doq", "sgn" ], dse: [ "dse", "sgn" ], dsl: [ "dsl", "sgn" ], dup: [ "dup", "ms" ], - ecs: [ "ecs", "sgn" ], esl: [ "esl", "sgn" ], esn: [ "esn", "sgn" ], eso: [ "eso", "sgn" ], - eth: [ "eth", "sgn" ], fcs: [ "fcs", "sgn" ], fse: [ "fse", "sgn" ], fsl: [ "fsl", "sgn" ], - fss: [ "fss", "sgn" ], gan: [ "gan", "zh" ], gds: [ "gds", "sgn" ], gom: [ "gom", "kok" ], - gse: [ "gse", "sgn" ], gsg: [ "gsg", "sgn" ], gsm: [ "gsm", "sgn" ], gss: [ "gss", "sgn" ], - gus: [ "gus", "sgn" ], hab: [ "hab", "sgn" ], haf: [ "haf", "sgn" ], hak: [ "hak", "zh" ], - hds: [ "hds", "sgn" ], hji: [ "hji", "ms" ], hks: [ "hks", "sgn" ], hos: [ "hos", "sgn" ], - hps: [ "hps", "sgn" ], hsh: [ "hsh", "sgn" ], hsl: [ "hsl", "sgn" ], hsn: [ "hsn", "zh" ], - icl: [ "icl", "sgn" ], ils: [ "ils", "sgn" ], inl: [ "inl", "sgn" ], ins: [ "ins", "sgn" ], - ise: [ "ise", "sgn" ], isg: [ "isg", "sgn" ], isr: [ "isr", "sgn" ], jak: [ "jak", "ms" ], - jax: [ "jax", "ms" ], jcs: [ "jcs", "sgn" ], jhs: [ "jhs", "sgn" ], jls: [ "jls", "sgn" ], - jos: [ "jos", "sgn" ], jsl: [ "jsl", "sgn" ], jus: [ "jus", "sgn" ], kgi: [ "kgi", "sgn" ], - knn: [ "knn", "kok" ], kvb: [ "kvb", "ms" ], kvk: [ "kvk", "sgn" ], kvr: [ "kvr", "ms" ], - kxd: [ "kxd", "ms" ], lbs: [ "lbs", "sgn" ], lce: [ "lce", "ms" ], lcf: [ "lcf", "ms" ], - liw: [ "liw", "ms" ], lls: [ "lls", "sgn" ], lsg: [ "lsg", "sgn" ], lsl: [ "lsl", "sgn" ], - lso: [ "lso", "sgn" ], lsp: [ "lsp", "sgn" ], lst: [ "lst", "sgn" ], lsy: [ "lsy", "sgn" ], - ltg: [ "ltg", "lv" ], lvs: [ "lvs", "lv" ], lzh: [ "lzh", "zh" ], max: [ "max", "ms" ], - mdl: [ "mdl", "sgn" ], meo: [ "meo", "ms" ], mfa: [ "mfa", "ms" ], mfb: [ "mfb", "ms" ], - mfs: [ "mfs", "sgn" ], min: [ "min", "ms" ], mnp: [ "mnp", "zh" ], mqg: [ "mqg", "ms" ], - mre: [ "mre", "sgn" ], msd: [ "msd", "sgn" ], msi: [ "msi", "ms" ], msr: [ "msr", "sgn" ], - mui: [ "mui", "ms" ], mzc: [ "mzc", "sgn" ], mzg: [ "mzg", "sgn" ], mzy: [ "mzy", "sgn" ], - nan: [ "nan", "zh" ], nbs: [ "nbs", "sgn" ], ncs: [ "ncs", "sgn" ], nsi: [ "nsi", "sgn" ], - nsl: [ "nsl", "sgn" ], nsp: [ "nsp", "sgn" ], nsr: [ "nsr", "sgn" ], nzs: [ "nzs", "sgn" ], - okl: [ "okl", "sgn" ], orn: [ "orn", "ms" ], ors: [ "ors", "ms" ], pel: [ "pel", "ms" ], - pga: [ "pga", "ar" ], pks: [ "pks", "sgn" ], prl: [ "prl", "sgn" ], prz: [ "prz", "sgn" ], - psc: [ "psc", "sgn" ], psd: [ "psd", "sgn" ], pse: [ "pse", "ms" ], psg: [ "psg", "sgn" ], - psl: [ "psl", "sgn" ], pso: [ "pso", "sgn" ], psp: [ "psp", "sgn" ], psr: [ "psr", "sgn" ], - pys: [ "pys", "sgn" ], rms: [ "rms", "sgn" ], rsi: [ "rsi", "sgn" ], rsl: [ "rsl", "sgn" ], - sdl: [ "sdl", "sgn" ], sfb: [ "sfb", "sgn" ], sfs: [ "sfs", "sgn" ], sgg: [ "sgg", "sgn" ], - sgx: [ "sgx", "sgn" ], shu: [ "shu", "ar" ], slf: [ "slf", "sgn" ], sls: [ "sls", "sgn" ], - sqk: [ "sqk", "sgn" ], sqs: [ "sqs", "sgn" ], ssh: [ "ssh", "ar" ], ssp: [ "ssp", "sgn" ], - ssr: [ "ssr", "sgn" ], svk: [ "svk", "sgn" ], swc: [ "swc", "sw" ], swh: [ "swh", "sw" ], - swl: [ "swl", "sgn" ], syy: [ "syy", "sgn" ], tmw: [ "tmw", "ms" ], tse: [ "tse", "sgn" ], - tsm: [ "tsm", "sgn" ], tsq: [ "tsq", "sgn" ], tss: [ "tss", "sgn" ], tsy: [ "tsy", "sgn" ], - tza: [ "tza", "sgn" ], ugn: [ "ugn", "sgn" ], ugy: [ "ugy", "sgn" ], ukl: [ "ukl", "sgn" ], - uks: [ "uks", "sgn" ], urk: [ "urk", "ms" ], uzn: [ "uzn", "uz" ], uzs: [ "uzs", "uz" ], - vgt: [ "vgt", "sgn" ], vkk: [ "vkk", "ms" ], vkt: [ "vkt", "ms" ], vsi: [ "vsi", "sgn" ], - vsl: [ "vsl", "sgn" ], vsv: [ "vsv", "sgn" ], wuu: [ "wuu", "zh" ], xki: [ "xki", "sgn" ], - xml: [ "xml", "sgn" ], xmm: [ "xmm", "ms" ], xms: [ "xms", "sgn" ], yds: [ "yds", "sgn" ], - ysl: [ "ysl", "sgn" ], yue: [ "yue", "zh" ], zib: [ "zib", "sgn" ], zlm: [ "zlm", "ms" ], - zmi: [ "zmi", "ms" ], zsl: [ "zsl", "sgn" ], zsm: [ "zsm", "ms" ] - } - }, - - // Currency minor units output from get-4217 grunt task, formatted - currencyMinorUnits = { - BHD: 3, BYR: 0, XOF: 0, BIF: 0, XAF: 0, CLF: 4, CLP: 0, KMF: 0, DJF: 0, - XPF: 0, GNF: 0, ISK: 0, IQD: 3, JPY: 0, JOD: 3, KRW: 0, KWD: 3, LYD: 3, - OMR: 3, PYG: 0, RWF: 0, TND: 3, UGX: 0, UYI: 0, VUV: 0, VND: 0 - }; - -// Sect 6.2 Language Tags -// ====================== + return str; +} /** * The IsStructurallyValidLanguageTag abstract operation verifies that the locale @@ -9995,16 +10094,13 @@ var Intl = {}, */ function /* 6.2.2 */IsStructurallyValidLanguageTag(locale) { // represents a well-formed BCP 47 language tag as specified in RFC 5646 - if (!src$exp$$.expBCP47Syntax.test(locale)) - return false; + if (!expBCP47Syntax.test(locale)) return false; // does not include duplicate variant subtags, and - if (src$exp$$.expVariantDupes.test(locale)) - return false; + if (expVariantDupes.test(locale)) return false; // does not include duplicate singleton subtags. - if (src$exp$$.expSingletonDupes.test(locale)) - return false; + if (expSingletonDupes.test(locale)) return false; return true; } @@ -10024,8 +10120,9 @@ function /* 6.2.2 */IsStructurallyValidLanguageTag(locale) { * define that go beyond the canonicalization rules of RFC 5646 section 4.5. * Implementations are allowed, but not required, to apply these additional rules. */ -function /* 6.2.3 */CanonicalizeLanguageTag (locale) { - var match, parts; +function /* 6.2.3 */CanonicalizeLanguageTag(locale) { + var match = void 0, + parts = void 0; // A language tag is in 'canonical form' when the tag is well-formed // according to the rules in Sections 2.1 and 2.2 @@ -10040,16 +10137,13 @@ function /* 6.2.3 */CanonicalizeLanguageTag (locale) { parts = locale.split('-'); for (var i = 1, max = parts.length; i < max; i++) { // Two-letter subtags are all uppercase - if (parts[i].length === 2) - parts[i] = parts[i].toUpperCase(); + if (parts[i].length === 2) parts[i] = parts[i].toUpperCase(); // Four-letter subtags are titlecase - else if (parts[i].length === 4) - parts[i] = parts[i].charAt(0).toUpperCase() + parts[i].slice(1); + else if (parts[i].length === 4) parts[i] = parts[i].charAt(0).toUpperCase() + parts[i].slice(1); - // Is it a singleton? - else if (parts[i].length === 1 && parts[i] !== 'x') - break; + // Is it a singleton? + else if (parts[i].length === 1 && parts[i] !== 'x') break; } locale = arrJoin.call(parts, '-'); @@ -10057,21 +10151,17 @@ function /* 6.2.3 */CanonicalizeLanguageTag (locale) { // 1. Extension sequences are ordered into case-insensitive ASCII order // by singleton subtag. - if ((match = locale.match(src$exp$$.expExtSequences)) && match.length > 1) { + if ((match = locale.match(expExtSequences)) && match.length > 1) { // The built-in sort() sorts by ASCII order, so use that match.sort(); // Replace all extensions with the joined, sorted array - locale = locale.replace( - RegExp('(?:' + src$exp$$.expExtSequences.source + ')+', 'i'), - arrJoin.call(match, '') - ); + locale = locale.replace(RegExp('(?:' + expExtSequences.source + ')+', 'i'), arrJoin.call(match, '')); } // 2. Redundant or grandfathered tags are replaced by their 'Preferred- // Value', if there is one. - if (hop.call(redundantTags.tags, locale)) - locale = redundantTags.tags[locale]; + if (hop.call(redundantTags.tags, locale)) locale = redundantTags.tags[locale]; // 3. Subtags are replaced by their 'Preferred-Value', if there is one. // For extlangs, the original primary language subtag is also @@ -10079,17 +10169,14 @@ function /* 6.2.3 */CanonicalizeLanguageTag (locale) { // Value'. parts = locale.split('-'); - for (var i = 1, max = parts.length; i < max; i++) { - if (hop.call(redundantTags.subtags, parts[i])) - parts[i] = redundantTags.subtags[parts[i]]; - - else if (hop.call(redundantTags.extLang, parts[i])) { - parts[i] = redundantTags.extLang[parts[i]][0]; + for (var _i = 1, _max = parts.length; _i < _max; _i++) { + if (hop.call(redundantTags.subtags, parts[_i])) parts[_i] = redundantTags.subtags[parts[_i]];else if (hop.call(redundantTags.extLang, parts[_i])) { + parts[_i] = redundantTags.extLang[parts[_i]][0]; // For extlang tags, the prefix needs to be removed if it is redundant - if (i === 1 && redundantTags.extLang[parts[1]][1] === parts[0]) { - parts = arrSlice.call(parts, i++); - max -= 1; + if (_i === 1 && redundantTags.extLang[parts[1]][1] === parts[0]) { + parts = arrSlice.call(parts, _i++); + _max -= 1; } } } @@ -10102,98 +10189,91 @@ function /* 6.2.3 */CanonicalizeLanguageTag (locale) { * structurally valid (6.2.2) and canonicalized (6.2.3) BCP 47 language tag for the * host environment’s current locale. */ -function /* 6.2.4 */DefaultLocale () { +function /* 6.2.4 */DefaultLocale() { return defaultLocale; } // Sect 6.3 Currency Codes // ======================= +var expCurrencyCode = /^[A-Z]{3}$/; + /** * The IsWellFormedCurrencyCode abstract operation verifies that the currency argument * (after conversion to a String value) represents a well-formed 3-letter ISO currency * code. The following steps are taken: */ function /* 6.3.1 */IsWellFormedCurrencyCode(currency) { - var - // 1. Let `c` be ToString(currency) - c = String(currency), + // 1. Let `c` be ToString(currency) + var c = String(currency); - // 2. Let `normalized` be the result of mapping c to upper case as described - // in 6.1. - normalized = toLatinUpperCase(c); + // 2. Let `normalized` be the result of mapping c to upper case as described + // in 6.1. + var normalized = toLatinUpperCase(c); // 3. If the string length of normalized is not 3, return false. // 4. If normalized contains any character that is not in the range "A" to "Z" // (U+0041 to U+005A), return false. - if (expCurrencyCode.test(normalized) === false) - return false; + if (expCurrencyCode.test(normalized) === false) return false; // 5. Return true return true; } -// Sect 9.2 Abstract Operations -// ============================ -function /* 9.2.1 */CanonicalizeLocaleList (locales) { -// The abstract operation CanonicalizeLocaleList takes the following steps: +var expUnicodeExSeq = /-u(?:-[0-9a-z]{2,8})+/gi; // See `extension` below + +function /* 9.2.1 */CanonicalizeLocaleList(locales) { + // The abstract operation CanonicalizeLocaleList takes the following steps: // 1. If locales is undefined, then a. Return a new empty List - if (locales === undefined) - return new List(); + if (locales === undefined) return new List(); - var - // 2. Let seen be a new empty List. - seen = new List(), + // 2. Let seen be a new empty List. + var seen = new List(); - // 3. If locales is a String value, then - // a. Let locales be a new array created as if by the expression new - // Array(locales) where Array is the standard built-in constructor with - // that name and locales is the value of locales. - locales = typeof locales === 'string' ? [ locales ] : locales, + // 3. If locales is a String value, then + // a. Let locales be a new array created as if by the expression new + // Array(locales) where Array is the standard built-in constructor with + // that name and locales is the value of locales. + locales = typeof locales === 'string' ? [locales] : locales; - // 4. Let O be ToObject(locales). - O = toObject(locales), + // 4. Let O be ToObject(locales). + var O = toObject(locales); - // 5. Let lenValue be the result of calling the [[Get]] internal method of - // O with the argument "length". - // 6. Let len be ToUint32(lenValue). - len = O.length, + // 5. Let lenValue be the result of calling the [[Get]] internal method of + // O with the argument "length". + // 6. Let len be ToUint32(lenValue). + var len = O.length; - // 7. Let k be 0. - k = 0; + // 7. Let k be 0. + var k = 0; // 8. Repeat, while k < len while (k < len) { - var - // a. Let Pk be ToString(k). - Pk = String(k), + // a. Let Pk be ToString(k). + var Pk = String(k); - // b. Let kPresent be the result of calling the [[HasProperty]] internal - // method of O with argument Pk. - kPresent = Pk in O; + // b. Let kPresent be the result of calling the [[HasProperty]] internal + // method of O with argument Pk. + var kPresent = Pk in O; // c. If kPresent is true, then if (kPresent) { - var - // i. Let kValue be the result of calling the [[Get]] internal - // method of O with argument Pk. - kValue = O[Pk]; + // i. Let kValue be the result of calling the [[Get]] internal + // method of O with argument Pk. + var kValue = O[Pk]; // ii. If the type of kValue is not String or Object, then throw a // TypeError exception. - if (kValue == null || (typeof kValue !== 'string' && typeof kValue !== 'object')) - throw new TypeError('String or Object type expected'); + if (kValue === null || typeof kValue !== 'string' && (typeof kValue === "undefined" ? "undefined" : babelHelpers["typeof"](kValue)) !== 'object') throw new TypeError('String or Object type expected'); - var - // iii. Let tag be ToString(kValue). - tag = String(kValue); + // iii. Let tag be ToString(kValue). + var tag = String(kValue); // iv. If the result of calling the abstract operation // IsStructurallyValidLanguageTag (defined in 6.2.2), passing tag as // the argument, is false, then throw a RangeError exception. - if (!IsStructurallyValidLanguageTag(tag)) - throw new RangeError("'" + tag + "' is not a structurally valid language tag"); + if (!IsStructurallyValidLanguageTag(tag)) throw new RangeError("'" + tag + "' is not a structurally valid language tag"); // v. Let tag be the result of calling the abstract operation // CanonicalizeLanguageTag (defined in 6.2.3), passing tag as the @@ -10202,8 +10282,7 @@ function /* 9.2.1 */CanonicalizeLocaleList (locales) { // vi. If tag is not an element of seen, then append tag as the last // element of seen. - if (arrIndexOf.call(seen, tag) === -1) - arrPush.call(seen, tag); + if (arrIndexOf.call(seen, tag) === -1) arrPush.call(seen, tag); } // d. Increase k by 1. @@ -10222,31 +10301,26 @@ function /* 9.2.1 */CanonicalizeLocaleList (locales) { * availableLocales, or undefined if there is no such element. It uses the * fallback mechanism of RFC 4647, section 3.4. The following steps are taken: */ -function /* 9.2.2 */BestAvailableLocale (availableLocales, locale) { - var - // 1. Let candidate be locale - candidate = locale; +function /* 9.2.2 */BestAvailableLocale(availableLocales, locale) { + // 1. Let candidate be locale + var candidate = locale; // 2. Repeat - while (true) { + while (candidate) { // a. If availableLocales contains an element equal to candidate, then return // candidate. - if (arrIndexOf.call(availableLocales, candidate) > -1) - return candidate; + if (arrIndexOf.call(availableLocales, candidate) > -1) return candidate; - var - // b. Let pos be the character index of the last occurrence of "-" - // (U+002D) within candidate. If that character does not occur, return - // undefined. - pos = candidate.lastIndexOf('-'); + // b. Let pos be the character index of the last occurrence of "-" + // (U+002D) within candidate. If that character does not occur, return + // undefined. + var pos = candidate.lastIndexOf('-'); - if (pos < 0) - return; + if (pos < 0) return; // c. If pos ≥ 2 and the character "-" occurs at index pos-2 of candidate, // then decrease pos by 2. - if (pos >= 2 && candidate.charAt(pos - 2) === '-') - pos -= 2; + if (pos >= 2 && candidate.charAt(pos - 2) === '-') pos -= 2; // d. Let candidate be the substring of candidate from position 0, inclusive, // to position pos, exclusive. @@ -10260,40 +10334,40 @@ function /* 9.2.2 */BestAvailableLocale (availableLocales, locale) { * availableLocales and determines the best available language to meet the * request. The following steps are taken: */ -function /* 9.2.3 */LookupMatcher (availableLocales, requestedLocales) { - var - // 1. Let i be 0. - i = 0, +function /* 9.2.3 */LookupMatcher(availableLocales, requestedLocales) { + // 1. Let i be 0. + var i = 0; + + // 2. Let len be the number of elements in requestedLocales. + var len = requestedLocales.length; - // 2. Let len be the number of elements in requestedLocales. - len = requestedLocales.length, + // 3. Let availableLocale be undefined. + var availableLocale = void 0; - // 3. Let availableLocale be undefined. - availableLocale; + var locale = void 0, + noExtensionsLocale = void 0; // 4. Repeat while i < len and availableLocale is undefined: while (i < len && !availableLocale) { - var - // a. Let locale be the element of requestedLocales at 0-origined list - // position i. - locale = requestedLocales[i], + // a. Let locale be the element of requestedLocales at 0-origined list + // position i. + locale = requestedLocales[i]; - // b. Let noExtensionsLocale be the String value that is locale with all - // Unicode locale extension sequences removed. - noExtensionsLocale = String(locale).replace(expUnicodeExSeq, ''), + // b. Let noExtensionsLocale be the String value that is locale with all + // Unicode locale extension sequences removed. + noExtensionsLocale = String(locale).replace(expUnicodeExSeq, ''); - // c. Let availableLocale be the result of calling the - // BestAvailableLocale abstract operation (defined in 9.2.2) with - // arguments availableLocales and noExtensionsLocale. - availableLocale = BestAvailableLocale(availableLocales, noExtensionsLocale); + // c. Let availableLocale be the result of calling the + // BestAvailableLocale abstract operation (defined in 9.2.2) with + // arguments availableLocales and noExtensionsLocale. + availableLocale = BestAvailableLocale(availableLocales, noExtensionsLocale); // d. Increase i by 1. i++; } - var - // 5. Let result be a new Record. - result = new Record(); + // 5. Let result be a new Record. + var result = new Record(); // 6. If availableLocale is not undefined, then if (availableLocale !== undefined) { @@ -10302,14 +10376,13 @@ function /* 9.2.3 */LookupMatcher (availableLocales, requestedLocales) { // b. If locale and noExtensionsLocale are not the same String value, then if (String(locale) !== String(noExtensionsLocale)) { - var - // i. Let extension be the String value consisting of the first - // substring of locale that is a Unicode locale extension sequence. - extension = locale.match(expUnicodeExSeq)[0], + // i. Let extension be the String value consisting of the first + // substring of locale that is a Unicode locale extension sequence. + var extension = locale.match(expUnicodeExSeq)[0]; - // ii. Let extensionIndex be the character position of the initial - // "-" of the first Unicode locale extension sequence within locale. - extensionIndex = locale.indexOf('-u-'); + // ii. Let extensionIndex be the character position of the initial + // "-" of the first Unicode locale extension sequence within locale. + var extensionIndex = locale.indexOf('-u-'); // iii. Set result.[[extension]] to extension. result['[[extension]]'] = extension; @@ -10346,7 +10419,7 @@ function /* 9.2.3 */LookupMatcher (availableLocales, requestedLocales) { * is the index of the first Unicode locale extension sequence within the request * locale language tag. */ -function /* 9.2.4 */BestFitMatcher (availableLocales, requestedLocales) { +function /* 9.2.4 */BestFitMatcher(availableLocales, requestedLocales) { return LookupMatcher(availableLocales, requestedLocales); } @@ -10356,98 +10429,93 @@ function /* 9.2.4 */BestFitMatcher (availableLocales, requestedLocales) { * best available language to meet the request. availableLocales and * requestedLocales must be provided as List values, options as a Record. */ -function /* 9.2.5 */ResolveLocale (availableLocales, requestedLocales, options, relevantExtensionKeys, localeData) { +function /* 9.2.5 */ResolveLocale(availableLocales, requestedLocales, options, relevantExtensionKeys, localeData) { if (availableLocales.length === 0) { throw new ReferenceError('No locale data has been provided for this object yet.'); } // The following steps are taken: - var - // 1. Let matcher be the value of options.[[localeMatcher]]. - matcher = options['[[localeMatcher]]']; + // 1. Let matcher be the value of options.[[localeMatcher]]. + var matcher = options['[[localeMatcher]]']; + + var r = void 0; // 2. If matcher is "lookup", then if (matcher === 'lookup') - var - // a. Let r be the result of calling the LookupMatcher abstract operation - // (defined in 9.2.3) with arguments availableLocales and - // requestedLocales. - r = LookupMatcher(availableLocales, requestedLocales); + // a. Let r be the result of calling the LookupMatcher abstract operation + // (defined in 9.2.3) with arguments availableLocales and + // requestedLocales. + r = LookupMatcher(availableLocales, requestedLocales); - // 3. Else + // 3. Else else - var - // a. Let r be the result of calling the BestFitMatcher abstract - // operation (defined in 9.2.4) with arguments availableLocales and - // requestedLocales. - r = BestFitMatcher(availableLocales, requestedLocales); + // a. Let r be the result of calling the BestFitMatcher abstract + // operation (defined in 9.2.4) with arguments availableLocales and + // requestedLocales. + r = BestFitMatcher(availableLocales, requestedLocales); - var - // 4. Let foundLocale be the value of r.[[locale]]. - foundLocale = r['[[locale]]']; + // 4. Let foundLocale be the value of r.[[locale]]. + var foundLocale = r['[[locale]]']; + + var extensionSubtags = void 0, + extensionSubtagsLength = void 0; // 5. If r has an [[extension]] field, then - if (hop.call(r, '[[extension]]')) - var - // a. Let extension be the value of r.[[extension]]. - extension = r['[[extension]]'], - // b. Let extensionIndex be the value of r.[[extensionIndex]]. - extensionIndex = r['[[extensionIndex]]'], - // c. Let split be the standard built-in function object defined in ES5, - // 15.5.4.14. - split = String.prototype.split, - // d. Let extensionSubtags be the result of calling the [[Call]] internal - // method of split with extension as the this value and an argument - // list containing the single item "-". - extensionSubtags = split.call(extension, '-'), - // e. Let extensionSubtagsLength be the result of calling the [[Get]] - // internal method of extensionSubtags with argument "length". - extensionSubtagsLength = extensionSubtags.length; - - var - // 6. Let result be a new Record. - result = new Record(); + if (hop.call(r, '[[extension]]')) { + // a. Let extension be the value of r.[[extension]]. + var extension = r['[[extension]]']; + // b. Let split be the standard built-in function object defined in ES5, + // 15.5.4.14. + var split = String.prototype.split; + // c. Let extensionSubtags be the result of calling the [[Call]] internal + // method of split with extension as the this value and an argument + // list containing the single item "-". + extensionSubtags = split.call(extension, '-'); + // d. Let extensionSubtagsLength be the result of calling the [[Get]] + // internal method of extensionSubtags with argument "length". + extensionSubtagsLength = extensionSubtags.length; + } + + // 6. Let result be a new Record. + var result = new Record(); // 7. Set result.[[dataLocale]] to foundLocale. result['[[dataLocale]]'] = foundLocale; - var - // 8. Let supportedExtension be "-u". - supportedExtension = '-u', - // 9. Let i be 0. - i = 0, - // 10. Let len be the result of calling the [[Get]] internal method of - // relevantExtensionKeys with argument "length". - len = relevantExtensionKeys.length; + // 8. Let supportedExtension be "-u". + var supportedExtension = '-u'; + // 9. Let i be 0. + var i = 0; + // 10. Let len be the result of calling the [[Get]] internal method of + // relevantExtensionKeys with argument "length". + var len = relevantExtensionKeys.length; // 11 Repeat while i < len: while (i < len) { - var - // a. Let key be the result of calling the [[Get]] internal method of - // relevantExtensionKeys with argument ToString(i). - key = relevantExtensionKeys[i], - // b. Let foundLocaleData be the result of calling the [[Get]] internal - // method of localeData with the argument foundLocale. - foundLocaleData = localeData[foundLocale], - // c. Let keyLocaleData be the result of calling the [[Get]] internal - // method of foundLocaleData with the argument key. - keyLocaleData = foundLocaleData[key], - // d. Let value be the result of calling the [[Get]] internal method of - // keyLocaleData with argument "0". - value = keyLocaleData['0'], - // e. Let supportedExtensionAddition be "". - supportedExtensionAddition = '', - // f. Let indexOf be the standard built-in function object defined in - // ES5, 15.4.4.14. - indexOf = arrIndexOf; + // a. Let key be the result of calling the [[Get]] internal method of + // relevantExtensionKeys with argument ToString(i). + var key = relevantExtensionKeys[i]; + // b. Let foundLocaleData be the result of calling the [[Get]] internal + // method of localeData with the argument foundLocale. + var foundLocaleData = localeData[foundLocale]; + // c. Let keyLocaleData be the result of calling the [[Get]] internal + // method of foundLocaleData with the argument key. + var keyLocaleData = foundLocaleData[key]; + // d. Let value be the result of calling the [[Get]] internal method of + // keyLocaleData with argument "0". + var value = keyLocaleData['0']; + // e. Let supportedExtensionAddition be "". + var supportedExtensionAddition = ''; + // f. Let indexOf be the standard built-in function object defined in + // ES5, 15.4.4.14. + var indexOf = arrIndexOf; // g. If extensionSubtags is not undefined, then if (extensionSubtags !== undefined) { - var - // i. Let keyPos be the result of calling the [[Call]] internal - // method of indexOf with extensionSubtags as the this value and - // an argument list containing the single item key. - keyPos = indexOf.call(extensionSubtags, key); + // i. Let keyPos be the result of calling the [[Call]] internal + // method of indexOf with extensionSubtags as the this value and + // an argument list containing the single item key. + var keyPos = indexOf.call(extensionSubtags, key); // ii. If keyPos ≠ -1, then if (keyPos !== -1) { @@ -10455,50 +10523,45 @@ function /* 9.2.5 */ResolveLocale (availableLocales, requestedLocales, options, // result of calling the [[Get]] internal method of // extensionSubtags with argument ToString(keyPos +1) is greater // than 2, then - if (keyPos + 1 < extensionSubtagsLength - && extensionSubtags[keyPos + 1].length > 2) { - var - // a. Let requestedValue be the result of calling the [[Get]] - // internal method of extensionSubtags with argument - // ToString(keyPos + 1). - requestedValue = extensionSubtags[keyPos + 1], - // b. Let valuePos be the result of calling the [[Call]] - // internal method of indexOf with keyLocaleData as the - // this value and an argument list containing the single - // item requestedValue. - valuePos = indexOf.call(keyLocaleData, requestedValue); + if (keyPos + 1 < extensionSubtagsLength && extensionSubtags[keyPos + 1].length > 2) { + // a. Let requestedValue be the result of calling the [[Get]] + // internal method of extensionSubtags with argument + // ToString(keyPos + 1). + var requestedValue = extensionSubtags[keyPos + 1]; + // b. Let valuePos be the result of calling the [[Call]] + // internal method of indexOf with keyLocaleData as the + // this value and an argument list containing the single + // item requestedValue. + var valuePos = indexOf.call(keyLocaleData, requestedValue); // c. If valuePos ≠ -1, then - if (valuePos !== -1) - var - // i. Let value be requestedValue. - value = requestedValue, - // ii. Let supportedExtensionAddition be the - // concatenation of "-", key, "-", and value. - supportedExtensionAddition = '-' + key + '-' + value; + if (valuePos !== -1) { + // i. Let value be requestedValue. + value = requestedValue, + // ii. Let supportedExtensionAddition be the + // concatenation of "-", key, "-", and value. + supportedExtensionAddition = '-' + key + '-' + value; + } } // 2. Else else { - var // a. Let valuePos be the result of calling the [[Call]] // internal method of indexOf with keyLocaleData as the this // value and an argument list containing the single item // "true". - valuePos = indexOf(keyLocaleData, 'true'); + var _valuePos = indexOf(keyLocaleData, 'true'); - // b. If valuePos ≠ -1, then - if (valuePos !== -1) - var + // b. If valuePos ≠ -1, then + if (_valuePos !== -1) // i. Let value be "true". value = 'true'; - } + } } } // h. If options has a field [[]], then if (hop.call(options, '[[' + key + ']]')) { - var - // i. Let optionsValue be the value of options.[[]]. - optionsValue = options['[[' + key + ']]']; + // i. Let optionsValue be the value of options.[[]]. + var optionsValue = options['[[' + key + ']]']; // ii. If the result of calling the [[Call]] internal method of indexOf // with keyLocaleData as the this value and an argument list @@ -10524,16 +10587,25 @@ function /* 9.2.5 */ResolveLocale (availableLocales, requestedLocales, options, } // 12. If the length of supportedExtension is greater than 2, then if (supportedExtension.length > 2) { - var - // a. Let preExtension be the substring of foundLocale from position 0, - // inclusive, to position extensionIndex, exclusive. - preExtension = foundLocale.substring(0, extensionIndex), - // b. Let postExtension be the substring of foundLocale from position - // extensionIndex to the end of the string. - postExtension = foundLocale.substring(extensionIndex), - // c. Let foundLocale be the concatenation of preExtension, - // supportedExtension, and postExtension. - foundLocale = preExtension + supportedExtension + postExtension; + // a. + var privateIndex = foundLocale.indexOf("-x-"); + // b. + if (privateIndex === -1) { + // i. + foundLocale = foundLocale + supportedExtension; + } + // c. + else { + // i. + var preExtension = foundLocale.substring(0, privateIndex); + // ii. + var postExtension = foundLocale.substring(privateIndex); + // iii. + foundLocale = preExtension + supportedExtension + postExtension; + } + // d. asserting - skipping + // e. + foundLocale = CanonicalizeLanguageTag(foundLocale); } // 13. Set result.[[locale]] to foundLocale. result['[[locale]]'] = foundLocale; @@ -10549,42 +10621,38 @@ function /* 9.2.5 */ResolveLocale (availableLocales, requestedLocales, options, * Locales appear in the same order in the returned list as in requestedLocales. * The following steps are taken: */ -function /* 9.2.6 */LookupSupportedLocales (availableLocales, requestedLocales) { - var - // 1. Let len be the number of elements in requestedLocales. - len = requestedLocales.length, - // 2. Let subset be a new empty List. - subset = new List(), - // 3. Let k be 0. - k = 0; +function /* 9.2.6 */LookupSupportedLocales(availableLocales, requestedLocales) { + // 1. Let len be the number of elements in requestedLocales. + var len = requestedLocales.length; + // 2. Let subset be a new empty List. + var subset = new List(); + // 3. Let k be 0. + var k = 0; // 4. Repeat while k < len while (k < len) { - var - // a. Let locale be the element of requestedLocales at 0-origined list - // position k. - locale = requestedLocales[k], - // b. Let noExtensionsLocale be the String value that is locale with all - // Unicode locale extension sequences removed. - noExtensionsLocale = String(locale).replace(expUnicodeExSeq, ''), - // c. Let availableLocale be the result of calling the - // BestAvailableLocale abstract operation (defined in 9.2.2) with - // arguments availableLocales and noExtensionsLocale. - availableLocale = BestAvailableLocale(availableLocales, noExtensionsLocale); + // a. Let locale be the element of requestedLocales at 0-origined list + // position k. + var locale = requestedLocales[k]; + // b. Let noExtensionsLocale be the String value that is locale with all + // Unicode locale extension sequences removed. + var noExtensionsLocale = String(locale).replace(expUnicodeExSeq, ''); + // c. Let availableLocale be the result of calling the + // BestAvailableLocale abstract operation (defined in 9.2.2) with + // arguments availableLocales and noExtensionsLocale. + var availableLocale = BestAvailableLocale(availableLocales, noExtensionsLocale); // d. If availableLocale is not undefined, then append locale to the end of // subset. - if (availableLocale !== undefined) - arrPush.call(subset, locale); + if (availableLocale !== undefined) arrPush.call(subset, locale); // e. Increment k by 1. k++; } - var - // 5. Let subsetArray be a new Array object whose elements are the same - // values in the same order as the elements of subset. - subsetArray = arrSlice.call(subset); + // 5. Let subsetArray be a new Array object whose elements are the same + // values in the same order as the elements of subset. + var subsetArray = arrSlice.call(subset); // 6. Return subsetArray. return subsetArray; @@ -10597,7 +10665,7 @@ function /* 9.2.6 */LookupSupportedLocales (availableLocales, requestedLocales) * algorithm. Locales appear in the same order in the returned list as in * requestedLocales. The steps taken are implementation dependent. */ -function /*9.2.7 */BestFitSupportedLocales (availableLocales, requestedLocales) { +function /*9.2.7 */BestFitSupportedLocales(availableLocales, requestedLocales) { // ###TODO: implement this function as described by the specification### return LookupSupportedLocales(availableLocales, requestedLocales); } @@ -10610,15 +10678,17 @@ function /*9.2.7 */BestFitSupportedLocales (availableLocales, requestedLocales) * best-fit algorithm. Locales appear in the same order in the returned list as * in requestedLocales. The following steps are taken: */ -function /*9.2.8 */SupportedLocales (availableLocales, requestedLocales, options) { +function /*9.2.8 */SupportedLocales(availableLocales, requestedLocales, options) { + var matcher = void 0, + subset = void 0; + // 1. If options is not undefined, then if (options !== undefined) { - var - // a. Let options be ToObject(options). - options = new Record(toObject(options)), - // b. Let matcher be the result of calling the [[Get]] internal method of - // options with argument "localeMatcher". - matcher = options.localeMatcher; + // a. Let options be ToObject(options). + options = new Record(toObject(options)); + // b. Let matcher be the result of calling the [[Get]] internal method of + // options with argument "localeMatcher". + matcher = options.localeMatcher; // c. If matcher is not undefined, then if (matcher !== undefined) { @@ -10627,29 +10697,25 @@ function /*9.2.8 */SupportedLocales (availableLocales, requestedLocales, options // ii. If matcher is not "lookup" or "best fit", then throw a RangeError // exception. - if (matcher !== 'lookup' && matcher !== 'best fit') - throw new RangeError('matcher should be "lookup" or "best fit"'); + if (matcher !== 'lookup' && matcher !== 'best fit') throw new RangeError('matcher should be "lookup" or "best fit"'); } } // 2. If matcher is undefined or "best fit", then if (matcher === undefined || matcher === 'best fit') - var - // a. Let subset be the result of calling the BestFitSupportedLocales - // abstract operation (defined in 9.2.7) with arguments - // availableLocales and requestedLocales. - subset = BestFitSupportedLocales(availableLocales, requestedLocales); - // 3. Else + // a. Let subset be the result of calling the BestFitSupportedLocales + // abstract operation (defined in 9.2.7) with arguments + // availableLocales and requestedLocales. + subset = BestFitSupportedLocales(availableLocales, requestedLocales); + // 3. Else else - var - // a. Let subset be the result of calling the LookupSupportedLocales - // abstract operation (defined in 9.2.6) with arguments - // availableLocales and requestedLocales. - subset = LookupSupportedLocales(availableLocales, requestedLocales); + // a. Let subset be the result of calling the LookupSupportedLocales + // abstract operation (defined in 9.2.6) with arguments + // availableLocales and requestedLocales. + subset = LookupSupportedLocales(availableLocales, requestedLocales); // 4. For each named own property name P of subset, for (var P in subset) { - if (!hop.call(subset, P)) - continue; + if (!hop.call(subset, P)) continue; // a. Let desc be the result of calling the [[GetOwnProperty]] internal // method of subset with P. @@ -10674,26 +10740,23 @@ function /*9.2.8 */SupportedLocales (availableLocales, requestedLocales, options * checks whether it is one of a List of allowed values, and fills in a fallback * value if necessary. */ -function /*9.2.9 */GetOption (options, property, type, values, fallback) { - var - // 1. Let value be the result of calling the [[Get]] internal method of - // options with argument property. - value = options[property]; +function /*9.2.9 */GetOption(options, property, type, values, fallback) { + // 1. Let value be the result of calling the [[Get]] internal method of + // options with argument property. + var value = options[property]; // 2. If value is not undefined, then if (value !== undefined) { // a. Assert: type is "boolean" or "string". // b. If type is "boolean", then let value be ToBoolean(value). // c. If type is "string", then let value be ToString(value). - value = type === 'boolean' ? Boolean(value) - : (type === 'string' ? String(value) : value); + value = type === 'boolean' ? Boolean(value) : type === 'string' ? String(value) : value; // d. If values is not undefined, then if (values !== undefined) { // i. If values does not contain an element equal to value, then throw a // RangeError exception. - if (arrIndexOf.call(values, value) === -1) - throw new RangeError("'" + value + "' is not an allowed value for `" + property +'`'); + if (arrIndexOf.call(values, value) === -1) throw new RangeError("'" + value + "' is not an allowed value for `" + property + '`'); } // e. Return value. @@ -10708,11 +10771,10 @@ function /*9.2.9 */GetOption (options, property, type, values, fallback) { * provided options object, converts it to a Number value, checks whether it is * in the allowed range, and fills in a fallback value if necessary. */ -function /* 9.2.10 */GetNumberOption (options, property, minimum, maximum, fallback) { - var - // 1. Let value be the result of calling the [[Get]] internal method of - // options with argument property. - value = options[property]; +function /* 9.2.10 */GetNumberOption(options, property, minimum, maximum, fallback) { + // 1. Let value be the result of calling the [[Get]] internal method of + // options with argument property. + var value = options[property]; // 2. If value is not undefined, then if (value !== undefined) { @@ -10721,8 +10783,7 @@ function /* 9.2.10 */GetNumberOption (options, property, minimum, maximum, fallb // b. If value is NaN or less than minimum or greater than maximum, throw a // RangeError exception. - if (isNaN(value) || value < minimum || value > maximum) - throw new RangeError('Value is not a number or outside accepted range'); + if (isNaN(value) || value < minimum || value > maximum) throw new RangeError('Value is not a number or outside accepted range'); // c. Return floor(value). return Math.floor(value); @@ -10731,11 +10792,36 @@ function /* 9.2.10 */GetNumberOption (options, property, minimum, maximum, fallb return fallback; } -// 11.1 The Intl.NumberFormat constructor -// ====================================== +// 8 The Intl Object +var Intl = {}; + +// 8.2 Function Properties of the Intl Object + +// 8.2.1 +// @spec[tc39/ecma402/master/spec/intl.html] +// @clause[sec-intl.getcanonicallocales] +Intl.getCanonicalLocales = function (locales) { + // 1. Let ll be ? CanonicalizeLocaleList(locales). + var ll = CanonicalizeLocaleList(locales); + // 2. Return CreateArrayFromList(ll). + { + var result = []; + for (var code in ll) { + result.push(ll[code]); + } + return result; + } +}; + +// Currency minor units output from get-4217 grunt task, formatted +var currencyMinorUnits = { + BHD: 3, BYR: 0, XOF: 0, BIF: 0, XAF: 0, CLF: 4, CLP: 0, KMF: 0, DJF: 0, + XPF: 0, GNF: 0, ISK: 0, IQD: 3, JPY: 0, JOD: 3, KRW: 0, KWD: 3, LYD: 3, + OMR: 3, PYG: 0, RWF: 0, TND: 3, UGX: 0, UYI: 0, VUV: 0, VND: 0 +}; // Define the NumberFormat constructor internally so it cannot be tainted -function NumberFormatConstructor () { +function NumberFormatConstructor() { var locales = arguments[0]; var options = arguments[1]; @@ -10762,35 +10848,31 @@ defineProperty(Intl.NumberFormat, 'prototype', { * numberFormat (which must be an object), locales, and options. It initializes * numberFormat as a NumberFormat object. */ -function /*11.1.1.1 */InitializeNumberFormat (numberFormat, locales, options) { - var +function /*11.1.1.1 */InitializeNumberFormat(numberFormat, locales, options) { // This will be a internal properties object if we're not already initialized - internal = getInternalProperties(numberFormat), + var internal = getInternalProperties(numberFormat); // Create an object whose props can be used to restore the values of RegExp props - regexpState = createRegExpRestore(); + var regexpState = createRegExpRestore(); // 1. If numberFormat has an [[initializedIntlObject]] internal property with // value true, throw a TypeError exception. - if (internal['[[initializedIntlObject]]'] === true) - throw new TypeError('`this` object has already been initialized as an Intl object'); + if (internal['[[initializedIntlObject]]'] === true) throw new TypeError('`this` object has already been initialized as an Intl object'); // Need this to access the `internal` object defineProperty(numberFormat, '__getInternalProperties', { - value: function () { + value: function value() { // NOTE: Non-standard, for internal use only - if (arguments[0] === secret) - return internal; + if (arguments[0] === secret) return internal; } }); // 2. Set the [[initializedIntlObject]] internal property of numberFormat to true. internal['[[initializedIntlObject]]'] = true; - var // 3. Let requestedLocales be the result of calling the CanonicalizeLocaleList // abstract operation (defined in 9.2.1) with argument locales. - requestedLocales = CanonicalizeLocaleList(locales); + var requestedLocales = CanonicalizeLocaleList(locales); // 4. If options is undefined, then if (options === undefined) @@ -10799,39 +10881,35 @@ function /*11.1.1.1 */InitializeNumberFormat (numberFormat, locales, options) { // with that name. options = {}; - // 5. Else + // 5. Else else // a. Let options be ToObject(options). options = toObject(options); - var // 6. Let opt be a new Record. - opt = new Record(), + var opt = new Record(), + // 7. Let matcher be the result of calling the GetOption abstract operation // (defined in 9.2.9) with the arguments options, "localeMatcher", "string", // a List containing the two String values "lookup" and "best fit", and // "best fit". - matcher = GetOption(options, 'localeMatcher', 'string', new List('lookup', 'best fit'), 'best fit'); + matcher = GetOption(options, 'localeMatcher', 'string', new List('lookup', 'best fit'), 'best fit'); // 8. Set opt.[[localeMatcher]] to matcher. opt['[[localeMatcher]]'] = matcher; - var // 9. Let NumberFormat be the standard built-in object that is the initial value // of Intl.NumberFormat. // 10. Let localeData be the value of the [[localeData]] internal property of // NumberFormat. - localeData = internals.NumberFormat['[[localeData]]'], + var localeData = internals.NumberFormat['[[localeData]]']; // 11. Let r be the result of calling the ResolveLocale abstract operation // (defined in 9.2.5) with the [[availableLocales]] internal property of // NumberFormat, requestedLocales, opt, the [[relevantExtensionKeys]] // internal property of NumberFormat, and localeData. - r = ResolveLocale( - internals.NumberFormat['[[availableLocales]]'], requestedLocales, - opt, internals.NumberFormat['[[relevantExtensionKeys]]'], localeData - ); + var r = ResolveLocale(internals.NumberFormat['[[availableLocales]]'], requestedLocales, opt, internals.NumberFormat['[[relevantExtensionKeys]]'], localeData); // 12. Set the [[locale]] internal property of numberFormat to the value of // r.[[locale]]. @@ -10844,32 +10922,30 @@ function /*11.1.1.1 */InitializeNumberFormat (numberFormat, locales, options) { // The specification doesn't tell us to do this, but it's helpful later on internal['[[dataLocale]]'] = r['[[dataLocale]]']; - var // 14. Let dataLocale be the value of r.[[dataLocale]]. - dataLocale = r['[[dataLocale]]'], + var dataLocale = r['[[dataLocale]]']; // 15. Let s be the result of calling the GetOption abstract operation with the // arguments options, "style", "string", a List containing the three String // values "decimal", "percent", and "currency", and "decimal". - s = GetOption(options, 'style', 'string', new List('decimal', 'percent', 'currency'), 'decimal'); + var s = GetOption(options, 'style', 'string', new List('decimal', 'percent', 'currency'), 'decimal'); // 16. Set the [[style]] internal property of numberFormat to s. internal['[[style]]'] = s; - var // 17. Let c be the result of calling the GetOption abstract operation with the // arguments options, "currency", "string", undefined, and undefined. - c = GetOption(options, 'currency', 'string'); + var c = GetOption(options, 'currency', 'string'); // 18. If c is not undefined and the result of calling the // IsWellFormedCurrencyCode abstract operation (defined in 6.3.1) with // argument c is false, then throw a RangeError exception. - if (c !== undefined && !IsWellFormedCurrencyCode(c)) - throw new RangeError("'" + c + "' is not a valid currency code"); + if (c !== undefined && !IsWellFormedCurrencyCode(c)) throw new RangeError("'" + c + "' is not a valid currency code"); // 19. If s is "currency" and c is undefined, throw a TypeError exception. - if (s === 'currency' && c === undefined) - throw new TypeError('Currency code is required when style is currency'); + if (s === 'currency' && c === undefined) throw new TypeError('Currency code is required when style is currency'); + + var cDigits = void 0; // 20. If s is "currency", then if (s === 'currency') { @@ -10879,66 +10955,58 @@ function /*11.1.1.1 */InitializeNumberFormat (numberFormat, locales, options) { // b. Set the [[currency]] internal property of numberFormat to c. internal['[[currency]]'] = c; - var // c. Let cDigits be the result of calling the CurrencyDigits abstract // operation (defined below) with argument c. - cDigits = CurrencyDigits(c); + cDigits = CurrencyDigits(c); } - var // 21. Let cd be the result of calling the GetOption abstract operation with the // arguments options, "currencyDisplay", "string", a List containing the // three String values "code", "symbol", and "name", and "symbol". - cd = GetOption(options, 'currencyDisplay', 'string', new List('code', 'symbol', 'name'), 'symbol'); + var cd = GetOption(options, 'currencyDisplay', 'string', new List('code', 'symbol', 'name'), 'symbol'); // 22. If s is "currency", then set the [[currencyDisplay]] internal property of // numberFormat to cd. - if (s === 'currency') - internal['[[currencyDisplay]]'] = cd; + if (s === 'currency') internal['[[currencyDisplay]]'] = cd; - var // 23. Let mnid be the result of calling the GetNumberOption abstract operation // (defined in 9.2.10) with arguments options, "minimumIntegerDigits", 1, 21, // and 1. - mnid = GetNumberOption(options, 'minimumIntegerDigits', 1, 21, 1); + var mnid = GetNumberOption(options, 'minimumIntegerDigits', 1, 21, 1); // 24. Set the [[minimumIntegerDigits]] internal property of numberFormat to mnid. internal['[[minimumIntegerDigits]]'] = mnid; - var // 25. If s is "currency", then let mnfdDefault be cDigits; else let mnfdDefault // be 0. - mnfdDefault = s === 'currency' ? cDigits : 0, + var mnfdDefault = s === 'currency' ? cDigits : 0; // 26. Let mnfd be the result of calling the GetNumberOption abstract operation // with arguments options, "minimumFractionDigits", 0, 20, and mnfdDefault. - mnfd = GetNumberOption(options, 'minimumFractionDigits', 0, 20, mnfdDefault); + var mnfd = GetNumberOption(options, 'minimumFractionDigits', 0, 20, mnfdDefault); // 27. Set the [[minimumFractionDigits]] internal property of numberFormat to mnfd. internal['[[minimumFractionDigits]]'] = mnfd; - var // 28. If s is "currency", then let mxfdDefault be max(mnfd, cDigits); else if s // is "percent", then let mxfdDefault be max(mnfd, 0); else let mxfdDefault // be max(mnfd, 3). - mxfdDefault = s === 'currency' ? Math.max(mnfd, cDigits) - : (s === 'percent' ? Math.max(mnfd, 0) : Math.max(mnfd, 3)), + var mxfdDefault = s === 'currency' ? Math.max(mnfd, cDigits) : s === 'percent' ? Math.max(mnfd, 0) : Math.max(mnfd, 3); // 29. Let mxfd be the result of calling the GetNumberOption abstract operation // with arguments options, "maximumFractionDigits", mnfd, 20, and mxfdDefault. - mxfd = GetNumberOption(options, 'maximumFractionDigits', mnfd, 20, mxfdDefault); + var mxfd = GetNumberOption(options, 'maximumFractionDigits', mnfd, 20, mxfdDefault); // 30. Set the [[maximumFractionDigits]] internal property of numberFormat to mxfd. internal['[[maximumFractionDigits]]'] = mxfd; - var // 31. Let mnsd be the result of calling the [[Get]] internal method of options // with argument "minimumSignificantDigits". - mnsd = options.minimumSignificantDigits, + var mnsd = options.minimumSignificantDigits; // 32. Let mxsd be the result of calling the [[Get]] internal method of options // with argument "maximumSignificantDigits". - mxsd = options.maximumSignificantDigits; + var mxsd = options.maximumSignificantDigits; // 33. If mnsd is not undefined or mxsd is not undefined, then: if (mnsd !== undefined || mxsd !== undefined) { @@ -10958,29 +11026,26 @@ function /*11.1.1.1 */InitializeNumberFormat (numberFormat, locales, options) { internal['[[minimumSignificantDigits]]'] = mnsd; internal['[[maximumSignificantDigits]]'] = mxsd; } - var // 34. Let g be the result of calling the GetOption abstract operation with the // arguments options, "useGrouping", "boolean", undefined, and true. - g = GetOption(options, 'useGrouping', 'boolean', undefined, true); + var g = GetOption(options, 'useGrouping', 'boolean', undefined, true); // 35. Set the [[useGrouping]] internal property of numberFormat to g. internal['[[useGrouping]]'] = g; - var // 36. Let dataLocaleData be the result of calling the [[Get]] internal method of // localeData with argument dataLocale. - dataLocaleData = localeData[dataLocale], + var dataLocaleData = localeData[dataLocale]; // 37. Let patterns be the result of calling the [[Get]] internal method of // dataLocaleData with argument "patterns". - patterns = dataLocaleData.patterns; + var patterns = dataLocaleData.patterns; // 38. Assert: patterns is an object (see 11.2.3) - var // 39. Let stylePatterns be the result of calling the [[Get]] internal method of // patterns with argument s. - stylePatterns = patterns[s]; + var stylePatterns = patterns[s]; // 40. Set the [[positivePattern]] internal property of numberFormat to the // result of calling the [[Get]] internal method of stylePatterns with the @@ -11000,8 +11065,7 @@ function /*11.1.1.1 */InitializeNumberFormat (numberFormat, locales, options) { internal['[[initializedNumberFormat]]'] = true; // In ES3, we need to pre-bind the format() function - if (es3) - numberFormat.format = GetFormatNumber.call(numberFormat); + if (es3) numberFormat.format = GetFormatNumber.call(numberFormat); // Restore the RegExp properties regexpState.exp.test(regexpState.input); @@ -11017,9 +11081,7 @@ function CurrencyDigits(currency) { // 1. If the ISO 4217 currency and funds code list contains currency as an // alphabetic code, then return the minor unit value corresponding to the // currency from the list; else return 2. - return currencyMinorUnits[currency] !== undefined - ? currencyMinorUnits[currency] - : 2; + return currencyMinorUnits[currency] !== undefined ? currencyMinorUnits[currency] : 2; } /* 11.2.3 */internals.NumberFormat = { @@ -11032,10 +11094,42 @@ function CurrencyDigits(currency) { * When the supportedLocalesOf method of Intl.NumberFormat is called, the * following steps are taken: */ -/* 11.2.2 */defineProperty(Intl.NumberFormat, 'supportedLocalesOf', { +/* 11.2.2 */ +defineProperty(Intl.NumberFormat, 'supportedLocalesOf', { configurable: true, writable: true, - value: fnBind.call(supportedLocalesOf, internals.NumberFormat) + value: fnBind.call(function (locales) { + // Bound functions only have the `this` value altered if being used as a constructor, + // this lets us imitate a native function that has no constructor + if (!hop.call(this, '[[availableLocales]]')) throw new TypeError('supportedLocalesOf() is not a constructor'); + + // Create an object whose props can be used to restore the values of RegExp props + var regexpState = createRegExpRestore(), + + + // 1. If options is not provided, then let options be undefined. + options = arguments[1], + + + // 2. Let availableLocales be the value of the [[availableLocales]] internal + // property of the standard built-in object that is the initial value of + // Intl.NumberFormat. + + availableLocales = this['[[availableLocales]]'], + + + // 3. Let requestedLocales be the result of calling the CanonicalizeLocaleList + // abstract operation (defined in 9.2.1) with argument locales. + requestedLocales = CanonicalizeLocaleList(locales); + + // Restore the RegExp properties + regexpState.exp.test(regexpState.input); + + // 4. Return the result of calling the SupportedLocales abstract operation + // (defined in 9.2.8) with arguments availableLocales, requestedLocales, + // and options. + return SupportedLocales(availableLocales, requestedLocales, options); + }, internals.NumberFormat) }); /** @@ -11049,238 +11143,341 @@ function CurrencyDigits(currency) { }); function GetFormatNumber() { - var internal = this != null && typeof this === 'object' && getInternalProperties(this); + var internal = this !== null && babelHelpers["typeof"](this) === 'object' && getInternalProperties(this); - // Satisfy test 11.3_b - if (!internal || !internal['[[initializedNumberFormat]]']) - throw new TypeError('`this` value for format() is not an initialized Intl.NumberFormat object.'); - - // The value of the [[Get]] attribute is a function that takes the following - // steps: - - // 1. If the [[boundFormat]] internal property of this NumberFormat object - // is undefined, then: - if (internal['[[boundFormat]]'] === undefined) { - var - // a. Let F be a Function object, with internal properties set as - // specified for built-in functions in ES5, 15, or successor, and the - // length property set to 1, that takes the argument value and - // performs the following steps: - F = function (value) { - // i. If value is not provided, then let value be undefined. - // ii. Let x be ToNumber(value). - // iii. Return the result of calling the FormatNumber abstract - // operation (defined below) with arguments this and x. - return FormatNumber(this, /* x = */Number(value)); - }, - - // b. Let bind be the standard built-in function object defined in ES5, - // 15.3.4.5. - // c. Let bf be the result of calling the [[Call]] internal method of - // bind with F as the this value and an argument list containing - // the single item this. - bf = fnBind.call(F, this); - - // d. Set the [[boundFormat]] internal property of this NumberFormat - // object to bf. - internal['[[boundFormat]]'] = bf; - } - // Return the value of the [[boundFormat]] internal property of this - // NumberFormat object. - return internal['[[boundFormat]]']; - } - -/** - * When the FormatNumber abstract operation is called with arguments numberFormat - * (which must be an object initialized as a NumberFormat) and x (which must be a - * Number value), it returns a String value representing x according to the - * effective locale and the formatting options of numberFormat. - */ -function FormatNumber (numberFormat, x) { - var n, - - // Create an object whose props can be used to restore the values of RegExp props - regexpState = createRegExpRestore(), + // Satisfy test 11.3_b + if (!internal || !internal['[[initializedNumberFormat]]']) throw new TypeError('`this` value for format() is not an initialized Intl.NumberFormat object.'); - internal = getInternalProperties(numberFormat), - locale = internal['[[dataLocale]]'], - nums = internal['[[numberingSystem]]'], - data = internals.NumberFormat['[[localeData]]'][locale], - ild = data.symbols[nums] || data.symbols.latn, + // The value of the [[Get]] attribute is a function that takes the following + // steps: - // 1. Let negative be false. - negative = false; + // 1. If the [[boundFormat]] internal property of this NumberFormat object + // is undefined, then: + if (internal['[[boundFormat]]'] === undefined) { + // a. Let F be a Function object, with internal properties set as + // specified for built-in functions in ES5, 15, or successor, and the + // length property set to 1, that takes the argument value and + // performs the following steps: + var F = function F(value) { + // i. If value is not provided, then let value be undefined. + // ii. Let x be ToNumber(value). + // iii. Return the result of calling the FormatNumber abstract + // operation (defined below) with arguments this and x. + return FormatNumber(this, /* x = */Number(value)); + }; - // 2. If the result of isFinite(x) is false, then - if (isFinite(x) === false) { - // a. If x is NaN, then let n be an ILD String value indicating the NaN value. - if (isNaN(x)) - n = ild.nan; + // b. Let bind be the standard built-in function object defined in ES5, + // 15.3.4.5. + // c. Let bf be the result of calling the [[Call]] internal method of + // bind with F as the this value and an argument list containing + // the single item this. + var bf = fnBind.call(F, this); - // b. Else - else { - // a. Let n be an ILD String value indicating infinity. - n = ild.infinity; - // b. If x < 0, then let negative be true. - if (x < 0) - negative = true; - } + // d. Set the [[boundFormat]] internal property of this NumberFormat + // object to bf. + internal['[[boundFormat]]'] = bf; } - // 3. Else - else { - // a. If x < 0, then - if (x < 0) { - // i. Let negative be true. - negative = true; - // ii. Let x be -x. - x = -x; - } - - // b. If the value of the [[style]] internal property of numberFormat is - // "percent", let x be 100 × x. - if (internal['[[style]]'] === 'percent') - x *= 100; - - // c. If the [[minimumSignificantDigits]] and [[maximumSignificantDigits]] - // internal properties of numberFormat are present, then - if (hop.call(internal, '[[minimumSignificantDigits]]') && - hop.call(internal, '[[maximumSignificantDigits]]')) - // i. Let n be the result of calling the ToRawPrecision abstract operation - // (defined below), passing as arguments x and the values of the - // [[minimumSignificantDigits]] and [[maximumSignificantDigits]] - // internal properties of numberFormat. - n = ToRawPrecision(x, - internal['[[minimumSignificantDigits]]'], - internal['[[maximumSignificantDigits]]']); - // d. Else - else - // i. Let n be the result of calling the ToRawFixed abstract operation - // (defined below), passing as arguments x and the values of the - // [[minimumIntegerDigits]], [[minimumFractionDigits]], and - // [[maximumFractionDigits]] internal properties of numberFormat. - n = ToRawFixed(x, - internal['[[minimumIntegerDigits]]'], - internal['[[minimumFractionDigits]]'], - internal['[[maximumFractionDigits]]']); - - // e. If the value of the [[numberingSystem]] internal property of - // numberFormat matches one of the values in the “Numbering System” column - // of Table 2 below, then - if (numSys[nums]) { - // i. Let digits be an array whose 10 String valued elements are the - // UTF-16 string representations of the 10 digits specified in the - // “Digits” column of Table 2 in the row containing the value of the - // [[numberingSystem]] internal property. - var digits = numSys[internal['[[numberingSystem]]']]; - // ii. Replace each digit in n with the value of digits[digit]. - n = String(n).replace(/\d/g, function (digit) { - return digits[digit]; - }); - } - // f. Else use an implementation dependent algorithm to map n to the - // appropriate representation of n in the given numbering system. - else - n = String(n); // ###TODO### - - // g. If n contains the character ".", then replace it with an ILND String - // representing the decimal separator. - n = n.replace(/\./g, ild.decimal); - - // h. If the value of the [[useGrouping]] internal property of numberFormat - // is true, then insert an ILND String representing a grouping separator - // into an ILND set of locations within the integer part of n. - if (internal['[[useGrouping]]'] === true) { - var - parts = n.split(ild.decimal), - igr = parts[0], - - // Primary group represents the group closest to the decimal - pgSize = data.patterns.primaryGroupSize || 3, - - // Secondary group is every other group - sgSize = data.patterns.secondaryGroupSize || pgSize; - - // Group only if necessary - if (igr.length > pgSize) { - var - groups = new List(), - - // Index of the primary grouping separator - end = igr.length - pgSize, - - // Starting index for our loop - idx = end % sgSize, + // Return the value of the [[boundFormat]] internal property of this + // NumberFormat object. + return internal['[[boundFormat]]']; +} - start = igr.slice(0, idx); +Intl.NumberFormat.prototype.formatToParts = function (value) { + var internal = this !== null && babelHelpers["typeof"](this) === 'object' && getInternalProperties(this); + if (!internal || !internal['[[initializedNumberFormat]]']) throw new TypeError('`this` value for formatToParts() is not an initialized Intl.NumberFormat object.'); - if (start.length) - arrPush.call(groups, start); + var x = Number(value); + return FormatNumberToParts(this, x); +}; - // Loop to separate into secondary grouping digits - while (idx < end) { - arrPush.call(groups, igr.slice(idx, idx + sgSize)); - idx += sgSize; - } +/* + * @spec[stasm/ecma402/number-format-to-parts/spec/numberformat.html] + * @clause[sec-formatnumbertoparts] + */ +function FormatNumberToParts(numberFormat, x) { + // 1. Let parts be ? PartitionNumberPattern(numberFormat, x). + var parts = PartitionNumberPattern(numberFormat, x); + // 2. Let result be ArrayCreate(0). + var result = []; + // 3. Let n be 0. + var n = 0; + // 4. For each part in parts, do: + for (var i = 0; parts.length > i; i++) { + var part = parts[i]; + // a. Let O be ObjectCreate(%ObjectPrototype%). + var O = {}; + // a. Perform ? CreateDataPropertyOrThrow(O, "type", part.[[type]]). + O.type = part['[[type]]']; + // a. Perform ? CreateDataPropertyOrThrow(O, "value", part.[[value]]). + O.value = part['[[value]]']; + // a. Perform ? CreateDataPropertyOrThrow(result, ? ToString(n), O). + result[n] = O; + // a. Increment n by 1. + n += 1; + } + // 5. Return result. + return result; +} - // Add the primary grouping digits - arrPush.call(groups, igr.slice(end)); +/* + * @spec[stasm/ecma402/number-format-to-parts/spec/numberformat.html] + * @clause[sec-partitionnumberpattern] + */ +function PartitionNumberPattern(numberFormat, x) { - parts[0] = arrJoin.call(groups, ild.group); + var internal = getInternalProperties(numberFormat), + locale = internal['[[dataLocale]]'], + nums = internal['[[numberingSystem]]'], + data = internals.NumberFormat['[[localeData]]'][locale], + ild = data.symbols[nums] || data.symbols.latn, + pattern = void 0; + + // 1. If x is not NaN and x < 0, then: + if (!isNaN(x) && x < 0) { + // a. Let x be -x. + x = -x; + // a. Let pattern be the value of numberFormat.[[negativePattern]]. + pattern = internal['[[negativePattern]]']; + } + // 2. Else, + else { + // a. Let pattern be the value of numberFormat.[[positivePattern]]. + pattern = internal['[[positivePattern]]']; + } + // 3. Let result be a new empty List. + var result = new List(); + // 4. Let beginIndex be Call(%StringProto_indexOf%, pattern, "{", 0). + var beginIndex = pattern.indexOf('{', 0); + // 5. Let endIndex be 0. + var endIndex = 0; + // 6. Let nextIndex be 0. + var nextIndex = 0; + // 7. Let length be the number of code units in pattern. + var length = pattern.length; + // 8. Repeat while beginIndex is an integer index into pattern: + while (beginIndex > -1 && beginIndex < length) { + // a. Set endIndex to Call(%StringProto_indexOf%, pattern, "}", beginIndex) + endIndex = pattern.indexOf('}', beginIndex); + // a. If endIndex = -1, throw new Error exception. + if (endIndex === -1) throw new Error(); + // a. If beginIndex is greater than nextIndex, then: + if (beginIndex > nextIndex) { + // i. Let literal be a substring of pattern from position nextIndex, inclusive, to position beginIndex, exclusive. + var literal = pattern.substring(nextIndex, beginIndex); + // ii. Add new part record { [[type]]: "literal", [[value]]: literal } as a new element of the list result. + arrPush.call(result, { '[[type]]': 'literal', '[[value]]': literal }); + } + // a. Let p be the substring of pattern from position beginIndex, exclusive, to position endIndex, exclusive. + var p = pattern.substring(beginIndex + 1, endIndex); + // a. If p is equal "number", then: + if (p === "number") { + // i. If x is NaN, + if (isNaN(x)) { + // 1. Let n be an ILD String value indicating the NaN value. + var n = ild.nan; + // 2. Add new part record { [[type]]: "nan", [[value]]: n } as a new element of the list result. + arrPush.call(result, { '[[type]]': 'nan', '[[value]]': n }); } - - n = arrJoin.call(parts, ild.decimal); - } - } - - var - // 4. If negative is true, then let result be the value of the [[negativePattern]] - // internal property of numberFormat; else let result be the value of the - // [[positivePattern]] internal property of numberFormat. - result = internal[negative === true ? '[[negativePattern]]' : '[[positivePattern]]']; - - // 5. Replace the substring "{number}" within result with n. - result = result.replace('{number}', n); - - // 6. If the value of the [[style]] internal property of numberFormat is - // "currency", then: - if (internal['[[style]]'] === 'currency') { - var cd, - // a. Let currency be the value of the [[currency]] internal property of - // numberFormat. - currency = internal['[[currency]]'], - - // Shorthand for the currency data - cData = data.currencies[currency]; - - // b. If the value of the [[currencyDisplay]] internal property of - // numberFormat is "code", then let cd be currency. - // c. Else if the value of the [[currencyDisplay]] internal property of - // numberFormat is "symbol", then let cd be an ILD string representing - // currency in short form. If the implementation does not have such a - // representation of currency, then use currency itself. - // d. Else if the value of the [[currencyDisplay]] internal property of - // numberFormat is "name", then let cd be an ILD string representing - // currency in long form. If the implementation does not have such a - // representation of currency, then use currency itself. - switch (internal['[[currencyDisplay]]']) { - case 'symbol': - cd = cData || currency; - break; - - default: - case 'code': - case 'name': - cd = currency; + // ii. Else if isFinite(x) is false, + else if (!isFinite(x)) { + // 1. Let n be an ILD String value indicating infinity. + var _n = ild.infinity; + // 2. Add new part record { [[type]]: "infinity", [[value]]: n } as a new element of the list result. + arrPush.call(result, { '[[type]]': 'infinity', '[[value]]': _n }); + } + // iii. Else, + else { + // 1. If the value of numberFormat.[[style]] is "percent" and isFinite(x), let x be 100 × x. + if (internal['[[style]]'] === 'percent' && isFinite(x)) x *= 100; + + var _n2 = void 0; + // 2. If the numberFormat.[[minimumSignificantDigits]] and numberFormat.[[maximumSignificantDigits]] are present, then + if (hop.call(internal, '[[minimumSignificantDigits]]') && hop.call(internal, '[[maximumSignificantDigits]]')) { + // a. Let n be ToRawPrecision(x, numberFormat.[[minimumSignificantDigits]], numberFormat.[[maximumSignificantDigits]]). + _n2 = ToRawPrecision(x, internal['[[minimumSignificantDigits]]'], internal['[[maximumSignificantDigits]]']); + } + // 3. Else, + else { + // a. Let n be ToRawFixed(x, numberFormat.[[minimumIntegerDigits]], numberFormat.[[minimumFractionDigits]], numberFormat.[[maximumFractionDigits]]). + _n2 = ToRawFixed(x, internal['[[minimumIntegerDigits]]'], internal['[[minimumFractionDigits]]'], internal['[[maximumFractionDigits]]']); + } + // 4. If the value of the numberFormat.[[numberingSystem]] matches one of the values in the "Numbering System" column of Table 2 below, then + if (numSys[nums]) { + (function () { + // a. Let digits be an array whose 10 String valued elements are the UTF-16 string representations of the 10 digits specified in the "Digits" column of the matching row in Table 2. + var digits = numSys[nums]; + // a. Replace each digit in n with the value of digits[digit]. + _n2 = String(_n2).replace(/\d/g, function (digit) { + return digits[digit]; + }); + })(); + } + // 5. Else use an implementation dependent algorithm to map n to the appropriate representation of n in the given numbering system. + else _n2 = String(_n2); // ###TODO### + + var integer = void 0; + var fraction = void 0; + // 6. Let decimalSepIndex be Call(%StringProto_indexOf%, n, ".", 0). + var decimalSepIndex = _n2.indexOf('.', 0); + // 7. If decimalSepIndex > 0, then: + if (decimalSepIndex > 0) { + // a. Let integer be the substring of n from position 0, inclusive, to position decimalSepIndex, exclusive. + integer = _n2.substring(0, decimalSepIndex); + // a. Let fraction be the substring of n from position decimalSepIndex, exclusive, to the end of n. + fraction = _n2.substring(decimalSepIndex + 1, decimalSepIndex.length); + } + // 8. Else: + else { + // a. Let integer be n. + integer = _n2; + // a. Let fraction be undefined. + fraction = undefined; + } + // 9. If the value of the numberFormat.[[useGrouping]] is true, + if (internal['[[useGrouping]]'] === true) { + // a. Let groupSepSymbol be the ILND String representing the grouping separator. + var groupSepSymbol = ild.group; + // a. Let groups be a List whose elements are, in left to right order, the substrings defined by ILND set of locations within the integer. + var groups = []; + // ----> implementation: + // Primary group represents the group closest to the decimal + var pgSize = data.patterns.primaryGroupSize || 3; + // Secondary group is every other group + var sgSize = data.patterns.secondaryGroupSize || pgSize; + // Group only if necessary + if (integer.length > pgSize) { + // Index of the primary grouping separator + var end = integer.length - pgSize; + // Starting index for our loop + var idx = end % sgSize; + var start = integer.slice(0, idx); + if (start.length) arrPush.call(groups, start); + // Loop to separate into secondary grouping digits + while (idx < end) { + arrPush.call(groups, integer.slice(idx, idx + sgSize)); + idx += sgSize; + } + // Add the primary grouping digits + arrPush.call(groups, integer.slice(end)); + } else { + arrPush.call(groups, integer); + } + // a. Assert: The number of elements in groups List is greater than 0. + if (groups.length === 0) throw new Error(); + // a. Repeat, while groups List is not empty: + while (groups.length) { + // i. Remove the first element from groups and let integerGroup be the value of that element. + var integerGroup = arrShift.call(groups); + // ii. Add new part record { [[type]]: "integer", [[value]]: integerGroup } as a new element of the list result. + arrPush.call(result, { '[[type]]': 'integer', '[[value]]': integerGroup }); + // iii. If groups List is not empty, then: + if (groups.length) { + // 1. Add new part record { [[type]]: "group", [[value]]: groupSepSymbol } as a new element of the list result. + arrPush.call(result, { '[[type]]': 'group', '[[value]]': groupSepSymbol }); + } + } + } + // 10. Else, + else { + // a. Add new part record { [[type]]: "integer", [[value]]: integer } as a new element of the list result. + arrPush.call(result, { '[[type]]': 'integer', '[[value]]': integer }); + } + // 11. If fraction is not undefined, then: + if (fraction !== undefined) { + // a. Let decimalSepSymbol be the ILND String representing the decimal separator. + var decimalSepSymbol = ild.decimal; + // a. Add new part record { [[type]]: "decimal", [[value]]: decimalSepSymbol } as a new element of the list result. + arrPush.call(result, { '[[type]]': 'decimal', '[[value]]': decimalSepSymbol }); + // a. Add new part record { [[type]]: "fraction", [[value]]: fraction } as a new element of the list result. + arrPush.call(result, { '[[type]]': 'fraction', '[[value]]': fraction }); + } + } } + // a. Else if p is equal "plusSign", then: + else if (p === "plusSign") { + // i. Let plusSignSymbol be the ILND String representing the plus sign. + var plusSignSymbol = ild.plusSign; + // ii. Add new part record { [[type]]: "plusSign", [[value]]: plusSignSymbol } as a new element of the list result. + arrPush.call(result, { '[[type]]': 'plusSign', '[[value]]': plusSignSymbol }); + } + // a. Else if p is equal "minusSign", then: + else if (p === "minusSign") { + // i. Let minusSignSymbol be the ILND String representing the minus sign. + var minusSignSymbol = ild.minusSign; + // ii. Add new part record { [[type]]: "minusSign", [[value]]: minusSignSymbol } as a new element of the list result. + arrPush.call(result, { '[[type]]': 'minusSign', '[[value]]': minusSignSymbol }); + } + // a. Else if p is equal "percentSign" and numberFormat.[[style]] is "percent", then: + else if (p === "percentSign" && internal['[[style]]'] === "percent") { + // i. Let percentSignSymbol be the ILND String representing the percent sign. + var percentSignSymbol = ild.percentSign; + // ii. Add new part record { [[type]]: "percentSign", [[value]]: percentSignSymbol } as a new element of the list result. + arrPush.call(result, { '[[type]]': 'literal', '[[value]]': percentSignSymbol }); + } + // a. Else if p is equal "currency" and numberFormat.[[style]] is "currency", then: + else if (p === "currency" && internal['[[style]]'] === "currency") { + // i. Let currency be the value of numberFormat.[[currency]]. + var currency = internal['[[currency]]']; - // e. Replace the substring "{currency}" within result with cd. - result = result.replace('{currency}', cd); - } + var cd = void 0; - // Restore the RegExp properties - regexpState.exp.test(regexpState.input); + // ii. If numberFormat.[[currencyDisplay]] is "code", then + if (internal['[[currencyDisplay]]'] === "code") { + // 1. Let cd be currency. + cd = currency; + } + // iii. Else if numberFormat.[[currencyDisplay]] is "symbol", then + else if (internal['[[currencyDisplay]]'] === "symbol") { + // 1. Let cd be an ILD string representing currency in short form. If the implementation does not have such a representation of currency, use currency itself. + cd = data.currencies[currency] || currency; + } + // iv. Else if numberFormat.[[currencyDisplay]] is "name", then + else if (internal['[[currencyDisplay]]'] === "name") { + // 1. Let cd be an ILD string representing currency in long form. If the implementation does not have such a representation of currency, then use currency itself. + cd = currency; + } + // v. Add new part record { [[type]]: "currency", [[value]]: cd } as a new element of the list result. + arrPush.call(result, { '[[type]]': 'currency', '[[value]]': cd }); + } + // a. Else, + else { + // i. Let literal be the substring of pattern from position beginIndex, inclusive, to position endIndex, inclusive. + var _literal = pattern.substring(beginIndex, endIndex); + // ii. Add new part record { [[type]]: "literal", [[value]]: literal } as a new element of the list result. + arrPush.call(result, { '[[type]]': 'literal', '[[value]]': _literal }); + } + // a. Set nextIndex to endIndex + 1. + nextIndex = endIndex + 1; + // a. Set beginIndex to Call(%StringProto_indexOf%, pattern, "{", nextIndex) + beginIndex = pattern.indexOf('{', nextIndex); + } + // 9. If nextIndex is less than length, then: + if (nextIndex < length) { + // a. Let literal be the substring of pattern from position nextIndex, inclusive, to position length, exclusive. + var _literal2 = pattern.substring(nextIndex, length); + // a. Add new part record { [[type]]: "literal", [[value]]: literal } as a new element of the list result. + arrPush.call(result, { '[[type]]': 'literal', '[[value]]': _literal2 }); + } + // 10. Return result. + return result; +} - // 7. Return result. +/* + * @spec[stasm/ecma402/number-format-to-parts/spec/numberformat.html] + * @clause[sec-formatnumber] + */ +function FormatNumber(numberFormat, x) { + // 1. Let parts be ? PartitionNumberPattern(numberFormat, x). + var parts = PartitionNumberPattern(numberFormat, x); + // 2. Let result be an empty String. + var result = ''; + // 3. For each part in parts, do: + for (var i = 0; parts.length > i; i++) { + var part = parts[i]; + // a. Set result to a String value produced by concatenating result and part.[[value]]. + result += part['[[value]]']; + } + // 4. Return result. return result; } @@ -11289,66 +11486,65 @@ function FormatNumber (numberFormat, x) { * must be a finite non-negative number), minPrecision, and maxPrecision (both * must be integers between 1 and 21) the following steps are taken: */ -function ToRawPrecision (x, minPrecision, maxPrecision) { - var +function ToRawPrecision(x, minPrecision, maxPrecision) { // 1. Let p be maxPrecision. - p = maxPrecision; + var p = maxPrecision; + + var m = void 0, + e = void 0; // 2. If x = 0, then if (x === 0) { - var // a. Let m be the String consisting of p occurrences of the character "0". - m = arrJoin.call(Array (p + 1), '0'), + m = arrJoin.call(Array(p + 1), '0'); // b. Let e be 0. - e = 0; + e = 0; } // 3. Else else { - // a. Let e and n be integers such that 10ᵖ⁻¹ ≤ n < 10ᵖ and for which the - // exact mathematical value of n × 10ᵉ⁻ᵖ⁺¹ – x is as close to zero as - // possible. If there are two such sets of e and n, pick the e and n for - // which n × 10ᵉ⁻ᵖ⁺¹ is larger. - var - e = log10Floor(Math.abs(x)), + // a. Let e and n be integers such that 10ᵖ⁻¹ ≤ n < 10ᵖ and for which the + // exact mathematical value of n × 10ᵉ⁻ᵖ⁺¹ – x is as close to zero as + // possible. If there are two such sets of e and n, pick the e and n for + // which n × 10ᵉ⁻ᵖ⁺¹ is larger. + e = log10Floor(Math.abs(x)); // Easier to get to m from here - f = Math.round(Math.exp((Math.abs(e - p + 1)) * Math.LN10)), + var f = Math.round(Math.exp(Math.abs(e - p + 1) * Math.LN10)); - // b. Let m be the String consisting of the digits of the decimal - // representation of n (in order, with no leading zeroes) + // b. Let m be the String consisting of the digits of the decimal + // representation of n (in order, with no leading zeroes) m = String(Math.round(e - p + 1 < 0 ? x * f : x / f)); - } + } // 4. If e ≥ p, then if (e >= p) // a. Return the concatenation of m and e-p+1 occurrences of the character "0". - return m + arrJoin.call(Array(e-p+1 + 1), '0'); + return m + arrJoin.call(Array(e - p + 1 + 1), '0'); - // 5. If e = p-1, then + // 5. If e = p-1, then else if (e === p - 1) - // a. Return m. - return m; + // a. Return m. + return m; - // 6. If e ≥ 0, then - else if (e >= 0) - // a. Let m be the concatenation of the first e+1 characters of m, the character - // ".", and the remaining p–(e+1) characters of m. - m = m.slice(0, e + 1) + '.' + m.slice(e + 1); + // 6. If e ≥ 0, then + else if (e >= 0) + // a. Let m be the concatenation of the first e+1 characters of m, the character + // ".", and the remaining p–(e+1) characters of m. + m = m.slice(0, e + 1) + '.' + m.slice(e + 1); - // 7. If e < 0, then - else if (e < 0) - // a. Let m be the concatenation of the String "0.", –(e+1) occurrences of the - // character "0", and the string m. - m = '0.' + arrJoin.call(Array (-(e+1) + 1), '0') + m; + // 7. If e < 0, then + else if (e < 0) + // a. Let m be the concatenation of the String "0.", –(e+1) occurrences of the + // character "0", and the string m. + m = '0.' + arrJoin.call(Array(-(e + 1) + 1), '0') + m; // 8. If m contains the character ".", and maxPrecision > minPrecision, then if (m.indexOf(".") >= 0 && maxPrecision > minPrecision) { - var // a. Let cut be maxPrecision – minPrecision. - cut = maxPrecision - minPrecision; + var cut = maxPrecision - minPrecision; // b. Repeat while cut > 0 and the last character of m is "0": - while (cut > 0 && m.charAt(m.length-1) === '0') { + while (cut > 0 && m.charAt(m.length - 1) === '0') { // i. Remove the last character from m. m = m.slice(0, -1); @@ -11357,7 +11553,7 @@ function ToRawPrecision (x, minPrecision, maxPrecision) { } // c. If the last character of m is ".", then - if (m.charAt(m.length-1) === '.') + if (m.charAt(m.length - 1) === '.') // i. Remove the last character from m. m = m.slice(0, -1); } @@ -11366,88 +11562,106 @@ function ToRawPrecision (x, minPrecision, maxPrecision) { } /** + * @spec[tc39/ecma402/master/spec/numberformat.html] + * @clause[sec-torawfixed] * When the ToRawFixed abstract operation is called with arguments x (which must * be a finite non-negative number), minInteger (which must be an integer between * 1 and 21), minFraction, and maxFraction (which must be integers between 0 and * 20) the following steps are taken: */ -function ToRawFixed (x, minInteger, minFraction, maxFraction) { - // (or not because Number.toPrototype.toFixed does a lot of it for us) - var idx, - - // We can pick up after the fixed formatted string (m) is created - m = Number.prototype.toFixed.call(x, maxFraction), - - // 4. If [maxFraction] ≠ 0, then - // ... - // e. Let int be the number of characters in a. - // - // 5. Else let int be the number of characters in m. - igr = m.split(".")[0].length, // int is a reserved word - - // 6. Let cut be maxFraction – minFraction. - cut = maxFraction - minFraction, - - exp = (idx = m.indexOf('e')) > -1 ? m.slice(idx + 1) : 0; - - if (exp) { - m = m.slice(0, idx).replace('.', ''); - m += arrJoin.call(Array(exp - (m.length - 1) + 1), '0') - + '.' + arrJoin.call(Array(maxFraction + 1), '0'); - - igr = m.length; - } +function ToRawFixed(x, minInteger, minFraction, maxFraction) { + // 1. Let f be maxFraction. + var f = maxFraction; + // 2. Let n be an integer for which the exact mathematical value of n ÷ 10f – x is as close to zero as possible. If there are two such n, pick the larger n. + var n = Math.pow(10, f) * x; // diverging... + // 3. If n = 0, let m be the String "0". Otherwise, let m be the String consisting of the digits of the decimal representation of n (in order, with no leading zeroes). + var m = n === 0 ? "0" : n.toFixed(0); // divering... + { + // this diversion is needed to take into consideration big numbers, e.g.: + // 1.2344501e+37 -> 12344501000000000000000000000000000000 + var idx = void 0; + var exp = (idx = m.indexOf('e')) > -1 ? m.slice(idx + 1) : 0; + if (exp) { + m = m.slice(0, idx).replace('.', ''); + m += arrJoin.call(Array(exp - (m.length - 1) + 1), '0'); + } + } + + var int = void 0; + // 4. If f ≠ 0, then + if (f !== 0) { + // a. Let k be the number of characters in m. + var k = m.length; + // a. If k ≤ f, then + if (k <= f) { + // i. Let z be the String consisting of f+1–k occurrences of the character "0". + var z = arrJoin.call(Array(f + 1 - k + 1), '0'); + // ii. Let m be the concatenation of Strings z and m. + m = z + m; + // iii. Let k be f+1. + k = f + 1; + } + // a. Let a be the first k–f characters of m, and let b be the remaining f characters of m. + var a = m.substring(0, k - f), + b = m.substring(k - f, m.length); + // a. Let m be the concatenation of the three Strings a, ".", and b. + m = a + "." + b; + // a. Let int be the number of characters in a. + int = a.length; + } + // 5. Else, let int be the number of characters in m. + else int = m.length; + // 6. Let cut be maxFraction – minFraction. + var cut = maxFraction - minFraction; // 7. Repeat while cut > 0 and the last character of m is "0": while (cut > 0 && m.slice(-1) === "0") { // a. Remove the last character from m. m = m.slice(0, -1); - - // b. Decrease cut by 1. + // a. Decrease cut by 1. cut--; } - // 8. If the last character of m is ".", then - if (m.slice(-1) === ".") + if (m.slice(-1) === ".") { // a. Remove the last character from m. m = m.slice(0, -1); - + } // 9. If int < minInteger, then - if (igr < minInteger) - // a. Let z be the String consisting of minInteger–int occurrences of the - // character "0". - var z = arrJoin.call(Array(minInteger - igr + 1), '0'); - - // 10. Let m be the concatenation of Strings z and m. - // 11. Return m. - return (z ? z : '') + m; + if (int < minInteger) { + // a. Let z be the String consisting of minInteger–int occurrences of the character "0". + var _z = arrJoin.call(Array(minInteger - int + 1), '0'); + // a. Let m be the concatenation of Strings z and m. + m = _z + m; + } + // 10. Return m. + return m; } // Sect 11.3.2 Table 2, Numbering systems // ====================================== var numSys = { - arab: [ '\u0660', '\u0661', '\u0662', '\u0663', '\u0664', '\u0665', '\u0666', '\u0667', '\u0668', '\u0669' ], - arabext: [ '\u06F0', '\u06F1', '\u06F2', '\u06F3', '\u06F4', '\u06F5', '\u06F6', '\u06F7', '\u06F8', '\u06F9' ], - bali: [ '\u1B50', '\u1B51', '\u1B52', '\u1B53', '\u1B54', '\u1B55', '\u1B56', '\u1B57', '\u1B58', '\u1B59' ], - beng: [ '\u09E6', '\u09E7', '\u09E8', '\u09E9', '\u09EA', '\u09EB', '\u09EC', '\u09ED', '\u09EE', '\u09EF' ], - deva: [ '\u0966', '\u0967', '\u0968', '\u0969', '\u096A', '\u096B', '\u096C', '\u096D', '\u096E', '\u096F' ], - fullwide:[ '\uFF10', '\uFF11', '\uFF12', '\uFF13', '\uFF14', '\uFF15', '\uFF16', '\uFF17', '\uFF18', '\uFF19' ], - gujr: [ '\u0AE6', '\u0AE7', '\u0AE8', '\u0AE9', '\u0AEA', '\u0AEB', '\u0AEC', '\u0AED', '\u0AEE', '\u0AEF' ], - guru: [ '\u0A66', '\u0A67', '\u0A68', '\u0A69', '\u0A6A', '\u0A6B', '\u0A6C', '\u0A6D', '\u0A6E', '\u0A6F' ], - hanidec: [ '\u3007', '\u4E00', '\u4E8C', '\u4E09', '\u56DB', '\u4E94', '\u516D', '\u4E03', '\u516B', '\u4E5D' ], - khmr: [ '\u17E0', '\u17E1', '\u17E2', '\u17E3', '\u17E4', '\u17E5', '\u17E6', '\u17E7', '\u17E8', '\u17E9' ], - knda: [ '\u0CE6', '\u0CE7', '\u0CE8', '\u0CE9', '\u0CEA', '\u0CEB', '\u0CEC', '\u0CED', '\u0CEE', '\u0CEF' ], - laoo: [ '\u0ED0', '\u0ED1', '\u0ED2', '\u0ED3', '\u0ED4', '\u0ED5', '\u0ED6', '\u0ED7', '\u0ED8', '\u0ED9' ], - latn: [ '\u0030', '\u0031', '\u0032', '\u0033', '\u0034', '\u0035', '\u0036', '\u0037', '\u0038', '\u0039' ], - limb: [ '\u1946', '\u1947', '\u1948', '\u1949', '\u194A', '\u194B', '\u194C', '\u194D', '\u194E', '\u194F' ], - mlym: [ '\u0D66', '\u0D67', '\u0D68', '\u0D69', '\u0D6A', '\u0D6B', '\u0D6C', '\u0D6D', '\u0D6E', '\u0D6F' ], - mong: [ '\u1810', '\u1811', '\u1812', '\u1813', '\u1814', '\u1815', '\u1816', '\u1817', '\u1818', '\u1819' ], - mymr: [ '\u1040', '\u1041', '\u1042', '\u1043', '\u1044', '\u1045', '\u1046', '\u1047', '\u1048', '\u1049' ], - orya: [ '\u0B66', '\u0B67', '\u0B68', '\u0B69', '\u0B6A', '\u0B6B', '\u0B6C', '\u0B6D', '\u0B6E', '\u0B6F' ], - tamldec: [ '\u0BE6', '\u0BE7', '\u0BE8', '\u0BE9', '\u0BEA', '\u0BEB', '\u0BEC', '\u0BED', '\u0BEE', '\u0BEF' ], - telu: [ '\u0C66', '\u0C67', '\u0C68', '\u0C69', '\u0C6A', '\u0C6B', '\u0C6C', '\u0C6D', '\u0C6E', '\u0C6F' ], - thai: [ '\u0E50', '\u0E51', '\u0E52', '\u0E53', '\u0E54', '\u0E55', '\u0E56', '\u0E57', '\u0E58', '\u0E59' ], - tibt: [ '\u0F20', '\u0F21', '\u0F22', '\u0F23', '\u0F24', '\u0F25', '\u0F26', '\u0F27', '\u0F28', '\u0F29' ] + arab: ["٠", "١", "٢", "٣", "٤", "٥", "٦", "٧", "٨", "٩"], + arabext: ["۰", "۱", "۲", "۳", "۴", "۵", "۶", "۷", "۸", "۹"], + bali: ["᭐", "᭑", "᭒", "᭓", "᭔", "᭕", "᭖", "᭗", "᭘", "᭙"], + beng: ["০", "১", "২", "৩", "৪", "৫", "৬", "৭", "৮", "৯"], + deva: ["०", "१", "२", "३", "४", "५", "६", "७", "८", "९"], + fullwide: ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"], + gujr: ["૦", "૧", "૨", "૩", "૪", "૫", "૬", "૭", "૮", "૯"], + guru: ["੦", "੧", "੨", "੩", "੪", "੫", "੬", "੭", "੮", "੯"], + hanidec: ["〇", "一", "二", "三", "四", "五", "六", "七", "八", "九"], + khmr: ["០", "១", "២", "៣", "៤", "៥", "៦", "៧", "៨", "៩"], + knda: ["೦", "೧", "೨", "೩", "೪", "೫", "೬", "೭", "೮", "೯"], + laoo: ["໐", "໑", "໒", "໓", "໔", "໕", "໖", "໗", "໘", "໙"], + latn: ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"], + limb: ["᥆", "᥇", "᥈", "᥉", "᥊", "᥋", "᥌", "᥍", "᥎", "᥏"], + mlym: ["൦", "൧", "൨", "൩", "൪", "൫", "൬", "൭", "൮", "൯"], + mong: ["᠐", "᠑", "᠒", "᠓", "᠔", "᠕", "᠖", "᠗", "᠘", "᠙"], + mymr: ["၀", "၁", "၂", "၃", "၄", "၅", "၆", "၇", "၈", "၉"], + orya: ["୦", "୧", "୨", "୩", "୪", "୫", "୬", "୭", "୮", "୯"], + tamldec: ["௦", "௧", "௨", "௩", "௪", "௫", "௬", "௭", "௮", "௯"], + telu: ["౦", "౧", "౨", "౩", "౪", "౫", "౬", "౭", "౮", "౯"], + thai: ["๐", "๑", "๒", "๓", "๔", "๕", "๖", "๗", "๘", "๙"], + tibt: ["༠", "༡", "༢", "༣", "༤", "༥", "༦", "༧", "༨", "༩"] }; /** @@ -11466,34 +11680,364 @@ var numSys = { /* 11.3.3 */defineProperty(Intl.NumberFormat.prototype, 'resolvedOptions', { configurable: true, writable: true, - value: function () { - var prop, + value: function value() { + var prop = void 0, descs = new Record(), - props = [ - 'locale', 'numberingSystem', 'style', 'currency', 'currencyDisplay', - 'minimumIntegerDigits', 'minimumFractionDigits', 'maximumFractionDigits', - 'minimumSignificantDigits', 'maximumSignificantDigits', 'useGrouping' - ], - internal = this != null && typeof this === 'object' && getInternalProperties(this); + props = ['locale', 'numberingSystem', 'style', 'currency', 'currencyDisplay', 'minimumIntegerDigits', 'minimumFractionDigits', 'maximumFractionDigits', 'minimumSignificantDigits', 'maximumSignificantDigits', 'useGrouping'], + internal = this !== null && babelHelpers["typeof"](this) === 'object' && getInternalProperties(this); // Satisfy test 11.3_b - if (!internal || !internal['[[initializedNumberFormat]]']) - throw new TypeError('`this` value for resolvedOptions() is not an initialized Intl.NumberFormat object.'); + if (!internal || !internal['[[initializedNumberFormat]]']) throw new TypeError('`this` value for resolvedOptions() is not an initialized Intl.NumberFormat object.'); for (var i = 0, max = props.length; i < max; i++) { - if (hop.call(internal, prop = '[['+ props[i] +']]')) - descs[props[i]] = { value: internal[prop], writable: true, configurable: true, enumerable: true }; + if (hop.call(internal, prop = '[[' + props[i] + ']]')) descs[props[i]] = { value: internal[prop], writable: true, configurable: true, enumerable: true }; } return objCreate({}, descs); } }); -// 12.1 The Intl.DateTimeFormat constructor -// ================================== +/* jslint esnext: true */ + +// Match these datetime components in a CLDR pattern, except those in single quotes +var expDTComponents = /(?:[Eec]{1,6}|G{1,5}|[Qq]{1,5}|(?:[yYur]+|U{1,5})|[ML]{1,5}|d{1,2}|D{1,3}|F{1}|[abB]{1,5}|[hkHK]{1,2}|w{1,2}|W{1}|m{1,2}|s{1,2}|[zZOvVxX]{1,4})(?=([^']*'[^']*')*[^']*$)/g; +// trim patterns after transformations +var expPatternTrimmer = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g; +// Skip over patterns with these datetime components because we don't have data +// to back them up: +// timezone, weekday, amoung others +var unwantedDTCs = /[rqQASjJgwWIQq]/; // xXVO were removed from this list in favor of computing matches with timeZoneName values but printing as empty string + +var dtKeys = ["weekday", "era", "year", "month", "day", "weekday", "quarter"]; +var tmKeys = ["hour", "minute", "second", "hour12", "timeZoneName"]; + +function isDateFormatOnly(obj) { + for (var i = 0; i < tmKeys.length; i += 1) { + if (obj.hasOwnProperty(tmKeys[i])) { + return false; + } + } + return true; +} + +function isTimeFormatOnly(obj) { + for (var i = 0; i < dtKeys.length; i += 1) { + if (obj.hasOwnProperty(dtKeys[i])) { + return false; + } + } + return true; +} + +function joinDateAndTimeFormats(dateFormatObj, timeFormatObj) { + var o = { _: {} }; + for (var i = 0; i < dtKeys.length; i += 1) { + if (dateFormatObj[dtKeys[i]]) { + o[dtKeys[i]] = dateFormatObj[dtKeys[i]]; + } + if (dateFormatObj._[dtKeys[i]]) { + o._[dtKeys[i]] = dateFormatObj._[dtKeys[i]]; + } + } + for (var j = 0; j < tmKeys.length; j += 1) { + if (timeFormatObj[tmKeys[j]]) { + o[tmKeys[j]] = timeFormatObj[tmKeys[j]]; + } + if (timeFormatObj._[tmKeys[j]]) { + o._[tmKeys[j]] = timeFormatObj._[tmKeys[j]]; + } + } + return o; +} + +function computeFinalPatterns(formatObj) { + // From http://www.unicode.org/reports/tr35/tr35-dates.html#Date_Format_Patterns: + // 'In patterns, two single quotes represents a literal single quote, either + // inside or outside single quotes. Text within single quotes is not + // interpreted in any way (except for two adjacent single quotes).' + formatObj.pattern12 = formatObj.extendedPattern.replace(/'([^']*)'/g, function ($0, literal) { + return literal ? literal : "'"; + }); + + // pattern 12 is always the default. we can produce the 24 by removing {ampm} + formatObj.pattern = formatObj.pattern12.replace('{ampm}', '').replace(expPatternTrimmer, ''); + return formatObj; +} + +function expDTComponentsMeta($0, formatObj) { + switch ($0.charAt(0)) { + // --- Era + case 'G': + formatObj.era = ['short', 'short', 'short', 'long', 'narrow'][$0.length - 1]; + return '{era}'; + + // --- Year + case 'y': + case 'Y': + case 'u': + case 'U': + case 'r': + formatObj.year = $0.length === 2 ? '2-digit' : 'numeric'; + return '{year}'; + + // --- Quarter (not supported in this polyfill) + case 'Q': + case 'q': + formatObj.quarter = ['numeric', '2-digit', 'short', 'long', 'narrow'][$0.length - 1]; + return '{quarter}'; + + // --- Month + case 'M': + case 'L': + formatObj.month = ['numeric', '2-digit', 'short', 'long', 'narrow'][$0.length - 1]; + return '{month}'; + + // --- Week (not supported in this polyfill) + case 'w': + // week of the year + formatObj.week = $0.length === 2 ? '2-digit' : 'numeric'; + return '{weekday}'; + case 'W': + // week of the month + formatObj.week = 'numeric'; + return '{weekday}'; + + // --- Day + case 'd': + // day of the month + formatObj.day = $0.length === 2 ? '2-digit' : 'numeric'; + return '{day}'; + case 'D': // day of the year + case 'F': // day of the week + case 'g': + // 1..n: Modified Julian day + formatObj.day = 'numeric'; + return '{day}'; + + // --- Week Day + case 'E': + // day of the week + formatObj.weekday = ['short', 'short', 'short', 'long', 'narrow', 'short'][$0.length - 1]; + return '{weekday}'; + case 'e': + // local day of the week + formatObj.weekday = ['numeric', '2-digit', 'short', 'long', 'narrow', 'short'][$0.length - 1]; + return '{weekday}'; + case 'c': + // stand alone local day of the week + formatObj.weekday = ['numeric', undefined, 'short', 'long', 'narrow', 'short'][$0.length - 1]; + return '{weekday}'; + + // --- Period + case 'a': // AM, PM + case 'b': // am, pm, noon, midnight + case 'B': + // flexible day periods + formatObj.hour12 = true; + return '{ampm}'; + + // --- Hour + case 'h': + case 'H': + formatObj.hour = $0.length === 2 ? '2-digit' : 'numeric'; + return '{hour}'; + case 'k': + case 'K': + formatObj.hour12 = true; // 12-hour-cycle time formats (using h or K) + formatObj.hour = $0.length === 2 ? '2-digit' : 'numeric'; + return '{hour}'; + + // --- Minute + case 'm': + formatObj.minute = $0.length === 2 ? '2-digit' : 'numeric'; + return '{minute}'; + + // --- Second + case 's': + formatObj.second = $0.length === 2 ? '2-digit' : 'numeric'; + return '{second}'; + case 'S': + case 'A': + formatObj.second = 'numeric'; + return '{second}'; + + // --- Timezone + case 'z': // 1..3, 4: specific non-location format + case 'Z': // 1..3, 4, 5: The ISO8601 varios formats + case 'O': // 1, 4: miliseconds in day short, long + case 'v': // 1, 4: generic non-location format + case 'V': // 1, 2, 3, 4: time zone ID or city + case 'X': // 1, 2, 3, 4: The ISO8601 varios formats + case 'x': + // 1, 2, 3, 4: The ISO8601 varios formats + // this polyfill only supports much, for now, we are just doing something dummy + formatObj.timeZoneName = $0.length < 4 ? 'short' : 'long'; + return '{timeZoneName}'; + } +} + +/** + * Converts the CLDR availableFormats into the objects and patterns required by + * the ECMAScript Internationalization API specification. + */ +function createDateTimeFormat(skeleton, pattern) { + // we ignore certain patterns that are unsupported to avoid this expensive op. + if (unwantedDTCs.test(pattern)) return undefined; + + var formatObj = { + originalPattern: pattern, + _: {} + }; + + // Replace the pattern string with the one required by the specification, whilst + // at the same time evaluating it for the subsets and formats + formatObj.extendedPattern = pattern.replace(expDTComponents, function ($0) { + // See which symbol we're dealing with + return expDTComponentsMeta($0, formatObj._); + }); + + // Match the skeleton string with the one required by the specification + // this implementation is based on the Date Field Symbol Table: + // http://unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table + // Note: we are adding extra data to the formatObject even though this polyfill + // might not support it. + skeleton.replace(expDTComponents, function ($0) { + // See which symbol we're dealing with + return expDTComponentsMeta($0, formatObj); + }); + + return computeFinalPatterns(formatObj); +} + +/** + * Processes DateTime formats from CLDR to an easier-to-parse format. + * the result of this operation should be cached the first time a particular + * calendar is analyzed. + * + * The specification requires we support at least the following subsets of + * date/time components: + * + * - 'weekday', 'year', 'month', 'day', 'hour', 'minute', 'second' + * - 'weekday', 'year', 'month', 'day' + * - 'year', 'month', 'day' + * - 'year', 'month' + * - 'month', 'day' + * - 'hour', 'minute', 'second' + * - 'hour', 'minute' + * + * We need to cherry pick at least these subsets from the CLDR data and convert + * them into the pattern objects used in the ECMA-402 API. + */ +function createDateTimeFormats(formats) { + var availableFormats = formats.availableFormats; + var timeFormats = formats.timeFormats; + var dateFormats = formats.dateFormats; + var result = []; + var skeleton = void 0, + pattern = void 0, + computed = void 0, + i = void 0, + j = void 0; + var timeRelatedFormats = []; + var dateRelatedFormats = []; + + // Map available (custom) formats into a pattern for createDateTimeFormats + for (skeleton in availableFormats) { + if (availableFormats.hasOwnProperty(skeleton)) { + pattern = availableFormats[skeleton]; + computed = createDateTimeFormat(skeleton, pattern); + if (computed) { + result.push(computed); + // in some cases, the format is only displaying date specific props + // or time specific props, in which case we need to also produce the + // combined formats. + if (isDateFormatOnly(computed)) { + dateRelatedFormats.push(computed); + } else if (isTimeFormatOnly(computed)) { + timeRelatedFormats.push(computed); + } + } + } + } + + // Map time formats into a pattern for createDateTimeFormats + for (skeleton in timeFormats) { + if (timeFormats.hasOwnProperty(skeleton)) { + pattern = timeFormats[skeleton]; + computed = createDateTimeFormat(skeleton, pattern); + if (computed) { + result.push(computed); + timeRelatedFormats.push(computed); + } + } + } + + // Map date formats into a pattern for createDateTimeFormats + for (skeleton in dateFormats) { + if (dateFormats.hasOwnProperty(skeleton)) { + pattern = dateFormats[skeleton]; + computed = createDateTimeFormat(skeleton, pattern); + if (computed) { + result.push(computed); + dateRelatedFormats.push(computed); + } + } + } + + // combine custom time and custom date formats when they are orthogonals to complete the + // formats supported by CLDR. + // This Algo is based on section "Missing Skeleton Fields" from: + // http://unicode.org/reports/tr35/tr35-dates.html#availableFormats_appendItems + for (i = 0; i < timeRelatedFormats.length; i += 1) { + for (j = 0; j < dateRelatedFormats.length; j += 1) { + if (dateRelatedFormats[j].month === 'long') { + pattern = dateRelatedFormats[j].weekday ? formats.full : formats.long; + } else if (dateRelatedFormats[j].month === 'short') { + pattern = formats.medium; + } else { + pattern = formats.short; + } + computed = joinDateAndTimeFormats(dateRelatedFormats[j], timeRelatedFormats[i]); + computed.originalPattern = pattern; + computed.extendedPattern = pattern.replace('{0}', timeRelatedFormats[i].extendedPattern).replace('{1}', dateRelatedFormats[j].extendedPattern).replace(/^[,\s]+|[,\s]+$/gi, ''); + result.push(computeFinalPatterns(computed)); + } + } + + return result; +} + +// An object map of date component keys, saves using a regex later +var dateWidths = objCreate(null, { narrow: {}, short: {}, long: {} }); + +/** + * Returns a string for a date component, resolved using multiple inheritance as specified + * as specified in the Unicode Technical Standard 35. + */ +function resolveDateString(data, ca, component, width, key) { + // From http://www.unicode.org/reports/tr35/tr35.html#Multiple_Inheritance: + // 'In clearly specified instances, resources may inherit from within the same locale. + // For example, ... the Buddhist calendar inherits from the Gregorian calendar.' + var obj = data[ca] && data[ca][component] ? data[ca][component] : data.gregory[component], + + + // "sideways" inheritance resolves strings when a key doesn't exist + alts = { + narrow: ['short', 'long'], + short: ['long', 'narrow'], + long: ['short', 'narrow'] + }, + + + // + resolved = hop.call(obj, width) ? obj[width] : hop.call(obj, alts[width][0]) ? obj[alts[width][0]] : obj[alts[width][1]]; + + // `key` wouldn't be specified for components 'dayPeriods' + return key !== null ? resolved[key] : resolved; +} // Define the DateTimeFormat constructor internally so it cannot be tainted -function DateTimeFormatConstructor () { +function DateTimeFormatConstructor() { var locales = arguments[0]; var options = arguments[1]; @@ -11519,66 +12063,60 @@ defineProperty(DateTimeFormatConstructor, 'prototype', { * (which must be an object), locales, and options. It initializes dateTimeFormat as a * DateTimeFormat object. */ -function/* 12.1.1.1 */InitializeDateTimeFormat (dateTimeFormat, locales, options) { - var +function /* 12.1.1.1 */InitializeDateTimeFormat(dateTimeFormat, locales, options) { // This will be a internal properties object if we're not already initialized - internal = getInternalProperties(dateTimeFormat), + var internal = getInternalProperties(dateTimeFormat); // Create an object whose props can be used to restore the values of RegExp props - regexpState = createRegExpRestore(); + var regexpState = createRegExpRestore(); // 1. If dateTimeFormat has an [[initializedIntlObject]] internal property with // value true, throw a TypeError exception. - if (internal['[[initializedIntlObject]]'] === true) - throw new TypeError('`this` object has already been initialized as an Intl object'); + if (internal['[[initializedIntlObject]]'] === true) throw new TypeError('`this` object has already been initialized as an Intl object'); // Need this to access the `internal` object defineProperty(dateTimeFormat, '__getInternalProperties', { - value: function () { + value: function value() { // NOTE: Non-standard, for internal use only - if (arguments[0] === secret) - return internal; + if (arguments[0] === secret) return internal; } }); // 2. Set the [[initializedIntlObject]] internal property of numberFormat to true. internal['[[initializedIntlObject]]'] = true; - var // 3. Let requestedLocales be the result of calling the CanonicalizeLocaleList // abstract operation (defined in 9.2.1) with argument locales. - requestedLocales = CanonicalizeLocaleList(locales), + var requestedLocales = CanonicalizeLocaleList(locales); // 4. Let options be the result of calling the ToDateTimeOptions abstract // operation (defined below) with arguments options, "any", and "date". - options = ToDateTimeOptions(options, 'any', 'date'), + options = ToDateTimeOptions(options, 'any', 'date'); // 5. Let opt be a new Record. - opt = new Record(); + var opt = new Record(); // 6. Let matcher be the result of calling the GetOption abstract operation // (defined in 9.2.9) with arguments options, "localeMatcher", "string", a List // containing the two String values "lookup" and "best fit", and "best fit". - matcher = GetOption(options, 'localeMatcher', 'string', new List('lookup', 'best fit'), 'best fit'); + var matcher = GetOption(options, 'localeMatcher', 'string', new List('lookup', 'best fit'), 'best fit'); // 7. Set opt.[[localeMatcher]] to matcher. opt['[[localeMatcher]]'] = matcher; - var // 8. Let DateTimeFormat be the standard built-in object that is the initial // value of Intl.DateTimeFormat. - DateTimeFormat = internals.DateTimeFormat, // This is what we *really* need + var DateTimeFormat = internals.DateTimeFormat; // This is what we *really* need // 9. Let localeData be the value of the [[localeData]] internal property of // DateTimeFormat. - localeData = DateTimeFormat['[[localeData]]'], + var localeData = DateTimeFormat['[[localeData]]']; // 10. Let r be the result of calling the ResolveLocale abstract operation // (defined in 9.2.5) with the [[availableLocales]] internal property of // DateTimeFormat, requestedLocales, opt, the [[relevantExtensionKeys]] // internal property of DateTimeFormat, and localeData. - r = ResolveLocale(DateTimeFormat['[[availableLocales]]'], requestedLocales, - opt, DateTimeFormat['[[relevantExtensionKeys]]'], localeData); + var r = ResolveLocale(DateTimeFormat['[[availableLocales]]'], requestedLocales, opt, DateTimeFormat['[[relevantExtensionKeys]]'], localeData); // 11. Set the [[locale]] internal property of dateTimeFormat to the value of // r.[[locale]]. @@ -11595,13 +12133,12 @@ function/* 12.1.1.1 */InitializeDateTimeFormat (dateTimeFormat, locales, options // The specification doesn't tell us to do this, but it's helpful later on internal['[[dataLocale]]'] = r['[[dataLocale]]']; - var // 14. Let dataLocale be the value of r.[[dataLocale]]. - dataLocale = r['[[dataLocale]]'], + var dataLocale = r['[[dataLocale]]']; // 15. Let tz be the result of calling the [[Get]] internal method of options with // argument "timeZone". - tz = options.timeZone; + var tz = options.timeZone; // 16. If tz is not undefined, then if (tz !== undefined) { @@ -11614,8 +12151,7 @@ function/* 12.1.1.1 */InitializeDateTimeFormat (dateTimeFormat, locales, options // c. If tz is not "UTC", then throw a RangeError exception. // ###TODO: accept more time zones### - if (tz !== 'UTC') - throw new RangeError('timeZone is not supported.'); + if (tz !== 'UTC') throw new RangeError('timeZone is not supported.'); } // 17. Set the [[timeZone]] internal property of dateTimeFormat to tz. @@ -11626,84 +12162,85 @@ function/* 12.1.1.1 */InitializeDateTimeFormat (dateTimeFormat, locales, options // 19. For each row of Table 3, except the header row, do: for (var prop in dateTimeComponents) { - if (!hop.call(dateTimeComponents, prop)) - continue; + if (!hop.call(dateTimeComponents, prop)) continue; - var // 20. Let prop be the name given in the Property column of the row. // 21. Let value be the result of calling the GetOption abstract operation, // passing as argument options, the name given in the Property column of the // row, "string", a List containing the strings given in the Values column of // the row, and undefined. - value = GetOption(options, prop, 'string', dateTimeComponents[prop]); + var value = GetOption(options, prop, 'string', dateTimeComponents[prop]); // 22. Set opt.[[]] to value. - opt['[['+prop+']]'] = value; + opt['[[' + prop + ']]'] = value; } - var - // Assigned a value below - bestFormat, + // Assigned a value below + var bestFormat = void 0; - // 23. Let dataLocaleData be the result of calling the [[Get]] internal method of - // localeData with argument dataLocale. - dataLocaleData = localeData[dataLocale], + // 23. Let dataLocaleData be the result of calling the [[Get]] internal method of + // localeData with argument dataLocale. + var dataLocaleData = localeData[dataLocale]; - // 24. Let formats be the result of calling the [[Get]] internal method of - // dataLocaleData with argument "formats". - // Note: we process the CLDR formats into the spec'd structure - formats = ToDateTimeFormats(dataLocaleData.formats), + // 24. Let formats be the result of calling the [[Get]] internal method of + // dataLocaleData with argument "formats". + // Note: we process the CLDR formats into the spec'd structure + var formats = ToDateTimeFormats(dataLocaleData.formats); - // 25. Let matcher be the result of calling the GetOption abstract operation with - // arguments options, "formatMatcher", "string", a List containing the two String - // values "basic" and "best fit", and "best fit". - matcher = GetOption(options, 'formatMatcher', 'string', new List('basic', 'best fit'), 'best fit'); + // 25. Let matcher be the result of calling the GetOption abstract operation with + // arguments options, "formatMatcher", "string", a List containing the two String + // values "basic" and "best fit", and "best fit". + matcher = GetOption(options, 'formatMatcher', 'string', new List('basic', 'best fit'), 'best fit'); // Optimization: caching the processed formats as a one time operation by // replacing the initial structure from localeData dataLocaleData.formats = formats; // 26. If matcher is "basic", then - if (matcher === 'basic') + if (matcher === 'basic') { // 27. Let bestFormat be the result of calling the BasicFormatMatcher abstract // operation (defined below) with opt and formats. bestFormat = BasicFormatMatcher(opt, formats); - // 28. Else - else - // 29. Let bestFormat be the result of calling the BestFitFormatMatcher - // abstract operation (defined below) with opt and formats. - bestFormat = BestFitFormatMatcher(opt, formats); + // 28. Else + } else { + { + // diverging + var _hr = GetOption(options, 'hour12', 'boolean' /*, undefined, undefined*/); + opt.hour12 = _hr === undefined ? dataLocaleData.hour12 : _hr; + } + // 29. Let bestFormat be the result of calling the BestFitFormatMatcher + // abstract operation (defined below) with opt and formats. + bestFormat = BestFitFormatMatcher(opt, formats); + } // 30. For each row in Table 3, except the header row, do - for (var prop in dateTimeComponents) { - if (!hop.call(dateTimeComponents, prop)) - continue; + for (var _prop in dateTimeComponents) { + if (!hop.call(dateTimeComponents, _prop)) continue; // a. Let prop be the name given in the Property column of the row. // b. Let pDesc be the result of calling the [[GetOwnProperty]] internal method of // bestFormat with argument prop. // c. If pDesc is not undefined, then - if (hop.call(bestFormat, prop)) { - var + if (hop.call(bestFormat, _prop)) { // i. Let p be the result of calling the [[Get]] internal method of bestFormat // with argument prop. - p = bestFormat[prop]; + var p = bestFormat[_prop]; + { + // diverging + p = bestFormat._ && hop.call(bestFormat._, _prop) ? bestFormat._[_prop] : p; + } // ii. Set the [[]] internal property of dateTimeFormat to p. - // Diverging from spec becuase of bug #58 - // https://github.com/tc39/ecma402/issues/58 - internal['[['+prop+']]'] = opt['[['+prop+']]'] || p; + internal['[[' + _prop + ']]'] = p; } } - var - // Assigned a value below - pattern, + var pattern = void 0; // Assigned a value below // 31. Let hr12 be the result of calling the GetOption abstract operation with // arguments options, "hour12", "boolean", undefined, and undefined. - hr12 = GetOption(options, 'hour12', 'boolean'/*, undefined, undefined*/); + var hr12 = GetOption(options, 'hour12', 'boolean' /*, undefined, undefined*/); // 32. If dateTimeFormat has an internal property [[hour]], then if (internal['[[hour]]']) { @@ -11716,10 +12253,9 @@ function/* 12.1.1.1 */InitializeDateTimeFormat (dateTimeFormat, locales, options // c. If hr12 is true, then if (hr12 === true) { - var // i. Let hourNo0 be the result of calling the [[Get]] internal method of // dataLocaleData with argument "hourNo0". - hourNo0 = dataLocaleData.hourNo0; + var hourNo0 = dataLocaleData.hourNo0; // ii. Set the [[hourNo0]] internal property of dateTimeFormat to hourNo0. internal['[[hourNo0]]'] = hourNo0; @@ -11753,8 +12289,7 @@ function/* 12.1.1.1 */InitializeDateTimeFormat (dateTimeFormat, locales, options internal['[[initializedDateTimeFormat]]'] = true; // In ES3, we need to pre-bind the format() function - if (es3) - dateTimeFormat.format = GetFormatDateTime.call(dateTimeFormat); + if (es3) dateTimeFormat.format = GetFormatDateTime.call(dateTimeFormat); // Restore the RegExp properties regexpState.exp.test(regexpState.input); @@ -11768,15 +12303,15 @@ function/* 12.1.1.1 */InitializeDateTimeFormat (dateTimeFormat, locales, options * property names and allowable values for the components of date and time formats: */ var dateTimeComponents = { - weekday: [ "narrow", "short", "long" ], - era: [ "narrow", "short", "long" ], - year: [ "2-digit", "numeric" ], - month: [ "2-digit", "numeric", "narrow", "short", "long" ], - day: [ "2-digit", "numeric" ], - hour: [ "2-digit", "numeric" ], - minute: [ "2-digit", "numeric" ], - second: [ "2-digit", "numeric" ], - timeZoneName: [ "short", "long" ] + weekday: ["narrow", "short", "long"], + era: ["narrow", "short", "long"], + year: ["2-digit", "numeric"], + month: ["2-digit", "numeric", "narrow", "short", "long"], + day: ["2-digit", "numeric"], + hour: ["2-digit", "numeric"], + minute: ["2-digit", "numeric"], + second: ["2-digit", "numeric"], + timeZoneName: ["short", "long"] }; /** @@ -11787,73 +12322,67 @@ function ToDateTimeFormats(formats) { if (Object.prototype.toString.call(formats) === '[object Array]') { return formats; } - return src$cldr$$.createDateTimeFormats(formats); + return createDateTimeFormats(formats); } /** * When the ToDateTimeOptions abstract operation is called with arguments options, * required, and defaults, the following steps are taken: */ -function ToDateTimeOptions (options, required, defaults) { +function ToDateTimeOptions(options, required, defaults) { // 1. If options is undefined, then let options be null, else let options be // ToObject(options). - if (options === undefined) - options = null; - - else { + if (options === undefined) options = null;else { // (#12) options needs to be a Record, but it also needs to inherit properties var opt2 = toObject(options); options = new Record(); - for (var k in opt2) + for (var k in opt2) { options[k] = opt2[k]; + } } - var // 2. Let create be the standard built-in function object defined in ES5, 15.2.3.5. - create = objCreate, + var create = objCreate; // 3. Let options be the result of calling the [[Call]] internal method of create with // undefined as the this value and an argument list containing the single item // options. - options = create(options), + options = create(options); // 4. Let needDefaults be true. - needDefaults = true; + var needDefaults = true; // 5. If required is "date" or "any", then if (required === 'date' || required === 'any') { // a. For each of the property names "weekday", "year", "month", "day": - // i. If the result of calling the [[Get]] internal method of options with the - // property name is not undefined, then let needDefaults be false. - if (options.weekday !== undefined || options.year !== undefined - || options.month !== undefined || options.day !== undefined) - needDefaults = false; + // i. If the result of calling the [[Get]] internal method of options with the + // property name is not undefined, then let needDefaults be false. + if (options.weekday !== undefined || options.year !== undefined || options.month !== undefined || options.day !== undefined) needDefaults = false; } // 6. If required is "time" or "any", then if (required === 'time' || required === 'any') { // a. For each of the property names "hour", "minute", "second": - // i. If the result of calling the [[Get]] internal method of options with the - // property name is not undefined, then let needDefaults be false. - if (options.hour !== undefined || options.minute !== undefined || options.second !== undefined) - needDefaults = false; + // i. If the result of calling the [[Get]] internal method of options with the + // property name is not undefined, then let needDefaults be false. + if (options.hour !== undefined || options.minute !== undefined || options.second !== undefined) needDefaults = false; } // 7. If needDefaults is true and defaults is either "date" or "all", then if (needDefaults && (defaults === 'date' || defaults === 'all')) // a. For each of the property names "year", "month", "day": - // i. Call the [[DefineOwnProperty]] internal method of options with the - // property name, Property Descriptor {[[Value]]: "numeric", [[Writable]]: - // true, [[Enumerable]]: true, [[Configurable]]: true}, and false. + // i. Call the [[DefineOwnProperty]] internal method of options with the + // property name, Property Descriptor {[[Value]]: "numeric", [[Writable]]: + // true, [[Enumerable]]: true, [[Configurable]]: true}, and false. options.year = options.month = options.day = 'numeric'; // 8. If needDefaults is true and defaults is either "time" or "all", then if (needDefaults && (defaults === 'time' || defaults === 'all')) // a. For each of the property names "hour", "minute", "second": - // i. Call the [[DefineOwnProperty]] internal method of options with the - // property name, Property Descriptor {[[Value]]: "numeric", [[Writable]]: - // true, [[Enumerable]]: true, [[Configurable]]: true}, and false. + // i. Call the [[DefineOwnProperty]] internal method of options with the + // property name, Property Descriptor {[[Value]]: "numeric", [[Writable]]: + // true, [[Enumerable]]: true, [[Configurable]]: true}, and false. options.hour = options.minute = options.second = 'numeric'; // 9. Return options. @@ -11864,121 +12393,95 @@ function ToDateTimeOptions (options, required, defaults) { * When the BasicFormatMatcher abstract operation is called with two arguments options and * formats, the following steps are taken: */ -function BasicFormatMatcher (options, formats) { - return calculateScore(options, formats); -} - -/** - * Calculates score for BestFitFormatMatcher and BasicFormatMatcher. - * Abstracted from BasicFormatMatcher section. - */ -function calculateScore (options, formats, bestFit) { - var - // Additional penalty type when bestFit === true - diffDataTypePenalty = 8, - +function BasicFormatMatcher(options, formats) { // 1. Let removalPenalty be 120. - removalPenalty = 120, + var removalPenalty = 120; // 2. Let additionPenalty be 20. - additionPenalty = 20, + var additionPenalty = 20; // 3. Let longLessPenalty be 8. - longLessPenalty = 8, + var longLessPenalty = 8; // 4. Let longMorePenalty be 6. - longMorePenalty = 6, + var longMorePenalty = 6; // 5. Let shortLessPenalty be 6. - shortLessPenalty = 6, + var shortLessPenalty = 6; // 6. Let shortMorePenalty be 3. - shortMorePenalty = 3, + var shortMorePenalty = 3; // 7. Let bestScore be -Infinity. - bestScore = -Infinity, + var bestScore = -Infinity; // 8. Let bestFormat be undefined. - bestFormat, + var bestFormat = void 0; // 9. Let i be 0. - i = 0, + var i = 0; - // 10. Let len be the result of calling the [[Get]] internal method of formats with argument "length". - len = formats.length; + // 10. Assert: formats is an Array object. - // 11. Repeat while i < len: + // 11. Let len be the result of calling the [[Get]] internal method of formats with argument "length". + var len = formats.length; + + // 12. Repeat while i < len: while (i < len) { - var // a. Let format be the result of calling the [[Get]] internal method of formats with argument ToString(i). - format = formats[i], + var format = formats[i]; // b. Let score be 0. - score = 0; + var score = 0; // c. For each property shown in Table 3: for (var property in dateTimeComponents) { - if (!hop.call(dateTimeComponents, property)) - continue; + if (!hop.call(dateTimeComponents, property)) continue; - var // i. Let optionsProp be options.[[]]. - optionsProp = options['[['+ property +']]'], + var optionsProp = options['[[' + property + ']]']; // ii. Let formatPropDesc be the result of calling the [[GetOwnProperty]] internal method of format // with argument property. // iii. If formatPropDesc is not undefined, then // 1. Let formatProp be the result of calling the [[Get]] internal method of format with argument property. - formatProp = hop.call(format, property) ? format[property] : undefined; + var formatProp = hop.call(format, property) ? format[property] : undefined; // iv. If optionsProp is undefined and formatProp is not undefined, then decrease score by // additionPenalty. - if (optionsProp === undefined && formatProp !== undefined) - score -= additionPenalty; + if (optionsProp === undefined && formatProp !== undefined) score -= additionPenalty; // v. Else if optionsProp is not undefined and formatProp is undefined, then decrease score by // removalPenalty. - else if (optionsProp !== undefined && formatProp === undefined) - score -= removalPenalty; - - // vi. Else - else { - var - // 1. Let values be the array ["2-digit", "numeric", "narrow", "short", - // "long"]. - values = [ '2-digit', 'numeric', 'narrow', 'short', 'long' ], + else if (optionsProp !== undefined && formatProp === undefined) score -= removalPenalty; - // 2. Let optionsPropIndex be the index of optionsProp within values. - optionsPropIndex = arrIndexOf.call(values, optionsProp), + // vi. Else + else { + // 1. Let values be the array ["2-digit", "numeric", "narrow", "short", + // "long"]. + var values = ['2-digit', 'numeric', 'narrow', 'short', 'long']; - // 3. Let formatPropIndex be the index of formatProp within values. - formatPropIndex = arrIndexOf.call(values, formatProp), + // 2. Let optionsPropIndex be the index of optionsProp within values. + var optionsPropIndex = arrIndexOf.call(values, optionsProp); - // 4. Let delta be max(min(formatPropIndex - optionsPropIndex, 2), -2). - delta = Math.max(Math.min(formatPropIndex - optionsPropIndex, 2), -2); + // 3. Let formatPropIndex be the index of formatProp within values. + var formatPropIndex = arrIndexOf.call(values, formatProp); - // When the bestFit argument is true, subtract additional penalty where data types are not the same - if (bestFit && ( - ((optionsProp === 'numeric' || optionsProp === '2-digit') && (formatProp !== 'numeric' && formatProp !== '2-digit') || (optionsProp !== 'numeric' && optionsProp !== '2-digit') && (formatProp === '2-digit' || formatProp === 'numeric')) - )) - score -= diffDataTypePenalty; + // 4. Let delta be max(min(formatPropIndex - optionsPropIndex, 2), -2). + var delta = Math.max(Math.min(formatPropIndex - optionsPropIndex, 2), -2); - // 5. If delta = 2, decrease score by longMorePenalty. - if (delta === 2) - score -= longMorePenalty; + // 5. If delta = 2, decrease score by longMorePenalty. + if (delta === 2) score -= longMorePenalty; - // 6. Else if delta = 1, decrease score by shortMorePenalty. - else if (delta === 1) - score -= shortMorePenalty; + // 6. Else if delta = 1, decrease score by shortMorePenalty. + else if (delta === 1) score -= shortMorePenalty; - // 7. Else if delta = -1, decrease score by shortLessPenalty. - else if (delta === -1) - score -= shortLessPenalty; + // 7. Else if delta = -1, decrease score by shortLessPenalty. + else if (delta === -1) score -= shortLessPenalty; - // 8. Else if delta = -2, decrease score by longLessPenalty. - else if (delta === -2) - score -= longLessPenalty; - } + // 8. Else if delta = -2, decrease score by longLessPenalty. + else if (delta === -2) score -= longLessPenalty; + } } // d. If score > bestScore, then @@ -11994,7 +12497,7 @@ function calculateScore (options, formats, bestFit) { i++; } - // 12. Return bestFormat. + // 13. Return bestFormat. return bestFormat; } @@ -12008,6 +12511,29 @@ function calculateScore (options, formats, bestFit) { * with the addition of bonus points awarded where the requested format is of * the same data type as the potentially matching format. * + * This algo relies on the concept of closest distance matching described here: + * http://unicode.org/reports/tr35/tr35-dates.html#Matching_Skeletons + * Typically a “best match” is found using a closest distance match, such as: + * + * Symbols requesting a best choice for the locale are replaced. + * j → one of {H, k, h, K}; C → one of {a, b, B} + * -> Covered by cldr.js matching process + * + * For fields with symbols representing the same type (year, month, day, etc): + * Most symbols have a small distance from each other. + * M ≅ L; E ≅ c; a ≅ b ≅ B; H ≅ k ≅ h ≅ K; ... + * -> Covered by cldr.js matching process + * + * Width differences among fields, other than those marking text vs numeric, are given small distance from each other. + * MMM ≅ MMMM + * MM ≅ M + * Numeric and text fields are given a larger distance from each other. + * MMM ≈ MM + * Symbols representing substantial differences (week of year vs week of month) are given much larger a distances from each other. + * d ≋ D; ... + * Missing or extra fields cause a match to fail. (But see Missing Skeleton Fields). + * + * * For example, * * { month: 'numeric', day: 'numeric' } @@ -12023,8 +12549,122 @@ function calculateScore (options, formats, bestFit) { * This makes sense because a user requesting a formatted date with numeric parts would * not expect to see the returned format containing narrow, short or long part names */ -function BestFitFormatMatcher (options, formats) { - return calculateScore(options, formats, true); +function BestFitFormatMatcher(options, formats) { + + // 1. Let removalPenalty be 120. + var removalPenalty = 120; + + // 2. Let additionPenalty be 20. + var additionPenalty = 20; + + // 3. Let longLessPenalty be 8. + var longLessPenalty = 8; + + // 4. Let longMorePenalty be 6. + var longMorePenalty = 6; + + // 5. Let shortLessPenalty be 6. + var shortLessPenalty = 6; + + // 6. Let shortMorePenalty be 3. + var shortMorePenalty = 3; + + var hour12Penalty = 1; + + // 7. Let bestScore be -Infinity. + var bestScore = -Infinity; + + // 8. Let bestFormat be undefined. + var bestFormat = void 0; + + // 9. Let i be 0. + var i = 0; + + // 10. Assert: formats is an Array object. + + // 11. Let len be the result of calling the [[Get]] internal method of formats with argument "length". + var len = formats.length; + + // 12. Repeat while i < len: + while (i < len) { + // a. Let format be the result of calling the [[Get]] internal method of formats with argument ToString(i). + var format = formats[i]; + + // b. Let score be 0. + var score = 0; + + // c. For each property shown in Table 3: + for (var property in dateTimeComponents) { + if (!hop.call(dateTimeComponents, property)) continue; + + // i. Let optionsProp be options.[[]]. + var optionsProp = options['[[' + property + ']]']; + + // ii. Let formatPropDesc be the result of calling the [[GetOwnProperty]] internal method of format + // with argument property. + // iii. If formatPropDesc is not undefined, then + // 1. Let formatProp be the result of calling the [[Get]] internal method of format with argument property. + var formatProp = hop.call(format, property) ? format[property] : undefined; + + // iv. If optionsProp is undefined and formatProp is not undefined, then decrease score by + // additionPenalty. + if (optionsProp === undefined && formatProp !== undefined) score -= additionPenalty; + + // v. Else if optionsProp is not undefined and formatProp is undefined, then decrease score by + // removalPenalty. + else if (optionsProp !== undefined && formatProp === undefined) score -= removalPenalty; + + // vi. Else + else { + // 1. Let values be the array ["2-digit", "numeric", "narrow", "short", + // "long"]. + var values = ['2-digit', 'numeric', 'narrow', 'short', 'long']; + + // 2. Let optionsPropIndex be the index of optionsProp within values. + var optionsPropIndex = arrIndexOf.call(values, optionsProp); + + // 3. Let formatPropIndex be the index of formatProp within values. + var formatPropIndex = arrIndexOf.call(values, formatProp); + + // 4. Let delta be max(min(formatPropIndex - optionsPropIndex, 2), -2). + var delta = Math.max(Math.min(formatPropIndex - optionsPropIndex, 2), -2); + + { + // diverging from spec + // When the bestFit argument is true, subtract additional penalty where data types are not the same + if (formatPropIndex <= 1 && optionsPropIndex >= 2 || formatPropIndex >= 2 && optionsPropIndex <= 1) { + // 5. If delta = 2, decrease score by longMorePenalty. + if (delta > 0) score -= longMorePenalty;else if (delta < 0) score -= longLessPenalty; + } else { + // 5. If delta = 2, decrease score by longMorePenalty. + if (delta > 1) score -= shortMorePenalty;else if (delta < -1) score -= shortLessPenalty; + } + } + } + } + + { + // diverging to also take into consideration differences between 12 or 24 hours + // which is special for the best fit only. + if (format._.hour12 !== options.hour12) { + score -= hour12Penalty; + } + } + + // d. If score > bestScore, then + if (score > bestScore) { + // i. Let bestScore be score. + bestScore = score; + // ii. Let bestFormat be format. + bestFormat = format; + } + + // e. Increase i by 1. + i++; + } + + // 13. Return bestFormat. + return bestFormat; } /* 12.2.3 */internals.DateTimeFormat = { @@ -12037,10 +12677,42 @@ function BestFitFormatMatcher (options, formats) { * When the supportedLocalesOf method of Intl.DateTimeFormat is called, the * following steps are taken: */ -/* 12.2.2 */defineProperty(Intl.DateTimeFormat, 'supportedLocalesOf', { +/* 12.2.2 */ +defineProperty(Intl.DateTimeFormat, 'supportedLocalesOf', { configurable: true, writable: true, - value: fnBind.call(supportedLocalesOf, internals.DateTimeFormat) + value: fnBind.call(function (locales) { + // Bound functions only have the `this` value altered if being used as a constructor, + // this lets us imitate a native function that has no constructor + if (!hop.call(this, '[[availableLocales]]')) throw new TypeError('supportedLocalesOf() is not a constructor'); + + // Create an object whose props can be used to restore the values of RegExp props + var regexpState = createRegExpRestore(), + + + // 1. If options is not provided, then let options be undefined. + options = arguments[1], + + + // 2. Let availableLocales be the value of the [[availableLocales]] internal + // property of the standard built-in object that is the initial value of + // Intl.NumberFormat. + + availableLocales = this['[[availableLocales]]'], + + + // 3. Let requestedLocales be the result of calling the CanonicalizeLocaleList + // abstract operation (defined in 9.2.1) with argument locales. + requestedLocales = CanonicalizeLocaleList(locales); + + // Restore the RegExp properties + regexpState.exp.test(regexpState.input); + + // 4. Return the result of calling the SupportedLocales abstract operation + // (defined in 9.2.8) with arguments availableLocales, requestedLocales, + // and options. + return SupportedLocales(availableLocales, requestedLocales, options); + }, internals.NumberFormat) }); /** @@ -12053,12 +12725,16 @@ function BestFitFormatMatcher (options, formats) { get: GetFormatDateTime }); +defineProperty(Intl.DateTimeFormat.prototype, 'formatToParts', { + configurable: true, + get: GetFormatToPartsDateTime +}); + function GetFormatDateTime() { - var internal = this != null && typeof this === 'object' && getInternalProperties(this); + var internal = this !== null && babelHelpers["typeof"](this) === 'object' && getInternalProperties(this); // Satisfy test 12.3_b - if (!internal || !internal['[[initializedDateTimeFormat]]']) - throw new TypeError('`this` value for format() is not an initialized Intl.DateTimeFormat object.'); + if (!internal || !internal['[[initializedDateTimeFormat]]']) throw new TypeError('`this` value for format() is not an initialized Intl.DateTimeFormat object.'); // The value of the [[Get]] attribute is a function that takes the following // steps: @@ -12066,27 +12742,26 @@ function GetFormatDateTime() { // 1. If the [[boundFormat]] internal property of this DateTimeFormat object // is undefined, then: if (internal['[[boundFormat]]'] === undefined) { - var // a. Let F be a Function object, with internal properties set as // specified for built-in functions in ES5, 15, or successor, and the // length property set to 0, that takes the argument date and // performs the following steps: - F = function () { - // i. If date is not provided or is undefined, then let x be the - // result as if by the expression Date.now() where Date.now is - // the standard built-in function defined in ES5, 15.9.4.4. - // ii. Else let x be ToNumber(date). - // iii. Return the result of calling the FormatDateTime abstract - // operation (defined below) with arguments this and x. - var x = Number(arguments.length === 0 ? Date.now() : arguments[0]); - return FormatDateTime(this, x); - }, + var F = function F() { + // i. If date is not provided or is undefined, then let x be the + // result as if by the expression Date.now() where Date.now is + // the standard built-in function defined in ES5, 15.9.4.4. + // ii. Else let x be ToNumber(date). + // iii. Return the result of calling the FormatDateTime abstract + // operation (defined below) with arguments this and x. + var x = Number(arguments.length === 0 ? Date.now() : arguments[0]); + return FormatDateTime(this, x); + }; // b. Let bind be the standard built-in function object defined in ES5, // 15.3.4.5. // c. Let bf be the result of calling the [[Call]] internal method of // bind with F as the this value and an argument list containing // the single item this. - bf = fnBind.call(F, this); + var bf = fnBind.call(F, this); // d. Set the [[boundFormat]] internal property of this NumberFormat // object to bf. internal['[[boundFormat]]'] = bf; @@ -12096,163 +12771,238 @@ function GetFormatDateTime() { return internal['[[boundFormat]]']; } -/** - * When the FormatDateTime abstract operation is called with arguments dateTimeFormat - * (which must be an object initialized as a DateTimeFormat) and x (which must be a Number - * value), it returns a String value representing x (interpreted as a time value as - * specified in ES5, 15.9.1.1) according to the effective locale and the formatting - * options of dateTimeFormat. - */ -function FormatDateTime(dateTimeFormat, x) { +function GetFormatToPartsDateTime() { + var internal = this !== null && babelHelpers["typeof"](this) === 'object' && getInternalProperties(this); + + if (!internal || !internal['[[initializedDateTimeFormat]]']) throw new TypeError('`this` value for formatToParts() is not an initialized Intl.DateTimeFormat object.'); + + if (internal['[[boundFormatToParts]]'] === undefined) { + var F = function F() { + var x = Number(arguments.length === 0 ? Date.now() : arguments[0]); + return FormatToPartsDateTime(this, x); + }; + var bf = fnBind.call(F, this); + internal['[[boundFormatToParts]]'] = bf; + } + return internal['[[boundFormatToParts]]']; +} + +function CreateDateTimeParts(dateTimeFormat, x) { // 1. If x is not a finite Number, then throw a RangeError exception. - if (!isFinite(x)) - throw new RangeError('Invalid valid date passed to format'); + if (!isFinite(x)) throw new RangeError('Invalid valid date passed to format'); - var - internal = dateTimeFormat.__getInternalProperties(secret), + var internal = dateTimeFormat.__getInternalProperties(secret); // Creating restore point for properties on the RegExp object... please wait - regexpState = createRegExpRestore(), + /* let regexpState = */createRegExpRestore(); // ###TODO: review this // 2. Let locale be the value of the [[locale]] internal property of dateTimeFormat. - locale = internal['[[locale]]'], + var locale = internal['[[locale]]']; // 3. Let nf be the result of creating a new NumberFormat object as if by the // expression new Intl.NumberFormat([locale], {useGrouping: false}) where // Intl.NumberFormat is the standard built-in constructor defined in 11.1.3. - nf = new Intl.NumberFormat([locale], {useGrouping: false}), + var nf = new Intl.NumberFormat([locale], { useGrouping: false }); // 4. Let nf2 be the result of creating a new NumberFormat object as if by the // expression new Intl.NumberFormat([locale], {minimumIntegerDigits: 2, useGrouping: // false}) where Intl.NumberFormat is the standard built-in constructor defined in // 11.1.3. - nf2 = new Intl.NumberFormat([locale], {minimumIntegerDigits: 2, useGrouping: false}), + var nf2 = new Intl.NumberFormat([locale], { minimumIntegerDigits: 2, useGrouping: false }); // 5. Let tm be the result of calling the ToLocalTime abstract operation (defined // below) with x, the value of the [[calendar]] internal property of dateTimeFormat, // and the value of the [[timeZone]] internal property of dateTimeFormat. - tm = ToLocalTime(x, internal['[[calendar]]'], internal['[[timeZone]]']), + var tm = ToLocalTime(x, internal['[[calendar]]'], internal['[[timeZone]]']); // 6. Let result be the value of the [[pattern]] internal property of dateTimeFormat. - result = internal['[[pattern]]'], + var pattern = internal['[[pattern]]']; - // Need the locale minus any extensions - dataLocale = internal['[[dataLocale]]'], + // 7. + var result = new List(); - // Need the calendar data from CLDR - localeData = internals.DateTimeFormat['[[localeData]]'][dataLocale].calendars, - ca = internal['[[calendar]]']; - - // 7. For each row of Table 3, except the header row, do: - for (var p in dateTimeComponents) { - // a. If dateTimeFormat has an internal property with the name given in the - // Property column of the row, then: - if (hop.call(internal, '[['+ p +']]')) { - var - // Assigned values below - pm, fv, - - // i. Let p be the name given in the Property column of the row. - // ii. Let f be the value of the [[

]] internal property of dateTimeFormat. - f = internal['[['+ p +']]'], - - // iii. Let v be the value of tm.[[

]]. - v = tm['[['+ p +']]']; - - // iv. If p is "year" and v ≤ 0, then let v be 1 - v. - if (p === 'year' && v <= 0) - v = 1 - v; + // 8. + var index = 0; - // v. If p is "month", then increase v by 1. - else if (p === 'month') - v++; + // 9. + var beginIndex = pattern.indexOf('{'); - // vi. If p is "hour" and the value of the [[hour12]] internal property of - // dateTimeFormat is true, then - else if (p === 'hour' && internal['[[hour12]]'] === true) { - // 1. Let v be v modulo 12. - v = v % 12; + // 10. + var endIndex = 0; - // 2. If v is equal to the value of tm.[[

]], then let pm be false; else - // let pm be true. - pm = v !== tm['[['+ p +']]']; + // Need the locale minus any extensions + var dataLocale = internal['[[dataLocale]]']; - // 3. If v is 0 and the value of the [[hourNo0]] internal property of - // dateTimeFormat is true, then let v be 12. - if (v === 0 && internal['[[hourNo0]]'] === true) - v = 12; + // Need the calendar data from CLDR + var localeData = internals.DateTimeFormat['[[localeData]]'][dataLocale].calendars; + var ca = internal['[[calendar]]']; + + // 11. + while (beginIndex !== -1) { + var fv = void 0; + // a. + endIndex = pattern.indexOf('}', beginIndex); + // b. + if (endIndex === -1) { + throw new Error('Unclosed pattern'); + } + // c. + if (beginIndex > index) { + arrPush.call(result, { + type: 'literal', + value: pattern.substring(index, beginIndex) + }); + } + // d. + var p = pattern.substring(beginIndex + 1, endIndex); + // e. + if (dateTimeComponents.hasOwnProperty(p)) { + // i. Let f be the value of the [[

]] internal property of dateTimeFormat. + var f = internal['[[' + p + ']]']; + // ii. Let v be the value of tm.[[

]]. + var v = tm['[[' + p + ']]']; + // iii. If p is "year" and v ≤ 0, then let v be 1 - v. + if (p === 'year' && v <= 0) { + v = 1 - v; } + // iv. If p is "month", then increase v by 1. + else if (p === 'month') { + v++; + } + // v. If p is "hour" and the value of the [[hour12]] internal property of + // dateTimeFormat is true, then + else if (p === 'hour' && internal['[[hour12]]'] === true) { + // 1. Let v be v modulo 12. + v = v % 12; + // 2. If v is 0 and the value of the [[hourNo0]] internal property of + // dateTimeFormat is true, then let v be 12. + if (v === 0 && internal['[[hourNo0]]'] === true) { + v = 12; + } + } - // vii. If f is "numeric", then - if (f === 'numeric') + // vi. If f is "numeric", then + if (f === 'numeric') { // 1. Let fv be the result of calling the FormatNumber abstract operation // (defined in 11.3.2) with arguments nf and v. fv = FormatNumber(nf, v); - - // viii. Else if f is "2-digit", then + } + // vii. Else if f is "2-digit", then else if (f === '2-digit') { - // 1. Let fv be the result of calling the FormatNumber abstract operation - // with arguments nf2 and v. - fv = FormatNumber(nf2, v); + // 1. Let fv be the result of calling the FormatNumber abstract operation + // with arguments nf2 and v. + fv = FormatNumber(nf2, v); + // 2. If the length of fv is greater than 2, let fv be the substring of fv + // containing the last two characters. + if (fv.length > 2) { + fv = fv.slice(-2); + } + } + // viii. Else if f is "narrow", "short", or "long", then let fv be a String + // value representing f in the desired form; the String value depends upon + // the implementation and the effective locale and calendar of + // dateTimeFormat. If p is "month", then the String value may also depend + // on whether dateTimeFormat has a [[day]] internal property. If p is + // "timeZoneName", then the String value may also depend on the value of + // the [[inDST]] field of tm. + else if (f in dateWidths) { + switch (p) { + case 'month': + fv = resolveDateString(localeData, ca, 'months', f, tm['[[' + p + ']]']); + break; + + case 'weekday': + try { + fv = resolveDateString(localeData, ca, 'days', f, tm['[[' + p + ']]']); + // fv = resolveDateString(ca.days, f)[tm['[['+ p +']]']]; + } catch (e) { + throw new Error('Could not find weekday data for locale ' + locale); + } + break; - // 2. If the length of fv is greater than 2, let fv be the substring of fv - // containing the last two characters. - if (fv.length > 2) - fv = fv.slice(-2); - } + case 'timeZoneName': + fv = ''; // ###TODO + break; - // ix. Else if f is "narrow", "short", or "long", then let fv be a String - // value representing f in the desired form; the String value depends upon - // the implementation and the effective locale and calendar of - // dateTimeFormat. If p is "month", then the String value may also depend - // on whether dateTimeFormat has a [[day]] internal property. If p is - // "timeZoneName", then the String value may also depend on the value of - // the [[inDST]] field of tm. - else if (f in dateWidths) { - switch (p) { - case 'month': - fv = resolveDateString(localeData, ca, 'months', f, tm['[['+ p +']]']); - break; + case 'era': + try { + fv = resolveDateString(localeData, ca, 'eras', f, tm['[[' + p + ']]']); + } catch (e) { + throw new Error('Could not find era data for locale ' + locale); + } + break; - case 'weekday': - try { - fv = resolveDateString(localeData, ca, 'days', f, tm['[['+ p +']]']); - // fv = resolveDateString(ca.days, f)[tm['[['+ p +']]']]; - } catch (e) { - throw new Error('Could not find weekday data for locale '+locale); + default: + fv = tm['[[' + p + ']]']; } - break; - - case 'timeZoneName': - fv = ''; // TODO - break; - - // TODO: Era - default: - fv = tm['[['+ p +']]']; + } + // ix + arrPush.call(result, { + type: p, + value: fv + }); + // f. + } else if (p === 'ampm') { + // i. + var _v = tm['[[hour]]']; + // ii./iii. + fv = resolveDateString(localeData, ca, 'dayPeriods', _v > 11 ? 'pm' : 'am', null); + // iv. + arrPush.call(result, { + type: 'dayPeriod', + value: fv + }); + // g. + } else { + arrPush.call(result, { + type: 'literal', + value: pattern.substring(beginIndex, endIndex + 1) + }); } - } - - // x. Replace the substring of result that consists of "{", p, and "}", with - // fv. - result = result.replace('{'+ p +'}', fv); - } + // h. + index = endIndex + 1; + // i. + beginIndex = pattern.indexOf('{', index); + } + // 12. + if (endIndex < pattern.length - 1) { + arrPush.call(result, { + type: 'literal', + value: pattern.substr(endIndex + 1) + }); } - // 8. If dateTimeFormat has an internal property [[hour12]] whose value is true, then - if (internal['[[hour12]]'] === true) { - // a. If pm is true, then let fv be an implementation and locale dependent String - // value representing “post meridiem”; else let fv be an implementation and - // locale dependent String value representing “ante meridiem”. - fv = resolveDateString(localeData, ca, 'dayPeriods', pm ? 'pm' : 'am'); + // 13. + return result; +} - // b. Replace the substring of result that consists of "{ampm}", with fv. - result = result.replace('{ampm}', fv); - } +/** + * When the FormatDateTime abstract operation is called with arguments dateTimeFormat + * (which must be an object initialized as a DateTimeFormat) and x (which must be a Number + * value), it returns a String value representing x (interpreted as a time value as + * specified in ES5, 15.9.1.1) according to the effective locale and the formatting + * options of dateTimeFormat. + */ +function FormatDateTime(dateTimeFormat, x) { + var parts = CreateDateTimeParts(dateTimeFormat, x); + var result = ''; - // Restore properties of the RegExp object - regexpState.exp.test(regexpState.input); + for (var i = 0; parts.length > i; i++) { + var part = parts[i]; + result += part.value; + } + return result; +} - // 9. Return result. +function FormatToPartsDateTime(dateTimeFormat, x) { + var parts = CreateDateTimeParts(dateTimeFormat, x); + var result = []; + for (var i = 0; parts.length > i; i++) { + var part = parts[i]; + result.push({ + type: part.type, + value: part.value + }); + } return result; } @@ -12278,15 +13028,14 @@ function ToLocalTime(date, calendar, timeZone) { // calculated value. return new Record({ '[[weekday]]': d[m + 'Day'](), - '[[era]]' : +(d[m + 'FullYear']() >= 0), - '[[year]]' : d[m + 'FullYear'](), - '[[month]]' : d[m + 'Month'](), - '[[day]]' : d[m + 'Date'](), - '[[hour]]' : d[m + 'Hours'](), - '[[minute]]' : d[m + 'Minutes'](), - '[[second]]' : d[m + 'Seconds'](), - '[[inDST]]' : false // ###TODO### - }); + '[[era]]': +(d[m + 'FullYear']() >= 0), + '[[year]]': d[m + 'FullYear'](), + '[[month]]': d[m + 'Month'](), + '[[day]]': d[m + 'Date'](), + '[[hour]]': d[m + 'Hours'](), + '[[minute]]': d[m + 'Minutes'](), + '[[second]]': d[m + 'Seconds'](), + '[[inDST]]': false }); } /** @@ -12297,37 +13046,30 @@ function ToLocalTime(date, calendar, timeZone) { * hour, minute, second, and timeZoneName. Properties whose corresponding internal * properties are not present are not assigned. */ -/* 12.3.3 */defineProperty(Intl.DateTimeFormat.prototype, 'resolvedOptions', { +/* 12.3.3 */ // ###TODO### +defineProperty(Intl.DateTimeFormat.prototype, 'resolvedOptions', { writable: true, configurable: true, - value: function () { - var prop, + value: function value() { + var prop = void 0, descs = new Record(), - props = [ - 'locale', 'calendar', 'numberingSystem', 'timeZone', 'hour12', 'weekday', - 'era', 'year', 'month', 'day', 'hour', 'minute', 'second', 'timeZoneName' - ], - internal = this != null && typeof this === 'object' && getInternalProperties(this); + props = ['locale', 'calendar', 'numberingSystem', 'timeZone', 'hour12', 'weekday', 'era', 'year', 'month', 'day', 'hour', 'minute', 'second', 'timeZoneName'], + internal = this !== null && babelHelpers["typeof"](this) === 'object' && getInternalProperties(this); // Satisfy test 12.3_b - if (!internal || !internal['[[initializedDateTimeFormat]]']) - throw new TypeError('`this` value for resolvedOptions() is not an initialized Intl.DateTimeFormat object.'); + if (!internal || !internal['[[initializedDateTimeFormat]]']) throw new TypeError('`this` value for resolvedOptions() is not an initialized Intl.DateTimeFormat object.'); for (var i = 0, max = props.length; i < max; i++) { - if (hop.call(internal, prop = '[[' + props[i] + ']]')) - descs[props[i]] = { value: internal[prop], writable: true, configurable: true, enumerable: true }; + if (hop.call(internal, prop = '[[' + props[i] + ']]')) descs[props[i]] = { value: internal[prop], writable: true, configurable: true, enumerable: true }; } return objCreate({}, descs); } }); -// Sect 13 Locale Sensitive Functions of the ECMAScript Language Specification -// =========================================================================== - var ls = Intl.__localeSensitiveProtos = { Number: {}, - Date: {} + Date: {} }; /** @@ -12336,8 +13078,7 @@ var ls = Intl.__localeSensitiveProtos = { */ /* 13.2.1 */ls.Number.toLocaleString = function () { // Satisfy test 13.2.1_1 - if (Object.prototype.toString.call(this) !== '[object Number]') - throw new TypeError('`this` value must be a number for Number.prototype.toLocaleString()'); + if (Object.prototype.toString.call(this) !== '[object Number]') throw new TypeError('`this` value must be a number for Number.prototype.toLocaleString()'); // 1. Let x be this Number value (as defined in ES5, 15.7.4). // 2. If locales is not provided, then let locales be undefined. @@ -12356,32 +13097,28 @@ var ls = Intl.__localeSensitiveProtos = { */ /* 13.3.1 */ls.Date.toLocaleString = function () { // Satisfy test 13.3.0_1 - if (Object.prototype.toString.call(this) !== '[object Date]') - throw new TypeError('`this` value must be a Date instance for Date.prototype.toLocaleString()'); + if (Object.prototype.toString.call(this) !== '[object Date]') throw new TypeError('`this` value must be a Date instance for Date.prototype.toLocaleString()'); - var // 1. Let x be this time value (as defined in ES5, 15.9.5). - x = +this; + var x = +this; // 2. If x is NaN, then return "Invalid Date". - if (isNaN(x)) - return 'Invalid Date'; + if (isNaN(x)) return 'Invalid Date'; - var // 3. If locales is not provided, then let locales be undefined. - locales = arguments[0], + var locales = arguments[0]; // 4. If options is not provided, then let options be undefined. - options = arguments[1], + var options = arguments[1]; // 5. Let options be the result of calling the ToDateTimeOptions abstract // operation (defined in 12.1.1) with arguments options, "any", and "all". - options = ToDateTimeOptions(options, 'any', 'all'), + options = ToDateTimeOptions(options, 'any', 'all'); // 6. Let dateTimeFormat be the result of creating a new object as if by the // expression new Intl.DateTimeFormat(locales, options) where // Intl.DateTimeFormat is the standard built-in constructor defined in 12.1.3. - dateTimeFormat = new DateTimeFormatConstructor(locales, options); + var dateTimeFormat = new DateTimeFormatConstructor(locales, options); // 7. Return the result of calling the FormatDateTime abstract operation (defined // in 12.3.2) with arguments dateTimeFormat and x. @@ -12394,32 +13131,29 @@ var ls = Intl.__localeSensitiveProtos = { */ /* 13.3.2 */ls.Date.toLocaleDateString = function () { // Satisfy test 13.3.0_1 - if (Object.prototype.toString.call(this) !== '[object Date]') - throw new TypeError('`this` value must be a Date instance for Date.prototype.toLocaleDateString()'); + if (Object.prototype.toString.call(this) !== '[object Date]') throw new TypeError('`this` value must be a Date instance for Date.prototype.toLocaleDateString()'); - var // 1. Let x be this time value (as defined in ES5, 15.9.5). - x = +this; + var x = +this; // 2. If x is NaN, then return "Invalid Date". - if (isNaN(x)) - return 'Invalid Date'; + if (isNaN(x)) return 'Invalid Date'; - var // 3. If locales is not provided, then let locales be undefined. - locales = arguments[0], + var locales = arguments[0], + // 4. If options is not provided, then let options be undefined. - options = arguments[1], + options = arguments[1]; // 5. Let options be the result of calling the ToDateTimeOptions abstract // operation (defined in 12.1.1) with arguments options, "date", and "date". - options = ToDateTimeOptions(options, 'date', 'date'), + options = ToDateTimeOptions(options, 'date', 'date'); // 6. Let dateTimeFormat be the result of creating a new object as if by the // expression new Intl.DateTimeFormat(locales, options) where // Intl.DateTimeFormat is the standard built-in constructor defined in 12.1.3. - dateTimeFormat = new DateTimeFormatConstructor(locales, options); + var dateTimeFormat = new DateTimeFormatConstructor(locales, options); // 7. Return the result of calling the FormatDateTime abstract operation (defined // in 12.3.2) with arguments dateTimeFormat and x. @@ -12432,32 +13166,28 @@ var ls = Intl.__localeSensitiveProtos = { */ /* 13.3.3 */ls.Date.toLocaleTimeString = function () { // Satisfy test 13.3.0_1 - if (Object.prototype.toString.call(this) !== '[object Date]') - throw new TypeError('`this` value must be a Date instance for Date.prototype.toLocaleTimeString()'); + if (Object.prototype.toString.call(this) !== '[object Date]') throw new TypeError('`this` value must be a Date instance for Date.prototype.toLocaleTimeString()'); - var // 1. Let x be this time value (as defined in ES5, 15.9.5). - x = +this; + var x = +this; // 2. If x is NaN, then return "Invalid Date". - if (isNaN(x)) - return 'Invalid Date'; + if (isNaN(x)) return 'Invalid Date'; - var // 3. If locales is not provided, then let locales be undefined. - locales = arguments[0], + var locales = arguments[0]; // 4. If options is not provided, then let options be undefined. - options = arguments[1], + var options = arguments[1]; // 5. Let options be the result of calling the ToDateTimeOptions abstract // operation (defined in 12.1.1) with arguments options, "time", and "time". - options = ToDateTimeOptions(options, 'time', 'time'), + options = ToDateTimeOptions(options, 'time', 'time'); // 6. Let dateTimeFormat be the result of creating a new object as if by the // expression new Intl.DateTimeFormat(locales, options) where // Intl.DateTimeFormat is the standard built-in constructor defined in 12.1.3. - dateTimeFormat = new DateTimeFormatConstructor(locales, options); + var dateTimeFormat = new DateTimeFormatConstructor(locales, options); // 7. Return the result of calling the FormatDateTime abstract operation (defined // in 12.3.2) with arguments dateTimeFormat and x. @@ -12467,14 +13197,13 @@ var ls = Intl.__localeSensitiveProtos = { defineProperty(Intl, '__applyLocaleSensitivePrototypes', { writable: true, configurable: true, - value: function () { + value: function value() { defineProperty(Number.prototype, 'toLocaleString', { writable: true, configurable: true, value: ls.Number.toLocaleString }); // Need this here for IE 8, to avoid the _DontEnum_ bug defineProperty(Date.prototype, 'toLocaleString', { writable: true, configurable: true, value: ls.Date.toLocaleString }); for (var k in ls.Date) { - if (hop.call(ls.Date, k)) - defineProperty(Date.prototype, k, { writable: true, configurable: true, value: ls.Date[k] }); + if (hop.call(ls.Date, k)) defineProperty(Date.prototype, k, { writable: true, configurable: true, value: ls.Date[k] }); } } }); @@ -12485,26 +13214,23 @@ defineProperty(Intl, '__applyLocaleSensitivePrototypes', { * as-needed basis */ defineProperty(Intl, '__addLocaleData', { - value: function (data) { - if (!IsStructurallyValidLanguageTag(data.locale)) - throw new Error("Object passed doesn't identify itself with a valid language tag"); + value: function value(data) { + if (!IsStructurallyValidLanguageTag(data.locale)) throw new Error("Object passed doesn't identify itself with a valid language tag"); addLocaleData(data, data.locale); } }); -function addLocaleData (data, tag) { +function addLocaleData(data, tag) { // Both NumberFormat and DateTimeFormat require number data, so throw if it isn't present - if (!data.number) - throw new Error("Object passed doesn't contain locale data for Intl.NumberFormat"); + if (!data.number) throw new Error("Object passed doesn't contain locale data for Intl.NumberFormat"); - var locale, - locales = [ tag ], - parts = tag.split('-'); + var locale = void 0, + locales = [tag], + parts = tag.split('-'); // Create fallbacks for locale data with scripts, e.g. Latn, Hans, Vaii, etc - if (parts.length > 2 && parts[1].length === 4) - arrPush.call(locales, parts[0] + '-' + parts[2]); + if (parts.length > 2 && parts[1].length === 4) arrPush.call(locales, parts[0] + '-' + parts[2]); while (locale = arrShift.call(locales)) { // Add to NumberFormat internal properties as per 11.2.3 @@ -12520,321 +13246,11 @@ function addLocaleData (data, tag) { } // If this is the first set of locale data added, make it the default - if (defaultLocale === undefined) - defaultLocale = tag; - - // 11.3 (the NumberFormat prototype object is an Intl.NumberFormat instance) - if (!numberFormatProtoInitialised) { - InitializeNumberFormat(Intl.NumberFormat.prototype); - numberFormatProtoInitialised = true; - } - - // 11.3 (the NumberFormat prototype object is an Intl.NumberFormat instance) - if (data.date && !dateTimeFormatProtoInitialised) { - InitializeDateTimeFormat(Intl.DateTimeFormat.prototype); - dateTimeFormatProtoInitialised = true; - } -} - -// Helper functions -// ================ - -/** - * A function to deal with the inaccuracy of calculating log10 in pre-ES6 - * JavaScript environments. Math.log(num) / Math.LN10 was responsible for - * causing issue #62. - */ -function log10Floor (n) { - // ES6 provides the more accurate Math.log10 - if (typeof Math.log10 === 'function') - return Math.floor(Math.log10(n)); - - var x = Math.round(Math.log(n) * Math.LOG10E); - return x - (Number('1e' + x) > n); -} - -/** - * A merge of the Intl.{Constructor}.supportedLocalesOf functions - * To make life easier, the function should be bound to the constructor's internal - * properties object. - */ -function supportedLocalesOf(locales) { - /*jshint validthis:true */ - - // Bound functions only have the `this` value altered if being used as a constructor, - // this lets us imitate a native function that has no constructor - if (!hop.call(this, '[[availableLocales]]')) - throw new TypeError('supportedLocalesOf() is not a constructor'); - - var - // Create an object whose props can be used to restore the values of RegExp props - regexpState = createRegExpRestore(), - - // 1. If options is not provided, then let options be undefined. - options = arguments[1], - - // 2. Let availableLocales be the value of the [[availableLocales]] internal - // property of the standard built-in object that is the initial value of - // Intl.NumberFormat. - - availableLocales = this['[[availableLocales]]'], - - // 3. Let requestedLocales be the result of calling the CanonicalizeLocaleList - // abstract operation (defined in 9.2.1) with argument locales. - requestedLocales = CanonicalizeLocaleList(locales); - - // Restore the RegExp properties - regexpState.exp.test(regexpState.input); - - // 4. Return the result of calling the SupportedLocales abstract operation - // (defined in 9.2.8) with arguments availableLocales, requestedLocales, - // and options. - return SupportedLocales(availableLocales, requestedLocales, options); -} - -/** - * Returns a string for a date component, resolved using multiple inheritance as specified - * as specified in the Unicode Technical Standard 35. - */ -function resolveDateString(data, ca, component, width, key) { - // From http://www.unicode.org/reports/tr35/tr35.html#Multiple_Inheritance: - // 'In clearly specified instances, resources may inherit from within the same locale. - // For example, ... the Buddhist calendar inherits from the Gregorian calendar.' - var obj = data[ca] && data[ca][component] - ? data[ca][component] - : data.gregory[component], - - // "sideways" inheritance resolves strings when a key doesn't exist - alts = { - narrow: ['short', 'long'], - short: ['long', 'narrow'], - long: ['short', 'narrow'] - }, - - // - resolved = hop.call(obj, width) - ? obj[width] - : hop.call(obj, alts[width][0]) - ? obj[alts[width][0]] - : obj[alts[width][1]]; - - // `key` wouldn't be specified for components 'dayPeriods' - return key != null ? resolved[key] : resolved; -} - -/** - * A map that doesn't contain Object in its prototype chain - */ -Record.prototype = objCreate(null); -function Record (obj) { - // Copy only own properties over unless this object is already a Record instance - for (var k in obj) { - if (obj instanceof Record || hop.call(obj, k)) - defineProperty(this, k, { value: obj[k], enumerable: true, writable: true, configurable: true }); - } + if (defaultLocale === undefined) setDefaultLocale(tag); } -/** - * An ordered list - */ -List.prototype = objCreate(null); -function List() { - defineProperty(this, 'length', { writable:true, value: 0 }); - - if (arguments.length) - arrPush.apply(this, arrSlice.call(arguments)); -} - -/** - * Constructs a regular expression to restore tainted RegExp properties - */ -function createRegExpRestore () { - var esc = /[.?*+^$[\]\\(){}|-]/g, - lm = RegExp.lastMatch || '', - ml = RegExp.multiline ? 'm' : '', - ret = { input: RegExp.input }, - reg = new List(), - has = false, - cap = {}; - - // Create a snapshot of all the 'captured' properties - for (var i = 1; i <= 9; i++) - has = (cap['$'+i] = RegExp['$'+i]) || has; - - // Now we've snapshotted some properties, escape the lastMatch string - lm = lm.replace(esc, '\\$&'); - - // If any of the captured strings were non-empty, iterate over them all - if (has) { - for (var i = 1; i <= 9; i++) { - var m = cap['$'+i]; - - // If it's empty, add an empty capturing group - if (!m) - lm = '()' + lm; - - // Else find the string in lm and escape & wrap it to capture it - else { - m = m.replace(esc, '\\$&'); - lm = lm.replace(m, '(' + m + ')'); - } - - // Push it to the reg and chop lm to make sure further groups come after - arrPush.call(reg, lm.slice(0, lm.indexOf('(') + 1)); - lm = lm.slice(lm.indexOf('(') + 1); - } - } - - // Create the regular expression that will reconstruct the RegExp properties - ret.exp = new RegExp(arrJoin.call(reg, '') + lm, ml); - - return ret; -} - -/** - * Convert only a-z to uppercase as per section 6.1 of the spec - */ -function toLatinUpperCase (str) { - var i = str.length; - - while (i--) { - var ch = str.charAt(i); - - if (ch >= "a" && ch <= "z") - str = str.slice(0, i) + ch.toUpperCase() + str.slice(i+1); - } - - return str; -} - -/** - * Mimics ES5's abstract ToObject() function - */ -function toObject (arg) { - if (arg == null) - throw new TypeError('Cannot convert null or undefined to object'); - - return Object(arg); -} - -/** - * Returns "internal" properties for an object - */ -function getInternalProperties (obj) { - if (hop.call(obj, '__getInternalProperties')) - return obj.__getInternalProperties(secret); - else - return objCreate(null); -} - -exports["default"] = Intl; - - -},{"./cldr":152,"./exp":154}],154:[function(require,module,exports){ -/* jshint esnext: true, laxbreak:true */ - -/** -* Defines regular expressions for various operations related to the BCP 47 syntax, -* as defined at http://tools.ietf.org/html/bcp47#section-2.1 -*/ - -"use strict"; - -var - // extlang = 3ALPHA ; selected ISO 639 codes - // *2("-" 3ALPHA) ; permanently reserved - extlang = '[a-z]{3}(?:-[a-z]{3}){0,2}', - - // language = 2*3ALPHA ; shortest ISO 639 code - // ["-" extlang] ; sometimes followed by - // ; extended language subtags - // / 4ALPHA ; or reserved for future use - // / 5*8ALPHA ; or registered language subtag - language = '(?:[a-z]{2,3}(?:-' + extlang + ')?|[a-z]{4}|[a-z]{5,8})', - - // script = 4ALPHA ; ISO 15924 code - script = '[a-z]{4}', - - // region = 2ALPHA ; ISO 3166-1 code - // / 3DIGIT ; UN M.49 code - region = '(?:[a-z]{2}|\\d{3})', - - // variant = 5*8alphanum ; registered variants - // / (DIGIT 3alphanum) - variant = '(?:[a-z0-9]{5,8}|\\d[a-z0-9]{3})', - - // ; Single alphanumerics - // ; "x" reserved for private use - // singleton = DIGIT ; 0 - 9 - // / %x41-57 ; A - W - // / %x59-5A ; Y - Z - // / %x61-77 ; a - w - // / %x79-7A ; y - z - singleton = '[0-9a-wy-z]', - - // extension = singleton 1*("-" (2*8alphanum)) - extension = singleton + '(?:-[a-z0-9]{2,8})+', - - // privateuse = "x" 1*("-" (1*8alphanum)) - privateuse = 'x(?:-[a-z0-9]{1,8})+', - - // irregular = "en-GB-oed" ; irregular tags do not match - // / "i-ami" ; the 'langtag' production and - // / "i-bnn" ; would not otherwise be - // / "i-default" ; considered 'well-formed' - // / "i-enochian" ; These tags are all valid, - // / "i-hak" ; but most are deprecated - // / "i-klingon" ; in favor of more modern - // / "i-lux" ; subtags or subtag - // / "i-mingo" ; combination - // / "i-navajo" - // / "i-pwn" - // / "i-tao" - // / "i-tay" - // / "i-tsu" - // / "sgn-BE-FR" - // / "sgn-BE-NL" - // / "sgn-CH-DE" - irregular = '(?:en-GB-oed' - + '|i-(?:ami|bnn|default|enochian|hak|klingon|lux|mingo|navajo|pwn|tao|tay|tsu)' - + '|sgn-(?:BE-FR|BE-NL|CH-DE))', - - // regular = "art-lojban" ; these tags match the 'langtag' - // / "cel-gaulish" ; production, but their subtags - // / "no-bok" ; are not extended language - // / "no-nyn" ; or variant subtags: their meaning - // / "zh-guoyu" ; is defined by their registration - // / "zh-hakka" ; and all of these are deprecated - // / "zh-min" ; in favor of a more modern - // / "zh-min-nan" ; subtag or sequence of subtags - // / "zh-xiang" - regular = '(?:art-lojban|cel-gaulish|no-bok|no-nyn' - + '|zh-(?:guoyu|hakka|min|min-nan|xiang))', - - // grandfathered = irregular ; non-redundant tags registered - // / regular ; during the RFC 3066 era - grandfathered = '(?:' + irregular + '|' + regular + ')', - - // langtag = language - // ["-" script] - // ["-" region] - // *("-" variant) - // *("-" extension) - // ["-" privateuse] - langtag = language + '(?:-' + script + ')?(?:-' + region + ')?(?:-' - + variant + ')*(?:-' + extension + ')*(?:-' + privateuse + ')?'; - -var expBCP47Syntax = RegExp('^(?:'+langtag+'|'+privateuse+'|'+grandfathered+')$', 'i'); - -var expVariantDupes = RegExp('^(?!x).*?-('+variant+')-(?:\\w{4,8}-(?!x-))*\\1\\b', 'i'); - -var expSingletonDupes = RegExp('^(?!x).*?-('+singleton+')-(?:\\w+-(?!x-))*\\1\\b', 'i'); - -var expExtSequences = RegExp('-'+extension, 'ig'); -exports.expBCP47Syntax = expBCP47Syntax, exports.expVariantDupes = expVariantDupes, exports.expSingletonDupes = expSingletonDupes, exports.expExtSequences = expExtSequences; - - -},{}],155:[function(require,module,exports){ +module.exports = Intl; +},{}],152:[function(_dereq_,module,exports){ (function (global){ /** * @license @@ -25190,14 +25606,18 @@ exports.expBCP47Syntax = expBCP47Syntax, exports.expVariantDupes = expVariantDup }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{}],156:[function(require,module,exports){ +},{}],153:[function(_dereq_,module,exports){ 'use strict'; -exports.__esModule = true; +Object.defineProperty(exports, "__esModule", { + value: true +}); -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } -var EntitySchema = (function () { +var EntitySchema = function () { function EntitySchema(key) { var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; @@ -25208,101 +25628,131 @@ var EntitySchema = (function () { } this._key = key; + this._assignEntity = options.assignEntity; var idAttribute = options.idAttribute || 'id'; this._getId = typeof idAttribute === 'function' ? idAttribute : function (x) { return x[idAttribute]; }; this._idAttribute = idAttribute; + this._meta = options.meta; } - EntitySchema.prototype.getKey = function getKey() { - return this._key; - }; - - EntitySchema.prototype.getId = function getId(entity) { - return this._getId(entity); - }; - - EntitySchema.prototype.getIdAttribute = function getIdAttribute() { - return this._idAttribute; - }; - - EntitySchema.prototype.define = function define(nestedSchema) { - for (var key in nestedSchema) { - if (nestedSchema.hasOwnProperty(key)) { - this[key] = nestedSchema[key]; + _createClass(EntitySchema, [{ + key: 'getAssignEntity', + value: function getAssignEntity() { + return this._assignEntity; + } + }, { + key: 'getKey', + value: function getKey() { + return this._key; + } + }, { + key: 'getId', + value: function getId(entity) { + return this._getId(entity); + } + }, { + key: 'getIdAttribute', + value: function getIdAttribute() { + return this._idAttribute; + } + }, { + key: 'getMeta', + value: function getMeta(prop) { + if (!prop || typeof prop !== 'string') { + throw new Error('A string non-empty property name is required'); } + return this._meta && this._meta[prop]; } - }; + }, { + key: 'define', + value: function define(nestedSchema) { + for (var key in nestedSchema) { + if (nestedSchema.hasOwnProperty(key)) { + this[key] = nestedSchema[key]; + } + } + } + }]); return EntitySchema; -})(); +}(); -exports['default'] = EntitySchema; -module.exports = exports['default']; -},{}],157:[function(require,module,exports){ +exports.default = EntitySchema; +},{}],154:[function(_dereq_,module,exports){ 'use strict'; -exports.__esModule = true; - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } +Object.defineProperty(exports, "__esModule", { + value: true +}); -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); -var _lodashIsObject = require('lodash/isObject'); +var _isObject = _dereq_('lodash/isObject'); -var _lodashIsObject2 = _interopRequireDefault(_lodashIsObject); +var _isObject2 = _interopRequireDefault(_isObject); -var _UnionSchema = require('./UnionSchema'); +var _UnionSchema = _dereq_('./UnionSchema'); var _UnionSchema2 = _interopRequireDefault(_UnionSchema); -var ArraySchema = (function () { +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var ArraySchema = function () { function ArraySchema(itemSchema) { var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; _classCallCheck(this, ArraySchema); - if (!_lodashIsObject2['default'](itemSchema)) { + if (!(0, _isObject2.default)(itemSchema)) { throw new Error('ArraySchema requires item schema to be an object.'); } if (options.schemaAttribute) { var schemaAttribute = options.schemaAttribute; - this._itemSchema = new _UnionSchema2['default'](itemSchema, { schemaAttribute: schemaAttribute }); + this._itemSchema = new _UnionSchema2.default(itemSchema, { schemaAttribute: schemaAttribute }); } else { this._itemSchema = itemSchema; } } - ArraySchema.prototype.getItemSchema = function getItemSchema() { - return this._itemSchema; - }; + _createClass(ArraySchema, [{ + key: 'getItemSchema', + value: function getItemSchema() { + return this._itemSchema; + } + }]); return ArraySchema; -})(); +}(); -exports['default'] = ArraySchema; -module.exports = exports['default']; -},{"./UnionSchema":158,"lodash/isObject":242}],158:[function(require,module,exports){ +exports.default = ArraySchema; +},{"./UnionSchema":155,"lodash/isObject":230}],155:[function(_dereq_,module,exports){ 'use strict'; -exports.__esModule = true; +Object.defineProperty(exports, "__esModule", { + value: true +}); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } +var _isObject = _dereq_('lodash/isObject'); + +var _isObject2 = _interopRequireDefault(_isObject); -var _lodashIsObject = require('lodash/isObject'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -var _lodashIsObject2 = _interopRequireDefault(_lodashIsObject); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } -var UnionSchema = (function () { +var UnionSchema = function () { function UnionSchema(itemSchema, options) { _classCallCheck(this, UnionSchema); - if (!_lodashIsObject2['default'](itemSchema)) { + if (!(0, _isObject2.default)(itemSchema)) { throw new Error('UnionSchema requires item schema to be an object.'); } @@ -25318,53 +25768,55 @@ var UnionSchema = (function () { }; } - UnionSchema.prototype.getItemSchema = function getItemSchema() { - return this._itemSchema; - }; - - UnionSchema.prototype.getSchemaKey = function getSchemaKey(item) { - return this._getSchema(item); - }; + _createClass(UnionSchema, [{ + key: 'getItemSchema', + value: function getItemSchema() { + return this._itemSchema; + } + }, { + key: 'getSchemaKey', + value: function getSchemaKey(item) { + return this._getSchema(item); + } + }]); return UnionSchema; -})(); +}(); -exports['default'] = UnionSchema; -module.exports = exports['default']; -},{"lodash/isObject":242}],159:[function(require,module,exports){ +exports.default = UnionSchema; +},{"lodash/isObject":230}],156:[function(_dereq_,module,exports){ 'use strict'; -exports.__esModule = true; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Schema = undefined; exports.arrayOf = arrayOf; exports.valuesOf = valuesOf; exports.unionOf = unionOf; exports.normalize = normalize; -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } - -var _EntitySchema = require('./EntitySchema'); +var _EntitySchema = _dereq_('./EntitySchema'); var _EntitySchema2 = _interopRequireDefault(_EntitySchema); -var _IterableSchema = require('./IterableSchema'); +var _IterableSchema = _dereq_('./IterableSchema'); var _IterableSchema2 = _interopRequireDefault(_IterableSchema); -var _UnionSchema = require('./UnionSchema'); +var _UnionSchema = _dereq_('./UnionSchema'); var _UnionSchema2 = _interopRequireDefault(_UnionSchema); -var _lodashIsObject = require('lodash/isObject'); - -var _lodashIsObject2 = _interopRequireDefault(_lodashIsObject); +var _isEqual = _dereq_('lodash/isEqual'); -var _lodashIsEqual = require('lodash/isEqual'); +var _isEqual2 = _interopRequireDefault(_isEqual); -var _lodashIsEqual2 = _interopRequireDefault(_lodashIsEqual); +var _isObject = _dereq_('lodash/isObject'); -var _lodashMapValues = require('lodash/mapValues'); +var _isObject2 = _interopRequireDefault(_isObject); -var _lodashMapValues2 = _interopRequireDefault(_lodashMapValues); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function defaultAssignEntity(normalized, key, entity) { normalized[key] = entity; @@ -25374,11 +25826,16 @@ function visitObject(obj, schema, bag, options) { var _options$assignEntity = options.assignEntity; var assignEntity = _options$assignEntity === undefined ? defaultAssignEntity : _options$assignEntity; + var normalized = {}; for (var key in obj) { if (obj.hasOwnProperty(key)) { + var schemaAssignEntity = schema && schema.getAssignEntity && schema.getAssignEntity(); var entity = visit(obj[key], schema[key], bag, options); - assignEntity.call(null, normalized, key, entity); + assignEntity.call(null, normalized, key, entity, obj, schema); + if (schemaAssignEntity) { + schemaAssignEntity.call(null, normalized, key, entity, obj, schema); + } } } return normalized; @@ -25405,7 +25862,10 @@ function visitIterable(obj, iterableSchema, bag, options) { if (Array.isArray(obj)) { return obj.map(curriedItemMapper); } else { - return _lodashMapValues2['default'](obj, curriedItemMapper); + return Object.keys(obj).reduce(function (objMap, key) { + objMap[key] = curriedItemMapper(obj[key]); + return objMap; + }, {}); } } @@ -25420,7 +25880,7 @@ function defaultMergeIntoEntity(entityA, entityB, entityKey) { continue; } - if (!entityA.hasOwnProperty(key) || _lodashIsEqual2['default'](entityA[key], entityB[key])) { + if (!entityA.hasOwnProperty(key) || (0, _isEqual2.default)(entityA[key], entityB[key])) { entityA[key] = entityB[key]; continue; } @@ -25430,8 +25890,9 @@ function defaultMergeIntoEntity(entityA, entityB, entityKey) { } function visitEntity(entity, entitySchema, bag, options) { - var _options$mergeIntoEntity = options.mergeIntoEntity; - var mergeIntoEntity = _options$mergeIntoEntity === undefined ? defaultMergeIntoEntity : _options$mergeIntoEntity; + var _options$mergeIntoEnt = options.mergeIntoEntity; + var mergeIntoEntity = _options$mergeIntoEnt === undefined ? defaultMergeIntoEntity : _options$mergeIntoEnt; + var entityKey = entitySchema.getKey(); var id = entitySchema.getId(entity); @@ -25452,15 +25913,15 @@ function visitEntity(entity, entitySchema, bag, options) { } function visit(obj, schema, bag, options) { - if (!_lodashIsObject2['default'](obj) || !_lodashIsObject2['default'](schema)) { + if (!(0, _isObject2.default)(obj) || !(0, _isObject2.default)(schema)) { return obj; } - if (schema instanceof _EntitySchema2['default']) { + if (schema instanceof _EntitySchema2.default) { return visitEntity(obj, schema, bag, options); - } else if (schema instanceof _IterableSchema2['default']) { + } else if (schema instanceof _IterableSchema2.default) { return visitIterable(obj, schema, bag, options); - } else if (schema instanceof _UnionSchema2['default']) { + } else if (schema instanceof _UnionSchema2.default) { return visitUnion(obj, schema, bag, options); } else { return visitObject(obj, schema, bag, options); @@ -25468,27 +25929,26 @@ function visit(obj, schema, bag, options) { } function arrayOf(schema, options) { - return new _IterableSchema2['default'](schema, options); + return new _IterableSchema2.default(schema, options); } function valuesOf(schema, options) { - return new _IterableSchema2['default'](schema, options); + return new _IterableSchema2.default(schema, options); } function unionOf(schema, options) { - return new _UnionSchema2['default'](schema, options); + return new _UnionSchema2.default(schema, options); } -exports.Schema = _EntitySchema2['default']; - +exports.Schema = _EntitySchema2.default; function normalize(obj, schema) { var options = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2]; - if (!_lodashIsObject2['default'](obj) && !Array.isArray(obj)) { + if (!(0, _isObject2.default)(obj)) { throw new Error('Normalize accepts an object or an array as its input.'); } - if (!_lodashIsObject2['default'](schema) || Array.isArray(schema)) { + if (!(0, _isObject2.default)(schema) || Array.isArray(schema)) { throw new Error('Normalize accepts an object for schema.'); } @@ -25500,101 +25960,193 @@ function normalize(obj, schema) { result: result }; } -},{"./EntitySchema":156,"./IterableSchema":157,"./UnionSchema":158,"lodash/isEqual":238,"lodash/isObject":242,"lodash/mapValues":249}],160:[function(require,module,exports){ -var nativeCreate = require('./_nativeCreate'); +},{"./EntitySchema":153,"./IterableSchema":154,"./UnionSchema":155,"lodash/isEqual":227,"lodash/isObject":230}],157:[function(_dereq_,module,exports){ +var getNative = _dereq_('./_getNative'), + root = _dereq_('./_root'); -/** Used for built-in method references. */ -var objectProto = Object.prototype; +/* Built-in method references that are verified to be native. */ +var DataView = getNative(root, 'DataView'); + +module.exports = DataView; + +},{"./_getNative":185,"./_root":212}],158:[function(_dereq_,module,exports){ +var hashClear = _dereq_('./_hashClear'), + hashDelete = _dereq_('./_hashDelete'), + hashGet = _dereq_('./_hashGet'), + hashHas = _dereq_('./_hashHas'), + hashSet = _dereq_('./_hashSet'); /** - * Creates an hash object. + * Creates a hash object. * * @private - * @returns {Object} Returns the new hash object. + * @constructor + * @param {Array} [entries] The key-value pairs to cache. */ -function Hash() {} +function Hash(entries) { + var index = -1, + length = entries ? entries.length : 0; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} -// Avoid inheriting from `Object.prototype` when possible. -Hash.prototype = nativeCreate ? nativeCreate(null) : objectProto; +// Add methods to `Hash`. +Hash.prototype.clear = hashClear; +Hash.prototype['delete'] = hashDelete; +Hash.prototype.get = hashGet; +Hash.prototype.has = hashHas; +Hash.prototype.set = hashSet; module.exports = Hash; -},{"./_nativeCreate":220}],161:[function(require,module,exports){ -var getNative = require('./_getNative'), - root = require('./_root'); +},{"./_hashClear":189,"./_hashDelete":190,"./_hashGet":191,"./_hashHas":192,"./_hashSet":193}],159:[function(_dereq_,module,exports){ +var listCacheClear = _dereq_('./_listCacheClear'), + listCacheDelete = _dereq_('./_listCacheDelete'), + listCacheGet = _dereq_('./_listCacheGet'), + listCacheHas = _dereq_('./_listCacheHas'), + listCacheSet = _dereq_('./_listCacheSet'); + +/** + * Creates an list cache object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function ListCache(entries) { + var index = -1, + length = entries ? entries.length : 0; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} + +// Add methods to `ListCache`. +ListCache.prototype.clear = listCacheClear; +ListCache.prototype['delete'] = listCacheDelete; +ListCache.prototype.get = listCacheGet; +ListCache.prototype.has = listCacheHas; +ListCache.prototype.set = listCacheSet; + +module.exports = ListCache; + +},{"./_listCacheClear":200,"./_listCacheDelete":201,"./_listCacheGet":202,"./_listCacheHas":203,"./_listCacheSet":204}],160:[function(_dereq_,module,exports){ +var getNative = _dereq_('./_getNative'), + root = _dereq_('./_root'); /* Built-in method references that are verified to be native. */ var Map = getNative(root, 'Map'); module.exports = Map; -},{"./_getNative":200,"./_root":222}],162:[function(require,module,exports){ -var mapClear = require('./_mapClear'), - mapDelete = require('./_mapDelete'), - mapGet = require('./_mapGet'), - mapHas = require('./_mapHas'), - mapSet = require('./_mapSet'); +},{"./_getNative":185,"./_root":212}],161:[function(_dereq_,module,exports){ +var mapCacheClear = _dereq_('./_mapCacheClear'), + mapCacheDelete = _dereq_('./_mapCacheDelete'), + mapCacheGet = _dereq_('./_mapCacheGet'), + mapCacheHas = _dereq_('./_mapCacheHas'), + mapCacheSet = _dereq_('./_mapCacheSet'); /** * Creates a map cache object to store key-value pairs. * * @private - * @param {Array} [values] The values to cache. + * @constructor + * @param {Array} [entries] The key-value pairs to cache. */ -function MapCache(values) { +function MapCache(entries) { var index = -1, - length = values ? values.length : 0; + length = entries ? entries.length : 0; this.clear(); while (++index < length) { - var entry = values[index]; + var entry = entries[index]; this.set(entry[0], entry[1]); } } -// Add functions to the `MapCache`. -MapCache.prototype.clear = mapClear; -MapCache.prototype['delete'] = mapDelete; -MapCache.prototype.get = mapGet; -MapCache.prototype.has = mapHas; -MapCache.prototype.set = mapSet; +// Add methods to `MapCache`. +MapCache.prototype.clear = mapCacheClear; +MapCache.prototype['delete'] = mapCacheDelete; +MapCache.prototype.get = mapCacheGet; +MapCache.prototype.has = mapCacheHas; +MapCache.prototype.set = mapCacheSet; module.exports = MapCache; -},{"./_mapClear":214,"./_mapDelete":215,"./_mapGet":216,"./_mapHas":217,"./_mapSet":218}],163:[function(require,module,exports){ -var getNative = require('./_getNative'), - root = require('./_root'); +},{"./_mapCacheClear":205,"./_mapCacheDelete":206,"./_mapCacheGet":207,"./_mapCacheHas":208,"./_mapCacheSet":209}],162:[function(_dereq_,module,exports){ +var getNative = _dereq_('./_getNative'), + root = _dereq_('./_root'); + +/* Built-in method references that are verified to be native. */ +var Promise = getNative(root, 'Promise'); + +module.exports = Promise; + +},{"./_getNative":185,"./_root":212}],163:[function(_dereq_,module,exports){ +var getNative = _dereq_('./_getNative'), + root = _dereq_('./_root'); /* Built-in method references that are verified to be native. */ var Set = getNative(root, 'Set'); module.exports = Set; -},{"./_getNative":200,"./_root":222}],164:[function(require,module,exports){ -var stackClear = require('./_stackClear'), - stackDelete = require('./_stackDelete'), - stackGet = require('./_stackGet'), - stackHas = require('./_stackHas'), - stackSet = require('./_stackSet'); +},{"./_getNative":185,"./_root":212}],164:[function(_dereq_,module,exports){ +var MapCache = _dereq_('./_MapCache'), + setCacheAdd = _dereq_('./_setCacheAdd'), + setCacheHas = _dereq_('./_setCacheHas'); /** - * Creates a stack cache object to store key-value pairs. + * + * Creates an array cache object to store unique values. * * @private + * @constructor * @param {Array} [values] The values to cache. */ -function Stack(values) { +function SetCache(values) { var index = -1, length = values ? values.length : 0; - this.clear(); + this.__data__ = new MapCache; while (++index < length) { - var entry = values[index]; - this.set(entry[0], entry[1]); + this.add(values[index]); } } -// Add functions to the `Stack` cache. +// Add methods to `SetCache`. +SetCache.prototype.add = SetCache.prototype.push = setCacheAdd; +SetCache.prototype.has = setCacheHas; + +module.exports = SetCache; + +},{"./_MapCache":161,"./_setCacheAdd":213,"./_setCacheHas":214}],165:[function(_dereq_,module,exports){ +var ListCache = _dereq_('./_ListCache'), + stackClear = _dereq_('./_stackClear'), + stackDelete = _dereq_('./_stackDelete'), + stackGet = _dereq_('./_stackGet'), + stackHas = _dereq_('./_stackHas'), + stackSet = _dereq_('./_stackSet'); + +/** + * Creates a stack cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function Stack(entries) { + this.__data__ = new ListCache(entries); +} + +// Add methods to `Stack`. Stack.prototype.clear = stackClear; Stack.prototype['delete'] = stackDelete; Stack.prototype.get = stackGet; @@ -25603,46 +26155,45 @@ Stack.prototype.set = stackSet; module.exports = Stack; -},{"./_stackClear":224,"./_stackDelete":225,"./_stackGet":226,"./_stackHas":227,"./_stackSet":228}],165:[function(require,module,exports){ -var root = require('./_root'); +},{"./_ListCache":159,"./_stackClear":216,"./_stackDelete":217,"./_stackGet":218,"./_stackHas":219,"./_stackSet":220}],166:[function(_dereq_,module,exports){ +var root = _dereq_('./_root'); /** Built-in value references. */ var Symbol = root.Symbol; module.exports = Symbol; -},{"./_root":222}],166:[function(require,module,exports){ -var root = require('./_root'); +},{"./_root":212}],167:[function(_dereq_,module,exports){ +var root = _dereq_('./_root'); /** Built-in value references. */ var Uint8Array = root.Uint8Array; module.exports = Uint8Array; -},{"./_root":222}],167:[function(require,module,exports){ -var getNative = require('./_getNative'), - root = require('./_root'); +},{"./_root":212}],168:[function(_dereq_,module,exports){ +var getNative = _dereq_('./_getNative'), + root = _dereq_('./_root'); /* Built-in method references that are verified to be native. */ var WeakMap = getNative(root, 'WeakMap'); module.exports = WeakMap; -},{"./_getNative":200,"./_root":222}],168:[function(require,module,exports){ -arguments[4][19][0].apply(exports,arguments) -},{"dup":19}],169:[function(require,module,exports){ +},{"./_getNative":185,"./_root":212}],169:[function(_dereq_,module,exports){ /** * A specialized version of `_.some` for arrays without support for iteratee * shorthands. * * @private - * @param {Array} array The array to iterate over. + * @param {Array} [array] The array to iterate over. * @param {Function} predicate The function invoked per iteration. - * @returns {boolean} Returns `true` if any element passes the predicate check, else `false`. + * @returns {boolean} Returns `true` if any element passes the predicate check, + * else `false`. */ function arraySome(array, predicate) { var index = -1, - length = array.length; + length = array ? array.length : 0; while (++index < length) { if (predicate(array[index], index, array)) { @@ -25654,80 +26205,11 @@ function arraySome(array, predicate) { module.exports = arraySome; -},{}],170:[function(require,module,exports){ -var assocIndexOf = require('./_assocIndexOf'); - -/** Used for built-in method references. */ -var arrayProto = Array.prototype; - -/** Built-in value references. */ -var splice = arrayProto.splice; - -/** - * Removes `key` and its value from the associative array. - * - * @private - * @param {Array} array The array to query. - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ -function assocDelete(array, key) { - var index = assocIndexOf(array, key); - if (index < 0) { - return false; - } - var lastIndex = array.length - 1; - if (index == lastIndex) { - array.pop(); - } else { - splice.call(array, index, 1); - } - return true; -} - -module.exports = assocDelete; - -},{"./_assocIndexOf":173}],171:[function(require,module,exports){ -var assocIndexOf = require('./_assocIndexOf'); +},{}],170:[function(_dereq_,module,exports){ +var eq = _dereq_('./eq'); /** - * Gets the associative array value for `key`. - * - * @private - * @param {Array} array The array to query. - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ -function assocGet(array, key) { - var index = assocIndexOf(array, key); - return index < 0 ? undefined : array[index][1]; -} - -module.exports = assocGet; - -},{"./_assocIndexOf":173}],172:[function(require,module,exports){ -var assocIndexOf = require('./_assocIndexOf'); - -/** - * Checks if an associative array value for `key` exists. - * - * @private - * @param {Array} array The array to query. - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ -function assocHas(array, key) { - return assocIndexOf(array, key) > -1; -} - -module.exports = assocHas; - -},{"./_assocIndexOf":173}],173:[function(require,module,exports){ -var eq = require('./eq'); - -/** - * Gets the index at which the first occurrence of `key` is found in `array` - * of key-value pairs. + * Gets the index at which the `key` is found in `array` of key-value pairs. * * @private * @param {Array} array The array to search. @@ -25746,112 +26228,12 @@ function assocIndexOf(array, key) { module.exports = assocIndexOf; -},{"./eq":230}],174:[function(require,module,exports){ -var assocIndexOf = require('./_assocIndexOf'); - -/** - * Sets the associative array `key` to `value`. - * - * @private - * @param {Array} array The array to modify. - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - */ -function assocSet(array, key, value) { - var index = assocIndexOf(array, key); - if (index < 0) { - array.push([key, value]); - } else { - array[index][1] = value; - } -} - -module.exports = assocSet; - -},{"./_assocIndexOf":173}],175:[function(require,module,exports){ -var createBaseFor = require('./_createBaseFor'); - -/** - * The base implementation of `baseForIn` and `baseForOwn` which iterates - * over `object` properties returned by `keysFunc` invoking `iteratee` for - * each property. Iteratee functions may exit iteration early by explicitly - * returning `false`. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {Function} keysFunc The function to get the keys of `object`. - * @returns {Object} Returns `object`. - */ -var baseFor = createBaseFor(); - -module.exports = baseFor; - -},{"./_createBaseFor":194}],176:[function(require,module,exports){ -var baseFor = require('./_baseFor'), - keys = require('./keys'); - -/** - * The base implementation of `_.forOwn` without support for iteratee shorthands. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Object} Returns `object`. - */ -function baseForOwn(object, iteratee) { - return object && baseFor(object, iteratee, keys); -} - -module.exports = baseForOwn; - -},{"./_baseFor":175,"./keys":247}],177:[function(require,module,exports){ -var baseToPath = require('./_baseToPath'), - isKey = require('./_isKey'); - -/** - * The base implementation of `_.get` without support for default values. - * - * @private - * @param {Object} object The object to query. - * @param {Array|string} path The path of the property to get. - * @returns {*} Returns the resolved value. - */ -function baseGet(object, path) { - path = isKey(path, object) ? [path + ''] : baseToPath(path); - - var index = 0, - length = path.length; - - while (object != null && index < length) { - object = object[path[index++]]; - } - return (index && index == length) ? object : undefined; -} - -module.exports = baseGet; - -},{"./_baseToPath":192,"./_isKey":210}],178:[function(require,module,exports){ -arguments[4][20][0].apply(exports,arguments) -},{"dup":20}],179:[function(require,module,exports){ -/** - * The base implementation of `_.hasIn` without support for deep paths. - * - * @private - * @param {Object} object The object to query. - * @param {Array|string} key The key to check. - * @returns {boolean} Returns `true` if `key` exists, else `false`. - */ -function baseHasIn(object, key) { - return key in Object(object); -} - -module.exports = baseHasIn; - -},{}],180:[function(require,module,exports){ -var baseIsEqualDeep = require('./_baseIsEqualDeep'), - isObject = require('./isObject'), - isObjectLike = require('./isObjectLike'); +},{"./eq":222}],171:[function(_dereq_,module,exports){ +arguments[4][24][0].apply(exports,arguments) +},{"./_getPrototype":186,"dup":24}],172:[function(_dereq_,module,exports){ +var baseIsEqualDeep = _dereq_('./_baseIsEqualDeep'), + isObject = _dereq_('./isObject'), + isObjectLike = _dereq_('./isObjectLike'); /** * The base implementation of `_.isEqual` which supports partial comparisons @@ -25880,15 +26262,15 @@ function baseIsEqual(value, other, customizer, bitmask, stack) { module.exports = baseIsEqual; -},{"./_baseIsEqualDeep":181,"./isObject":242,"./isObjectLike":243}],181:[function(require,module,exports){ -var Stack = require('./_Stack'), - equalArrays = require('./_equalArrays'), - equalByTag = require('./_equalByTag'), - equalObjects = require('./_equalObjects'), - getTag = require('./_getTag'), - isArray = require('./isArray'), - isHostObject = require('./_isHostObject'), - isTypedArray = require('./isTypedArray'); +},{"./_baseIsEqualDeep":173,"./isObject":230,"./isObjectLike":231}],173:[function(_dereq_,module,exports){ +var Stack = _dereq_('./_Stack'), + equalArrays = _dereq_('./_equalArrays'), + equalByTag = _dereq_('./_equalByTag'), + equalObjects = _dereq_('./_equalObjects'), + getTag = _dereq_('./_getTag'), + isArray = _dereq_('./isArray'), + isHostObject = _dereq_('./_isHostObject'), + isTypedArray = _dereq_('./isTypedArray'); /** Used to compose bitmasks for comparison styles. */ var PARTIAL_COMPARE_FLAG = 2; @@ -25914,7 +26296,8 @@ var hasOwnProperty = objectProto.hasOwnProperty; * @param {Object} other The other object to compare. * @param {Function} equalFunc The function to determine equivalents of values. * @param {Function} [customizer] The function to customize comparisons. - * @param {number} [bitmask] The bitmask of comparison flags. See `baseIsEqual` for more details. + * @param {number} [bitmask] The bitmask of comparison flags. See `baseIsEqual` + * for more details. * @param {Object} [stack] Tracks traversed `object` and `other` objects. * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. */ @@ -25926,296 +26309,99 @@ function baseIsEqualDeep(object, other, equalFunc, customizer, bitmask, stack) { if (!objIsArr) { objTag = getTag(object); - if (objTag == argsTag) { - objTag = objectTag; - } else if (objTag != objectTag) { - objIsArr = isTypedArray(object); - } + objTag = objTag == argsTag ? objectTag : objTag; } if (!othIsArr) { othTag = getTag(other); - if (othTag == argsTag) { - othTag = objectTag; - } else if (othTag != objectTag) { - othIsArr = isTypedArray(other); - } + othTag = othTag == argsTag ? objectTag : othTag; } var objIsObj = objTag == objectTag && !isHostObject(object), othIsObj = othTag == objectTag && !isHostObject(other), isSameTag = objTag == othTag; - if (isSameTag && !(objIsArr || objIsObj)) { - return equalByTag(object, other, objTag, equalFunc, customizer, bitmask); + if (isSameTag && !objIsObj) { + stack || (stack = new Stack); + return (objIsArr || isTypedArray(object)) + ? equalArrays(object, other, equalFunc, customizer, bitmask, stack) + : equalByTag(object, other, objTag, equalFunc, customizer, bitmask, stack); } - var isPartial = bitmask & PARTIAL_COMPARE_FLAG; - if (!isPartial) { + if (!(bitmask & PARTIAL_COMPARE_FLAG)) { var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'), othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__'); if (objIsWrapped || othIsWrapped) { - return equalFunc(objIsWrapped ? object.value() : object, othIsWrapped ? other.value() : other, customizer, bitmask, stack); + var objUnwrapped = objIsWrapped ? object.value() : object, + othUnwrapped = othIsWrapped ? other.value() : other; + + stack || (stack = new Stack); + return equalFunc(objUnwrapped, othUnwrapped, customizer, bitmask, stack); } } if (!isSameTag) { return false; } stack || (stack = new Stack); - return (objIsArr ? equalArrays : equalObjects)(object, other, equalFunc, customizer, bitmask, stack); + return equalObjects(object, other, equalFunc, customizer, bitmask, stack); } module.exports = baseIsEqualDeep; -},{"./_Stack":164,"./_equalArrays":195,"./_equalByTag":196,"./_equalObjects":197,"./_getTag":201,"./_isHostObject":208,"./isArray":235,"./isTypedArray":246}],182:[function(require,module,exports){ -var Stack = require('./_Stack'), - baseIsEqual = require('./_baseIsEqual'); - -/** Used to compose bitmasks for comparison styles. */ -var UNORDERED_COMPARE_FLAG = 1, - PARTIAL_COMPARE_FLAG = 2; +},{"./_Stack":165,"./_equalArrays":180,"./_equalByTag":181,"./_equalObjects":182,"./_getTag":187,"./_isHostObject":195,"./isArray":224,"./isTypedArray":233}],174:[function(_dereq_,module,exports){ +var isFunction = _dereq_('./isFunction'), + isHostObject = _dereq_('./_isHostObject'), + isMasked = _dereq_('./_isMasked'), + isObject = _dereq_('./isObject'), + toSource = _dereq_('./_toSource'); /** - * The base implementation of `_.isMatch` without support for iteratee shorthands. - * - * @private - * @param {Object} object The object to inspect. - * @param {Object} source The object of property values to match. - * @param {Array} matchData The property names, values, and compare flags to match. - * @param {Function} [customizer] The function to customize comparisons. - * @returns {boolean} Returns `true` if `object` is a match, else `false`. + * Used to match `RegExp` + * [syntax characters](http://ecma-international.org/ecma-262/6.0/#sec-patterns). */ -function baseIsMatch(object, source, matchData, customizer) { - var index = matchData.length, - length = index, - noCustomizer = !customizer; - - if (object == null) { - return !length; - } - object = Object(object); - while (index--) { - var data = matchData[index]; - if ((noCustomizer && data[2]) - ? data[1] !== object[data[0]] - : !(data[0] in object) - ) { - return false; - } - } - while (++index < length) { - data = matchData[index]; - var key = data[0], - objValue = object[key], - srcValue = data[1]; - - if (noCustomizer && data[2]) { - if (objValue === undefined && !(key in object)) { - return false; - } - } else { - var stack = new Stack, - result = customizer ? customizer(objValue, srcValue, key, object, source, stack) : undefined; - - if (!(result === undefined - ? baseIsEqual(srcValue, objValue, customizer, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG, stack) - : result - )) { - return false; - } - } - } - return true; -} - -module.exports = baseIsMatch; - -},{"./_Stack":164,"./_baseIsEqual":180}],183:[function(require,module,exports){ -var baseMatches = require('./_baseMatches'), - baseMatchesProperty = require('./_baseMatchesProperty'), - identity = require('./identity'), - isArray = require('./isArray'), - property = require('./property'); - -/** - * The base implementation of `_.iteratee`. - * - * @private - * @param {*} [value=_.identity] The value to convert to an iteratee. - * @returns {Function} Returns the iteratee. - */ -function baseIteratee(value) { - var type = typeof value; - if (type == 'function') { - return value; - } - if (value == null) { - return identity; - } - if (type == 'object') { - return isArray(value) - ? baseMatchesProperty(value[0], value[1]) - : baseMatches(value); - } - return property(value); -} - -module.exports = baseIteratee; - -},{"./_baseMatches":185,"./_baseMatchesProperty":186,"./identity":233,"./isArray":235,"./property":250}],184:[function(require,module,exports){ -arguments[4][22][0].apply(exports,arguments) -},{"dup":22}],185:[function(require,module,exports){ -var baseIsMatch = require('./_baseIsMatch'), - getMatchData = require('./_getMatchData'); - -/** - * The base implementation of `_.matches` which doesn't clone `source`. - * - * @private - * @param {Object} source The object of property values to match. - * @returns {Function} Returns the new function. - */ -function baseMatches(source) { - var matchData = getMatchData(source); - if (matchData.length == 1 && matchData[0][2]) { - var key = matchData[0][0], - value = matchData[0][1]; - - return function(object) { - if (object == null) { - return false; - } - return object[key] === value && - (value !== undefined || (key in Object(object))); - }; - } - return function(object) { - return object === source || baseIsMatch(object, source, matchData); - }; -} - -module.exports = baseMatches; - -},{"./_baseIsMatch":182,"./_getMatchData":199}],186:[function(require,module,exports){ -var baseIsEqual = require('./_baseIsEqual'), - get = require('./get'), - hasIn = require('./hasIn'); - -/** Used to compose bitmasks for comparison styles. */ -var UNORDERED_COMPARE_FLAG = 1, - PARTIAL_COMPARE_FLAG = 2; +var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; -/** - * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`. - * - * @private - * @param {string} path The path of the property to get. - * @param {*} srcValue The value to match. - * @returns {Function} Returns the new function. - */ -function baseMatchesProperty(path, srcValue) { - return function(object) { - var objValue = get(object, path); - return (objValue === undefined && objValue === srcValue) - ? hasIn(object, path) - : baseIsEqual(srcValue, objValue, undefined, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG); - }; -} +/** Used to detect host constructors (Safari). */ +var reIsHostCtor = /^\[object .+?Constructor\]$/; -module.exports = baseMatchesProperty; +/** Used for built-in method references. */ +var objectProto = Object.prototype; -},{"./_baseIsEqual":180,"./get":231,"./hasIn":232}],187:[function(require,module,exports){ -arguments[4][23][0].apply(exports,arguments) -},{"dup":23}],188:[function(require,module,exports){ -var baseGet = require('./_baseGet'); +/** Used to resolve the decompiled source of functions. */ +var funcToString = Function.prototype.toString; -/** - * A specialized version of `baseProperty` which supports deep paths. - * - * @private - * @param {Array|string} path The path of the property to get. - * @returns {Function} Returns the new function. - */ -function basePropertyDeep(path) { - return function(object) { - return baseGet(object, path); - }; -} +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; -module.exports = basePropertyDeep; +/** Used to detect if a method is native. */ +var reIsNative = RegExp('^' + + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') + .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' +); -},{"./_baseGet":177}],189:[function(require,module,exports){ /** - * The base implementation of `_.slice` without an iteratee call guard. + * The base implementation of `_.isNative` without bad shim checks. * * @private - * @param {Array} array The array to slice. - * @param {number} [start=0] The start position. - * @param {number} [end=array.length] The end position. - * @returns {Array} Returns the slice of `array`. + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a native function, + * else `false`. */ -function baseSlice(array, start, end) { - var index = -1, - length = array.length; - - if (start < 0) { - start = -start > length ? 0 : (length + start); - } - end = end > length ? length : end; - if (end < 0) { - end += length; - } - length = start > end ? 0 : ((end - start) >>> 0); - start >>>= 0; - - var result = Array(length); - while (++index < length) { - result[index] = array[index + start]; +function baseIsNative(value) { + if (!isObject(value) || isMasked(value)) { + return false; } - return result; + var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor; + return pattern.test(toSource(value)); } -module.exports = baseSlice; - -},{}],190:[function(require,module,exports){ -arguments[4][24][0].apply(exports,arguments) -},{"dup":24}],191:[function(require,module,exports){ -var arrayMap = require('./_arrayMap'); - -/** - * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array - * of key-value pairs for `object` corresponding to the property names of `props`. - * - * @private - * @param {Object} object The object to query. - * @param {Array} props The property names to get values for. - * @returns {Object} Returns the new array of key-value pairs. - */ -function baseToPairs(object, props) { - return arrayMap(props, function(key) { - return [key, object[key]]; - }); -} +module.exports = baseIsNative; -module.exports = baseToPairs; - -},{"./_arrayMap":168}],192:[function(require,module,exports){ -var isArray = require('./isArray'), - stringToPath = require('./_stringToPath'); - -/** - * The base implementation of `_.toPath` which only converts `value` to a - * path if it's not one. - * - * @private - * @param {*} value The value to process. - * @returns {Array} Returns the property path array. - */ -function baseToPath(value) { - return isArray(value) ? value : stringToPath(value); -} - -module.exports = baseToPath; - -},{"./_stringToPath":229,"./isArray":235}],193:[function(require,module,exports){ +},{"./_isHostObject":195,"./_isMasked":198,"./_toSource":221,"./isFunction":228,"./isObject":230}],175:[function(_dereq_,module,exports){ +arguments[4][26][0].apply(exports,arguments) +},{"dup":26}],176:[function(_dereq_,module,exports){ +arguments[4][27][0].apply(exports,arguments) +},{"dup":27}],177:[function(_dereq_,module,exports){ +arguments[4][28][0].apply(exports,arguments) +},{"dup":28}],178:[function(_dereq_,module,exports){ /** * Checks if `value` is a global object. * @@ -26229,35 +26415,17 @@ function checkGlobal(value) { module.exports = checkGlobal; -},{}],194:[function(require,module,exports){ -/** - * Creates a base function for methods like `_.forIn`. - * - * @private - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Function} Returns the new base function. - */ -function createBaseFor(fromRight) { - return function(object, iteratee, keysFunc) { - var index = -1, - iterable = Object(object), - props = keysFunc(object), - length = props.length; +},{}],179:[function(_dereq_,module,exports){ +var root = _dereq_('./_root'); - while (length--) { - var key = props[fromRight ? length : ++index]; - if (iteratee(iterable[key], key, iterable) === false) { - break; - } - } - return object; - }; -} +/** Used to detect overreaching core-js shims. */ +var coreJsData = root['__core-js_shared__']; -module.exports = createBaseFor; +module.exports = coreJsData; -},{}],195:[function(require,module,exports){ -var arraySome = require('./_arraySome'); +},{"./_root":212}],180:[function(_dereq_,module,exports){ +var SetCache = _dereq_('./_SetCache'), + arraySome = _dereq_('./_arraySome'); /** Used to compose bitmasks for comparison styles. */ var UNORDERED_COMPARE_FLAG = 1, @@ -26271,15 +26439,14 @@ var UNORDERED_COMPARE_FLAG = 1, * @param {Array} array The array to compare. * @param {Array} other The other array to compare. * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Function} [customizer] The function to customize comparisons. - * @param {number} [bitmask] The bitmask of comparison flags. See `baseIsEqual` for more details. - * @param {Object} [stack] Tracks traversed `array` and `other` objects. + * @param {Function} customizer The function to customize comparisons. + * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual` + * for more details. + * @param {Object} stack Tracks traversed `array` and `other` objects. * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`. */ function equalArrays(array, other, equalFunc, customizer, bitmask, stack) { - var index = -1, - isPartial = bitmask & PARTIAL_COMPARE_FLAG, - isUnordered = bitmask & UNORDERED_COMPARE_FLAG, + var isPartial = bitmask & PARTIAL_COMPARE_FLAG, arrLength = array.length, othLength = other.length; @@ -26291,7 +26458,10 @@ function equalArrays(array, other, equalFunc, customizer, bitmask, stack) { if (stacked) { return stacked == other; } - var result = true; + var index = -1, + result = true, + seen = (bitmask & UNORDERED_COMPARE_FLAG) ? new SetCache : undefined; + stack.set(array, other); // Ignore non-index properties. @@ -26312,14 +26482,20 @@ function equalArrays(array, other, equalFunc, customizer, bitmask, stack) { break; } // Recursively compare arrays (susceptible to call stack limits). - if (isUnordered) { - if (!arraySome(other, function(othValue) { - return arrValue === othValue || equalFunc(arrValue, othValue, customizer, bitmask, stack); + if (seen) { + if (!arraySome(other, function(othValue, othIndex) { + if (!seen.has(othIndex) && + (arrValue === othValue || equalFunc(arrValue, othValue, customizer, bitmask, stack))) { + return seen.add(othIndex); + } })) { result = false; break; } - } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, customizer, bitmask, stack))) { + } else if (!( + arrValue === othValue || + equalFunc(arrValue, othValue, customizer, bitmask, stack) + )) { result = false; break; } @@ -26330,11 +26506,12 @@ function equalArrays(array, other, equalFunc, customizer, bitmask, stack) { module.exports = equalArrays; -},{"./_arraySome":169}],196:[function(require,module,exports){ -var Symbol = require('./_Symbol'), - Uint8Array = require('./_Uint8Array'), - mapToArray = require('./_mapToArray'), - setToArray = require('./_setToArray'); +},{"./_SetCache":164,"./_arraySome":169}],181:[function(_dereq_,module,exports){ +var Symbol = _dereq_('./_Symbol'), + Uint8Array = _dereq_('./_Uint8Array'), + equalArrays = _dereq_('./_equalArrays'), + mapToArray = _dereq_('./_mapToArray'), + setToArray = _dereq_('./_setToArray'); /** Used to compose bitmasks for comparison styles. */ var UNORDERED_COMPARE_FLAG = 1, @@ -26351,11 +26528,12 @@ var boolTag = '[object Boolean]', stringTag = '[object String]', symbolTag = '[object Symbol]'; -var arrayBufferTag = '[object ArrayBuffer]'; +var arrayBufferTag = '[object ArrayBuffer]', + dataViewTag = '[object DataView]'; /** Used to convert symbols to primitives and strings. */ var symbolProto = Symbol ? Symbol.prototype : undefined, - symbolValueOf = Symbol ? symbolProto.valueOf : undefined; + symbolValueOf = symbolProto ? symbolProto.valueOf : undefined; /** * A specialized version of `baseIsEqualDeep` for comparing objects of @@ -26369,12 +26547,22 @@ var symbolProto = Symbol ? Symbol.prototype : undefined, * @param {Object} other The other object to compare. * @param {string} tag The `toStringTag` of the objects to compare. * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Function} [customizer] The function to customize comparisons. - * @param {number} [bitmask] The bitmask of comparison flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual` + * for more details. + * @param {Object} stack Tracks traversed `object` and `other` objects. * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. */ -function equalByTag(object, other, tag, equalFunc, customizer, bitmask) { +function equalByTag(object, other, tag, equalFunc, customizer, bitmask, stack) { switch (tag) { + case dataViewTag: + if ((object.byteLength != other.byteLength) || + (object.byteOffset != other.byteOffset)) { + return false; + } + object = object.buffer; + other = other.buffer; + case arrayBufferTag: if ((object.byteLength != other.byteLength) || !equalFunc(new Uint8Array(object), new Uint8Array(other))) { @@ -26384,8 +26572,9 @@ function equalByTag(object, other, tag, equalFunc, customizer, bitmask) { case boolTag: case dateTag: - // Coerce dates and booleans to numbers, dates to milliseconds and booleans - // to `1` or `0` treating invalid dates coerced to `NaN` as not equal. + // Coerce dates and booleans to numbers, dates to milliseconds and + // booleans to `1` or `0` treating invalid dates coerced to `NaN` as + // not equal. return +object == +other; case errorTag: @@ -26397,8 +26586,9 @@ function equalByTag(object, other, tag, equalFunc, customizer, bitmask) { case regexpTag: case stringTag: - // Coerce regexes to strings and treat strings primitives and string - // objects as equal. See https://es5.github.io/#x15.10.6.4 for more details. + // Coerce regexes to strings and treat strings, primitives and objects, + // as equal. See http://www.ecma-international.org/ecma-262/6.0/#sec-regexp.prototype.tostring + // for more details. return object == (other + ''); case mapTag: @@ -26408,21 +26598,33 @@ function equalByTag(object, other, tag, equalFunc, customizer, bitmask) { var isPartial = bitmask & PARTIAL_COMPARE_FLAG; convert || (convert = setToArray); + if (object.size != other.size && !isPartial) { + return false; + } + // Assume cyclic values are equal. + var stacked = stack.get(object); + if (stacked) { + return stacked == other; + } + bitmask |= UNORDERED_COMPARE_FLAG; + stack.set(object, other); + // Recursively compare objects (susceptible to call stack limits). - return (isPartial || object.size == other.size) && - equalFunc(convert(object), convert(other), customizer, bitmask | UNORDERED_COMPARE_FLAG); + return equalArrays(convert(object), convert(other), equalFunc, customizer, bitmask, stack); case symbolTag: - return !!Symbol && (symbolValueOf.call(object) == symbolValueOf.call(other)); + if (symbolValueOf) { + return symbolValueOf.call(object) == symbolValueOf.call(other); + } } return false; } module.exports = equalByTag; -},{"./_Symbol":165,"./_Uint8Array":166,"./_mapToArray":219,"./_setToArray":223}],197:[function(require,module,exports){ -var baseHas = require('./_baseHas'), - keys = require('./keys'); +},{"./_Symbol":166,"./_Uint8Array":167,"./_equalArrays":180,"./_mapToArray":210,"./_setToArray":215}],182:[function(_dereq_,module,exports){ +var baseHas = _dereq_('./_baseHas'), + keys = _dereq_('./keys'); /** Used to compose bitmasks for comparison styles. */ var PARTIAL_COMPARE_FLAG = 2; @@ -26435,9 +26637,10 @@ var PARTIAL_COMPARE_FLAG = 2; * @param {Object} object The object to compare. * @param {Object} other The other object to compare. * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Function} [customizer] The function to customize comparisons. - * @param {number} [bitmask] The bitmask of comparison flags. See `baseIsEqual` for more details. - * @param {Object} [stack] Tracks traversed `object` and `other` objects. + * @param {Function} customizer The function to customize comparisons. + * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual` + * for more details. + * @param {Object} stack Tracks traversed `object` and `other` objects. * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. */ function equalObjects(object, other, equalFunc, customizer, bitmask, stack) { @@ -26504,33 +26707,31 @@ function equalObjects(object, other, equalFunc, customizer, bitmask, stack) { module.exports = equalObjects; -},{"./_baseHas":178,"./keys":247}],198:[function(require,module,exports){ -arguments[4][26][0].apply(exports,arguments) -},{"./_baseProperty":187,"dup":26}],199:[function(require,module,exports){ -var isStrictComparable = require('./_isStrictComparable'), - toPairs = require('./toPairs'); +},{"./_baseHas":171,"./keys":234}],183:[function(_dereq_,module,exports){ +arguments[4][30][0].apply(exports,arguments) +},{"./_baseProperty":176,"dup":30}],184:[function(_dereq_,module,exports){ +var isKeyable = _dereq_('./_isKeyable'); /** - * Gets the property names, values, and compare flags of `object`. + * Gets the data for `map`. * * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the match data of `object`. + * @param {Object} map The map to query. + * @param {string} key The reference key. + * @returns {*} Returns the map data. */ -function getMatchData(object) { - var result = toPairs(object), - length = result.length; - - while (length--) { - result[length][2] = isStrictComparable(result[length][1]); - } - return result; +function getMapData(map, key) { + var data = map.__data__; + return isKeyable(key) + ? data[typeof key == 'string' ? 'string' : 'hash'] + : data.map; } -module.exports = getMatchData; +module.exports = getMapData; -},{"./_isStrictComparable":213,"./toPairs":251}],200:[function(require,module,exports){ -var isNative = require('./isNative'); +},{"./_isKeyable":197}],185:[function(_dereq_,module,exports){ +var baseIsNative = _dereq_('./_baseIsNative'), + getValue = _dereq_('./_getValue'); /** * Gets the native function at `key` of `object`. @@ -26541,39 +26742,47 @@ var isNative = require('./isNative'); * @returns {*} Returns the function if it's native, else `undefined`. */ function getNative(object, key) { - var value = object == null ? undefined : object[key]; - return isNative(value) ? value : undefined; + var value = getValue(object, key); + return baseIsNative(value) ? value : undefined; } module.exports = getNative; -},{"./isNative":241}],201:[function(require,module,exports){ -var Map = require('./_Map'), - Set = require('./_Set'), - WeakMap = require('./_WeakMap'); +},{"./_baseIsNative":174,"./_getValue":188}],186:[function(_dereq_,module,exports){ +arguments[4][31][0].apply(exports,arguments) +},{"dup":31}],187:[function(_dereq_,module,exports){ +var DataView = _dereq_('./_DataView'), + Map = _dereq_('./_Map'), + Promise = _dereq_('./_Promise'), + Set = _dereq_('./_Set'), + WeakMap = _dereq_('./_WeakMap'), + toSource = _dereq_('./_toSource'); /** `Object#toString` result references. */ var mapTag = '[object Map]', objectTag = '[object Object]', + promiseTag = '[object Promise]', setTag = '[object Set]', weakMapTag = '[object WeakMap]'; +var dataViewTag = '[object DataView]'; + /** Used for built-in method references. */ var objectProto = Object.prototype; -/** Used to resolve the decompiled source of functions. */ -var funcToString = Function.prototype.toString; - /** - * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) * of values. */ var objectToString = objectProto.toString; /** Used to detect maps, sets, and weakmaps. */ -var mapCtorString = Map ? funcToString.call(Map) : '', - setCtorString = Set ? funcToString.call(Set) : '', - weakMapCtorString = WeakMap ? funcToString.call(WeakMap) : ''; +var dataViewCtorString = toSource(DataView), + mapCtorString = toSource(Map), + promiseCtorString = toSource(Promise), + setCtorString = toSource(Set), + weakMapCtorString = toSource(WeakMap); /** * Gets the `toStringTag` of `value`. @@ -26586,18 +26795,23 @@ function getTag(value) { return objectToString.call(value); } -// Fallback for IE 11 providing `toStringTag` values for maps, sets, and weakmaps. -if ((Map && getTag(new Map) != mapTag) || +// Fallback for data views, maps, sets, and weak maps in IE 11, +// for data views in Edge, and promises in Node.js. +if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) || + (Map && getTag(new Map) != mapTag) || + (Promise && getTag(Promise.resolve()) != promiseTag) || (Set && getTag(new Set) != setTag) || (WeakMap && getTag(new WeakMap) != weakMapTag)) { getTag = function(value) { var result = objectToString.call(value), - Ctor = result == objectTag ? value.constructor : null, - ctorString = typeof Ctor == 'function' ? funcToString.call(Ctor) : ''; + Ctor = result == objectTag ? value.constructor : undefined, + ctorString = Ctor ? toSource(Ctor) : undefined; if (ctorString) { switch (ctorString) { + case dataViewCtorString: return dataViewTag; case mapCtorString: return mapTag; + case promiseCtorString: return promiseTag; case setCtorString: return setTag; case weakMapCtorString: return weakMapTag; } @@ -26608,67 +26822,56 @@ if ((Map && getTag(new Map) != mapTag) || module.exports = getTag; -},{"./_Map":161,"./_Set":163,"./_WeakMap":167}],202:[function(require,module,exports){ -var baseToPath = require('./_baseToPath'), - isArguments = require('./isArguments'), - isArray = require('./isArray'), - isIndex = require('./_isIndex'), - isKey = require('./_isKey'), - isLength = require('./isLength'), - isString = require('./isString'), - last = require('./last'), - parent = require('./_parent'); - +},{"./_DataView":157,"./_Map":160,"./_Promise":162,"./_Set":163,"./_WeakMap":168,"./_toSource":221}],188:[function(_dereq_,module,exports){ /** - * Checks if `path` exists on `object`. + * Gets the value at `key` of `object`. * * @private - * @param {Object} object The object to query. - * @param {Array|string} path The path to check. - * @param {Function} hasFunc The function to check properties. - * @returns {boolean} Returns `true` if `path` exists, else `false`. + * @param {Object} [object] The object to query. + * @param {string} key The key of the property to get. + * @returns {*} Returns the property value. */ -function hasPath(object, path, hasFunc) { - if (object == null) { - return false; - } - var result = hasFunc(object, path); - if (!result && !isKey(path)) { - path = baseToPath(path); - object = parent(object, path); - if (object != null) { - path = last(path); - result = hasFunc(object, path); - } - } - var length = object ? object.length : undefined; - return result || ( - !!length && isLength(length) && isIndex(path, length) && - (isArray(object) || isString(object) || isArguments(object)) - ); +function getValue(object, key) { + return object == null ? undefined : object[key]; } -module.exports = hasPath; +module.exports = getValue; + +},{}],189:[function(_dereq_,module,exports){ +var nativeCreate = _dereq_('./_nativeCreate'); + +/** + * Removes all key-value entries from the hash. + * + * @private + * @name clear + * @memberOf Hash + */ +function hashClear() { + this.__data__ = nativeCreate ? nativeCreate(null) : {}; +} -},{"./_baseToPath":192,"./_isIndex":209,"./_isKey":210,"./_parent":221,"./isArguments":234,"./isArray":235,"./isLength":240,"./isString":244,"./last":248}],203:[function(require,module,exports){ -var hashHas = require('./_hashHas'); +module.exports = hashClear; +},{"./_nativeCreate":211}],190:[function(_dereq_,module,exports){ /** * Removes `key` and its value from the hash. * * @private + * @name delete + * @memberOf Hash * @param {Object} hash The hash to modify. * @param {string} key The key of the value to remove. * @returns {boolean} Returns `true` if the entry was removed, else `false`. */ -function hashDelete(hash, key) { - return hashHas(hash, key) && delete hash[key]; +function hashDelete(key) { + return this.has(key) && delete this.__data__[key]; } module.exports = hashDelete; -},{"./_hashHas":205}],204:[function(require,module,exports){ -var nativeCreate = require('./_nativeCreate'); +},{}],191:[function(_dereq_,module,exports){ +var nativeCreate = _dereq_('./_nativeCreate'); /** Used to stand-in for `undefined` hash values. */ var HASH_UNDEFINED = '__lodash_hash_undefined__'; @@ -26683,22 +26886,24 @@ var hasOwnProperty = objectProto.hasOwnProperty; * Gets the hash value for `key`. * * @private - * @param {Object} hash The hash to query. + * @name get + * @memberOf Hash * @param {string} key The key of the value to get. * @returns {*} Returns the entry value. */ -function hashGet(hash, key) { +function hashGet(key) { + var data = this.__data__; if (nativeCreate) { - var result = hash[key]; + var result = data[key]; return result === HASH_UNDEFINED ? undefined : result; } - return hasOwnProperty.call(hash, key) ? hash[key] : undefined; + return hasOwnProperty.call(data, key) ? data[key] : undefined; } module.exports = hashGet; -},{"./_nativeCreate":220}],205:[function(require,module,exports){ -var nativeCreate = require('./_nativeCreate'); +},{"./_nativeCreate":211}],192:[function(_dereq_,module,exports){ +var nativeCreate = _dereq_('./_nativeCreate'); /** Used for built-in method references. */ var objectProto = Object.prototype; @@ -26710,18 +26915,20 @@ var hasOwnProperty = objectProto.hasOwnProperty; * Checks if a hash value for `key` exists. * * @private - * @param {Object} hash The hash to query. + * @name has + * @memberOf Hash * @param {string} key The key of the entry to check. * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. */ -function hashHas(hash, key) { - return nativeCreate ? hash[key] !== undefined : hasOwnProperty.call(hash, key); +function hashHas(key) { + var data = this.__data__; + return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key); } module.exports = hashHas; -},{"./_nativeCreate":220}],206:[function(require,module,exports){ -var nativeCreate = require('./_nativeCreate'); +},{"./_nativeCreate":211}],193:[function(_dereq_,module,exports){ +var nativeCreate = _dereq_('./_nativeCreate'); /** Used to stand-in for `undefined` hash values. */ var HASH_UNDEFINED = '__lodash_hash_undefined__'; @@ -26730,19 +26937,23 @@ var HASH_UNDEFINED = '__lodash_hash_undefined__'; * Sets the hash `key` to `value`. * * @private - * @param {Object} hash The hash to modify. + * @name set + * @memberOf Hash * @param {string} key The key of the value to set. * @param {*} value The value to set. + * @returns {Object} Returns the hash instance. */ -function hashSet(hash, key, value) { - hash[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value; +function hashSet(key, value) { + var data = this.__data__; + data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value; + return this; } module.exports = hashSet; -},{"./_nativeCreate":220}],207:[function(require,module,exports){ -arguments[4][27][0].apply(exports,arguments) -},{"./_baseTimes":190,"./isArguments":234,"./isArray":235,"./isLength":240,"./isString":244,"dup":27}],208:[function(require,module,exports){ +},{"./_nativeCreate":211}],194:[function(_dereq_,module,exports){ +arguments[4][32][0].apply(exports,arguments) +},{"./_baseTimes":177,"./isArguments":223,"./isArray":224,"./isLength":229,"./isString":232,"dup":32}],195:[function(_dereq_,module,exports){ /** * Checks if `value` is a host object in IE < 9. * @@ -26764,72 +26975,169 @@ function isHostObject(value) { module.exports = isHostObject; -},{}],209:[function(require,module,exports){ -arguments[4][29][0].apply(exports,arguments) -},{"dup":29}],210:[function(require,module,exports){ -var isArray = require('./isArray'); +},{}],196:[function(_dereq_,module,exports){ +arguments[4][34][0].apply(exports,arguments) +},{"dup":34}],197:[function(_dereq_,module,exports){ +/** + * Checks if `value` is suitable for use as unique object key. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is suitable, else `false`. + */ +function isKeyable(value) { + var type = typeof value; + return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') + ? (value !== '__proto__') + : (value === null); +} -/** Used to match property names within property paths. */ -var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, - reIsPlainProp = /^\w*$/; +module.exports = isKeyable; + +},{}],198:[function(_dereq_,module,exports){ +var coreJsData = _dereq_('./_coreJsData'); + +/** Used to detect methods masquerading as native. */ +var maskSrcKey = (function() { + var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); + return uid ? ('Symbol(src)_1.' + uid) : ''; +}()); /** - * Checks if `value` is a property name and not a property path. + * Checks if `func` has its source masked. * * @private - * @param {*} value The value to check. - * @param {Object} [object] The object to query keys on. - * @returns {boolean} Returns `true` if `value` is a property name, else `false`. + * @param {Function} func The function to check. + * @returns {boolean} Returns `true` if `func` is masked, else `false`. */ -function isKey(value, object) { - if (typeof value == 'number') { - return true; +function isMasked(func) { + return !!maskSrcKey && (maskSrcKey in func); +} + +module.exports = isMasked; + +},{"./_coreJsData":179}],199:[function(_dereq_,module,exports){ +arguments[4][35][0].apply(exports,arguments) +},{"dup":35}],200:[function(_dereq_,module,exports){ +/** + * Removes all key-value entries from the list cache. + * + * @private + * @name clear + * @memberOf ListCache + */ +function listCacheClear() { + this.__data__ = []; +} + +module.exports = listCacheClear; + +},{}],201:[function(_dereq_,module,exports){ +var assocIndexOf = _dereq_('./_assocIndexOf'); + +/** Used for built-in method references. */ +var arrayProto = Array.prototype; + +/** Built-in value references. */ +var splice = arrayProto.splice; + +/** + * Removes `key` and its value from the list cache. + * + * @private + * @name delete + * @memberOf ListCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function listCacheDelete(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + return false; } - return !isArray(value) && - (reIsPlainProp.test(value) || !reIsDeepProp.test(value) || - (object != null && value in Object(object))); + var lastIndex = data.length - 1; + if (index == lastIndex) { + data.pop(); + } else { + splice.call(data, index, 1); + } + return true; } -module.exports = isKey; +module.exports = listCacheDelete; + +},{"./_assocIndexOf":170}],202:[function(_dereq_,module,exports){ +var assocIndexOf = _dereq_('./_assocIndexOf'); -},{"./isArray":235}],211:[function(require,module,exports){ /** - * Checks if `value` is suitable for use as unique object key. + * Gets the list cache value for `key`. * * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is suitable, else `false`. + * @name get + * @memberOf ListCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. */ -function isKeyable(value) { - var type = typeof value; - return type == 'number' || type == 'boolean' || - (type == 'string' && value !== '__proto__') || value == null; +function listCacheGet(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + + return index < 0 ? undefined : data[index][1]; } -module.exports = isKeyable; +module.exports = listCacheGet; -},{}],212:[function(require,module,exports){ -arguments[4][30][0].apply(exports,arguments) -},{"dup":30}],213:[function(require,module,exports){ -var isObject = require('./isObject'); +},{"./_assocIndexOf":170}],203:[function(_dereq_,module,exports){ +var assocIndexOf = _dereq_('./_assocIndexOf'); /** - * Checks if `value` is suitable for strict equality comparisons, i.e. `===`. + * Checks if a list cache value for `key` exists. * * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` if suitable for strict - * equality comparisons, else `false`. + * @name has + * @memberOf ListCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. */ -function isStrictComparable(value) { - return value === value && !isObject(value); +function listCacheHas(key) { + return assocIndexOf(this.__data__, key) > -1; } -module.exports = isStrictComparable; +module.exports = listCacheHas; -},{"./isObject":242}],214:[function(require,module,exports){ -var Hash = require('./_Hash'), - Map = require('./_Map'); +},{"./_assocIndexOf":170}],204:[function(_dereq_,module,exports){ +var assocIndexOf = _dereq_('./_assocIndexOf'); + +/** + * Sets the list cache `key` to `value`. + * + * @private + * @name set + * @memberOf ListCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the list cache instance. + */ +function listCacheSet(key, value) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + data.push([key, value]); + } else { + data[index][1] = value; + } + return this; +} + +module.exports = listCacheSet; + +},{"./_assocIndexOf":170}],205:[function(_dereq_,module,exports){ +var Hash = _dereq_('./_Hash'), + ListCache = _dereq_('./_ListCache'), + Map = _dereq_('./_Map'); /** * Removes all key-value entries from the map. @@ -26838,17 +27146,18 @@ var Hash = require('./_Hash'), * @name clear * @memberOf MapCache */ -function mapClear() { - this.__data__ = { 'hash': new Hash, 'map': Map ? new Map : [], 'string': new Hash }; +function mapCacheClear() { + this.__data__ = { + 'hash': new Hash, + 'map': new (Map || ListCache), + 'string': new Hash + }; } -module.exports = mapClear; +module.exports = mapCacheClear; -},{"./_Hash":160,"./_Map":161}],215:[function(require,module,exports){ -var Map = require('./_Map'), - assocDelete = require('./_assocDelete'), - hashDelete = require('./_hashDelete'), - isKeyable = require('./_isKeyable'); +},{"./_Hash":158,"./_ListCache":159,"./_Map":160}],206:[function(_dereq_,module,exports){ +var getMapData = _dereq_('./_getMapData'); /** * Removes `key` and its value from the map. @@ -26859,21 +27168,14 @@ var Map = require('./_Map'), * @param {string} key The key of the value to remove. * @returns {boolean} Returns `true` if the entry was removed, else `false`. */ -function mapDelete(key) { - var data = this.__data__; - if (isKeyable(key)) { - return hashDelete(typeof key == 'string' ? data.string : data.hash, key); - } - return Map ? data.map['delete'](key) : assocDelete(data.map, key); +function mapCacheDelete(key) { + return getMapData(this, key)['delete'](key); } -module.exports = mapDelete; +module.exports = mapCacheDelete; -},{"./_Map":161,"./_assocDelete":170,"./_hashDelete":203,"./_isKeyable":211}],216:[function(require,module,exports){ -var Map = require('./_Map'), - assocGet = require('./_assocGet'), - hashGet = require('./_hashGet'), - isKeyable = require('./_isKeyable'); +},{"./_getMapData":184}],207:[function(_dereq_,module,exports){ +var getMapData = _dereq_('./_getMapData'); /** * Gets the map value for `key`. @@ -26884,21 +27186,14 @@ var Map = require('./_Map'), * @param {string} key The key of the value to get. * @returns {*} Returns the entry value. */ -function mapGet(key) { - var data = this.__data__; - if (isKeyable(key)) { - return hashGet(typeof key == 'string' ? data.string : data.hash, key); - } - return Map ? data.map.get(key) : assocGet(data.map, key); +function mapCacheGet(key) { + return getMapData(this, key).get(key); } -module.exports = mapGet; +module.exports = mapCacheGet; -},{"./_Map":161,"./_assocGet":171,"./_hashGet":204,"./_isKeyable":211}],217:[function(require,module,exports){ -var Map = require('./_Map'), - assocHas = require('./_assocHas'), - hashHas = require('./_hashHas'), - isKeyable = require('./_isKeyable'); +},{"./_getMapData":184}],208:[function(_dereq_,module,exports){ +var getMapData = _dereq_('./_getMapData'); /** * Checks if a map value for `key` exists. @@ -26909,21 +27204,14 @@ var Map = require('./_Map'), * @param {string} key The key of the entry to check. * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. */ -function mapHas(key) { - var data = this.__data__; - if (isKeyable(key)) { - return hashHas(typeof key == 'string' ? data.string : data.hash, key); - } - return Map ? data.map.has(key) : assocHas(data.map, key); +function mapCacheHas(key) { + return getMapData(this, key).has(key); } -module.exports = mapHas; +module.exports = mapCacheHas; -},{"./_Map":161,"./_assocHas":172,"./_hashHas":205,"./_isKeyable":211}],218:[function(require,module,exports){ -var Map = require('./_Map'), - assocSet = require('./_assocSet'), - hashSet = require('./_hashSet'), - isKeyable = require('./_isKeyable'); +},{"./_getMapData":184}],209:[function(_dereq_,module,exports){ +var getMapData = _dereq_('./_getMapData'); /** * Sets the map `key` to `value`. @@ -26933,29 +27221,22 @@ var Map = require('./_Map'), * @memberOf MapCache * @param {string} key The key of the value to set. * @param {*} value The value to set. - * @returns {Object} Returns the map cache object. + * @returns {Object} Returns the map cache instance. */ -function mapSet(key, value) { - var data = this.__data__; - if (isKeyable(key)) { - hashSet(typeof key == 'string' ? data.string : data.hash, key, value); - } else if (Map) { - data.map.set(key, value); - } else { - assocSet(data.map, key, value); - } +function mapCacheSet(key, value) { + getMapData(this, key).set(key, value); return this; } -module.exports = mapSet; +module.exports = mapCacheSet; -},{"./_Map":161,"./_assocSet":174,"./_hashSet":206,"./_isKeyable":211}],219:[function(require,module,exports){ +},{"./_getMapData":184}],210:[function(_dereq_,module,exports){ /** - * Converts `map` to an array. + * Converts `map` to its key-value pairs. * * @private * @param {Object} map The map to convert. - * @returns {Array} Returns the converted array. + * @returns {Array} Returns the key-value pairs. */ function mapToArray(map) { var index = -1, @@ -26969,79 +27250,78 @@ function mapToArray(map) { module.exports = mapToArray; -},{}],220:[function(require,module,exports){ -var getNative = require('./_getNative'); +},{}],211:[function(_dereq_,module,exports){ +var getNative = _dereq_('./_getNative'); /* Built-in method references that are verified to be native. */ var nativeCreate = getNative(Object, 'create'); module.exports = nativeCreate; -},{"./_getNative":200}],221:[function(require,module,exports){ -var baseSlice = require('./_baseSlice'), - get = require('./get'); - -/** - * Gets the parent value at `path` of `object`. - * - * @private - * @param {Object} object The object to query. - * @param {Array} path The path to get the parent value of. - * @returns {*} Returns the parent value. - */ -function parent(object, path) { - return path.length == 1 ? object : get(object, baseSlice(path, 0, -1)); -} +},{"./_getNative":185}],212:[function(_dereq_,module,exports){ +(function (global){ +var checkGlobal = _dereq_('./_checkGlobal'); -module.exports = parent; +/** Detect free variable `global` from Node.js. */ +var freeGlobal = checkGlobal(typeof global == 'object' && global); -},{"./_baseSlice":189,"./get":231}],222:[function(require,module,exports){ -(function (global){ -var checkGlobal = require('./_checkGlobal'); +/** Detect free variable `self`. */ +var freeSelf = checkGlobal(typeof self == 'object' && self); -/** Used to determine if values are of the language type `Object`. */ -var objectTypes = { - 'function': true, - 'object': true -}; +/** Detect `this` as the global object. */ +var thisGlobal = checkGlobal(typeof this == 'object' && this); -/** Detect free variable `exports`. */ -var freeExports = (objectTypes[typeof exports] && exports && !exports.nodeType) ? exports : null; +/** Used as a reference to the global object. */ +var root = freeGlobal || freeSelf || thisGlobal || Function('return this')(); -/** Detect free variable `module`. */ -var freeModule = (objectTypes[typeof module] && module && !module.nodeType) ? module : null; +module.exports = root; -/** Detect free variable `global` from Node.js. */ -var freeGlobal = checkGlobal(freeExports && freeModule && typeof global == 'object' && global); +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -/** Detect free variable `self`. */ -var freeSelf = checkGlobal(objectTypes[typeof self] && self); +},{"./_checkGlobal":178}],213:[function(_dereq_,module,exports){ +/** Used to stand-in for `undefined` hash values. */ +var HASH_UNDEFINED = '__lodash_hash_undefined__'; -/** Detect free variable `window`. */ -var freeWindow = checkGlobal(objectTypes[typeof window] && window); +/** + * Adds `value` to the array cache. + * + * @private + * @name add + * @memberOf SetCache + * @alias push + * @param {*} value The value to cache. + * @returns {Object} Returns the cache instance. + */ +function setCacheAdd(value) { + this.__data__.set(value, HASH_UNDEFINED); + return this; +} -/** Detect `this` as the global object. */ -var thisGlobal = checkGlobal(objectTypes[typeof this] && this); +module.exports = setCacheAdd; +},{}],214:[function(_dereq_,module,exports){ /** - * Used as a reference to the global object. + * Checks if `value` is in the array cache. * - * The `this` value is used if it's the global object to avoid Greasemonkey's - * restricted `window` object, otherwise the `window` object is used. + * @private + * @name has + * @memberOf SetCache + * @param {*} value The value to search for. + * @returns {number} Returns `true` if `value` is found, else `false`. */ -var root = freeGlobal || ((freeWindow !== (thisGlobal && thisGlobal.window)) && freeWindow) || freeSelf || thisGlobal || Function('return this')(); - -module.exports = root; +function setCacheHas(value) { + return this.__data__.has(value); +} -}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +module.exports = setCacheHas; -},{"./_checkGlobal":193}],223:[function(require,module,exports){ +},{}],215:[function(_dereq_,module,exports){ /** - * Converts `set` to an array. + * Converts `set` to an array of its values. * * @private * @param {Object} set The set to convert. - * @returns {Array} Returns the converted array. + * @returns {Array} Returns the values. */ function setToArray(set) { var index = -1, @@ -27055,7 +27335,9 @@ function setToArray(set) { module.exports = setToArray; -},{}],224:[function(require,module,exports){ +},{}],216:[function(_dereq_,module,exports){ +var ListCache = _dereq_('./_ListCache'); + /** * Removes all key-value entries from the stack. * @@ -27064,14 +27346,12 @@ module.exports = setToArray; * @memberOf Stack */ function stackClear() { - this.__data__ = { 'array': [], 'map': null }; + this.__data__ = new ListCache; } module.exports = stackClear; -},{}],225:[function(require,module,exports){ -var assocDelete = require('./_assocDelete'); - +},{"./_ListCache":159}],217:[function(_dereq_,module,exports){ /** * Removes `key` and its value from the stack. * @@ -27082,17 +27362,12 @@ var assocDelete = require('./_assocDelete'); * @returns {boolean} Returns `true` if the entry was removed, else `false`. */ function stackDelete(key) { - var data = this.__data__, - array = data.array; - - return array ? assocDelete(array, key) : data.map['delete'](key); + return this.__data__['delete'](key); } module.exports = stackDelete; -},{"./_assocDelete":170}],226:[function(require,module,exports){ -var assocGet = require('./_assocGet'); - +},{}],218:[function(_dereq_,module,exports){ /** * Gets the stack value for `key`. * @@ -27103,17 +27378,12 @@ var assocGet = require('./_assocGet'); * @returns {*} Returns the entry value. */ function stackGet(key) { - var data = this.__data__, - array = data.array; - - return array ? assocGet(array, key) : data.map.get(key); + return this.__data__.get(key); } module.exports = stackGet; -},{"./_assocGet":171}],227:[function(require,module,exports){ -var assocHas = require('./_assocHas'); - +},{}],219:[function(_dereq_,module,exports){ /** * Checks if a stack value for `key` exists. * @@ -27124,17 +27394,14 @@ var assocHas = require('./_assocHas'); * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. */ function stackHas(key) { - var data = this.__data__, - array = data.array; - - return array ? assocHas(array, key) : data.map.has(key); + return this.__data__.has(key); } module.exports = stackHas; -},{"./_assocHas":172}],228:[function(require,module,exports){ -var MapCache = require('./_MapCache'), - assocSet = require('./_assocSet'); +},{}],220:[function(_dereq_,module,exports){ +var ListCache = _dereq_('./_ListCache'), + MapCache = _dereq_('./_MapCache'); /** Used as the size to enable large array optimizations. */ var LARGE_ARRAY_SIZE = 200; @@ -27147,62 +27414,53 @@ var LARGE_ARRAY_SIZE = 200; * @memberOf Stack * @param {string} key The key of the value to set. * @param {*} value The value to set. - * @returns {Object} Returns the stack cache object. + * @returns {Object} Returns the stack cache instance. */ function stackSet(key, value) { - var data = this.__data__, - array = data.array; - - if (array) { - if (array.length < (LARGE_ARRAY_SIZE - 1)) { - assocSet(array, key, value); - } else { - data.array = null; - data.map = new MapCache(array); - } - } - var map = data.map; - if (map) { - map.set(key, value); + var cache = this.__data__; + if (cache instanceof ListCache && cache.__data__.length == LARGE_ARRAY_SIZE) { + cache = this.__data__ = new MapCache(cache.__data__); } + cache.set(key, value); return this; } module.exports = stackSet; -},{"./_MapCache":162,"./_assocSet":174}],229:[function(require,module,exports){ -var toString = require('./toString'); - -/** Used to match property names within property paths. */ -var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]/g; - -/** Used to match backslashes in property paths. */ -var reEscapeChar = /\\(\\)?/g; +},{"./_ListCache":159,"./_MapCache":161}],221:[function(_dereq_,module,exports){ +/** Used to resolve the decompiled source of functions. */ +var funcToString = Function.prototype.toString; /** - * Converts `string` to a property path array. + * Converts `func` to its source code. * * @private - * @param {string} string The string to convert. - * @returns {Array} Returns the property path array. + * @param {Function} func The function to process. + * @returns {string} Returns the source code. */ -function stringToPath(string) { - var result = []; - toString(string).replace(rePropName, function(match, number, quote, string) { - result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match)); - }); - return result; +function toSource(func) { + if (func != null) { + try { + return funcToString.call(func); + } catch (e) {} + try { + return (func + ''); + } catch (e) {} + } + return ''; } -module.exports = stringToPath; +module.exports = toSource; -},{"./toString":252}],230:[function(require,module,exports){ +},{}],222:[function(_dereq_,module,exports){ /** - * Performs a [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) + * Performs a + * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) * comparison between two values to determine if they are equivalent. * * @static * @memberOf _ + * @since 4.0.0 * @category Lang * @param {*} value The value to compare. * @param {*} other The other value to compare. @@ -27233,107 +27491,16 @@ function eq(value, other) { module.exports = eq; -},{}],231:[function(require,module,exports){ -var baseGet = require('./_baseGet'); - -/** - * Gets the value at `path` of `object`. If the resolved value is - * `undefined` the `defaultValue` is used in its place. - * - * @static - * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @param {Array|string} path The path of the property to get. - * @param {*} [defaultValue] The value returned if the resolved value is `undefined`. - * @returns {*} Returns the resolved value. - * @example - * - * var object = { 'a': [{ 'b': { 'c': 3 } }] }; - * - * _.get(object, 'a[0].b.c'); - * // => 3 - * - * _.get(object, ['a', '0', 'b', 'c']); - * // => 3 - * - * _.get(object, 'a.b.c', 'default'); - * // => 'default' - */ -function get(object, path, defaultValue) { - var result = object == null ? undefined : baseGet(object, path); - return result === undefined ? defaultValue : result; -} - -module.exports = get; - -},{"./_baseGet":177}],232:[function(require,module,exports){ -var baseHasIn = require('./_baseHasIn'), - hasPath = require('./_hasPath'); - -/** - * Checks if `path` is a direct or inherited property of `object`. - * - * @static - * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @param {Array|string} path The path to check. - * @returns {boolean} Returns `true` if `path` exists, else `false`. - * @example - * - * var object = _.create({ 'a': _.create({ 'b': _.create({ 'c': 3 }) }) }); - * - * _.hasIn(object, 'a'); - * // => true - * - * _.hasIn(object, 'a.b.c'); - * // => true - * - * _.hasIn(object, ['a', 'b', 'c']); - * // => true - * - * _.hasIn(object, 'b'); - * // => false - */ -function hasIn(object, path) { - return hasPath(object, path, baseHasIn); -} - -module.exports = hasIn; - -},{"./_baseHasIn":179,"./_hasPath":202}],233:[function(require,module,exports){ -/** - * This method returns the first argument given to it. - * - * @static - * @memberOf _ - * @category Util - * @param {*} value Any value. - * @returns {*} Returns `value`. - * @example - * - * var object = { 'user': 'fred' }; - * - * _.identity(object) === object; - * // => true - */ -function identity(value) { - return value; -} - -module.exports = identity; - -},{}],234:[function(require,module,exports){ -arguments[4][32][0].apply(exports,arguments) -},{"./isArrayLikeObject":237,"dup":32}],235:[function(require,module,exports){ -arguments[4][33][0].apply(exports,arguments) -},{"dup":33}],236:[function(require,module,exports){ -arguments[4][34][0].apply(exports,arguments) -},{"./_getLength":198,"./isFunction":239,"./isLength":240,"dup":34}],237:[function(require,module,exports){ -arguments[4][35][0].apply(exports,arguments) -},{"./isArrayLike":236,"./isObjectLike":243,"dup":35}],238:[function(require,module,exports){ -var baseIsEqual = require('./_baseIsEqual'); +},{}],223:[function(_dereq_,module,exports){ +arguments[4][37][0].apply(exports,arguments) +},{"./isArrayLikeObject":226,"dup":37}],224:[function(_dereq_,module,exports){ +arguments[4][38][0].apply(exports,arguments) +},{"dup":38}],225:[function(_dereq_,module,exports){ +arguments[4][39][0].apply(exports,arguments) +},{"./_getLength":183,"./isFunction":228,"./isLength":229,"dup":39}],226:[function(_dereq_,module,exports){ +arguments[4][40][0].apply(exports,arguments) +},{"./isArrayLike":225,"./isObjectLike":231,"dup":40}],227:[function(_dereq_,module,exports){ +var baseIsEqual = _dereq_('./_baseIsEqual'); /** * Performs a deep comparison between two values to determine if they are @@ -27347,10 +27514,12 @@ var baseIsEqual = require('./_baseIsEqual'); * * @static * @memberOf _ + * @since 0.1.0 * @category Lang * @param {*} value The value to compare. * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @returns {boolean} Returns `true` if the values are equivalent, + * else `false`. * @example * * var object = { 'user': 'fred' }; @@ -27368,112 +27537,19 @@ function isEqual(value, other) { module.exports = isEqual; -},{"./_baseIsEqual":180}],239:[function(require,module,exports){ -arguments[4][36][0].apply(exports,arguments) -},{"./isObject":242,"dup":36}],240:[function(require,module,exports){ -arguments[4][37][0].apply(exports,arguments) -},{"dup":37}],241:[function(require,module,exports){ -var isFunction = require('./isFunction'), - isHostObject = require('./_isHostObject'), - isObjectLike = require('./isObjectLike'); - -/** Used to match `RegExp` [syntax characters](http://ecma-international.org/ecma-262/6.0/#sec-patterns). */ -var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; - -/** Used to detect host constructors (Safari > 5). */ -var reIsHostCtor = /^\[object .+?Constructor\]$/; - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** Used to resolve the decompiled source of functions. */ -var funcToString = Function.prototype.toString; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** Used to detect if a method is native. */ -var reIsNative = RegExp('^' + - funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') - .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' -); - -/** - * Checks if `value` is a native function. - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a native function, else `false`. - * @example - * - * _.isNative(Array.prototype.push); - * // => true - * - * _.isNative(_); - * // => false - */ -function isNative(value) { - if (value == null) { - return false; - } - if (isFunction(value)) { - return reIsNative.test(funcToString.call(value)); - } - return isObjectLike(value) && - (isHostObject(value) ? reIsNative : reIsHostCtor).test(value); -} - -module.exports = isNative; - -},{"./_isHostObject":208,"./isFunction":239,"./isObjectLike":243}],242:[function(require,module,exports){ -arguments[4][38][0].apply(exports,arguments) -},{"dup":38}],243:[function(require,module,exports){ -arguments[4][39][0].apply(exports,arguments) -},{"dup":39}],244:[function(require,module,exports){ -arguments[4][40][0].apply(exports,arguments) -},{"./isArray":235,"./isObjectLike":243,"dup":40}],245:[function(require,module,exports){ -var isObjectLike = require('./isObjectLike'); - -/** `Object#toString` result references. */ -var symbolTag = '[object Symbol]'; - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** - * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) - * of values. - */ -var objectToString = objectProto.toString; - -/** - * Checks if `value` is classified as a `Symbol` primitive or object. - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. - * @example - * - * _.isSymbol(Symbol.iterator); - * // => true - * - * _.isSymbol('abc'); - * // => false - */ -function isSymbol(value) { - return typeof value == 'symbol' || - (isObjectLike(value) && objectToString.call(value) == symbolTag); -} - -module.exports = isSymbol; - -},{"./isObjectLike":243}],246:[function(require,module,exports){ -var isLength = require('./isLength'), - isObjectLike = require('./isObjectLike'); +},{"./_baseIsEqual":172}],228:[function(_dereq_,module,exports){ +arguments[4][41][0].apply(exports,arguments) +},{"./isObject":230,"dup":41}],229:[function(_dereq_,module,exports){ +arguments[4][42][0].apply(exports,arguments) +},{"dup":42}],230:[function(_dereq_,module,exports){ +arguments[4][43][0].apply(exports,arguments) +},{"dup":43}],231:[function(_dereq_,module,exports){ +arguments[4][44][0].apply(exports,arguments) +},{"dup":44}],232:[function(_dereq_,module,exports){ +arguments[4][45][0].apply(exports,arguments) +},{"./isArray":224,"./isObjectLike":231,"dup":45}],233:[function(_dereq_,module,exports){ +var isLength = _dereq_('./isLength'), + isObjectLike = _dereq_('./isObjectLike'); /** `Object#toString` result references. */ var argsTag = '[object Arguments]', @@ -27491,6 +27567,7 @@ var argsTag = '[object Arguments]', weakMapTag = '[object WeakMap]'; var arrayBufferTag = '[object ArrayBuffer]', + dataViewTag = '[object DataView]', float32Tag = '[object Float32Array]', float64Tag = '[object Float64Array]', int8Tag = '[object Int8Array]', @@ -27510,17 +27587,19 @@ typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true; typedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = -typedArrayTags[dateTag] = typedArrayTags[errorTag] = -typedArrayTags[funcTag] = typedArrayTags[mapTag] = -typedArrayTags[numberTag] = typedArrayTags[objectTag] = -typedArrayTags[regexpTag] = typedArrayTags[setTag] = -typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false; +typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = +typedArrayTags[errorTag] = typedArrayTags[funcTag] = +typedArrayTags[mapTag] = typedArrayTags[numberTag] = +typedArrayTags[objectTag] = typedArrayTags[regexpTag] = +typedArrayTags[setTag] = typedArrayTags[stringTag] = +typedArrayTags[weakMapTag] = false; /** Used for built-in method references. */ var objectProto = Object.prototype; /** - * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) * of values. */ var objectToString = objectProto.toString; @@ -27530,9 +27609,11 @@ var objectToString = objectProto.toString; * * @static * @memberOf _ + * @since 3.0.0 * @category Lang * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. + * @returns {boolean} Returns `true` if `value` is correctly classified, + * else `false`. * @example * * _.isTypedArray(new Uint8Array); @@ -27542,188 +27623,17 @@ var objectToString = objectProto.toString; * // => false */ function isTypedArray(value) { - return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[objectToString.call(value)]; + return isObjectLike(value) && + isLength(value.length) && !!typedArrayTags[objectToString.call(value)]; } module.exports = isTypedArray; -},{"./isLength":240,"./isObjectLike":243}],247:[function(require,module,exports){ -arguments[4][41][0].apply(exports,arguments) -},{"./_baseHas":178,"./_baseKeys":184,"./_indexKeys":207,"./_isIndex":209,"./_isPrototype":212,"./isArrayLike":236,"dup":41}],248:[function(require,module,exports){ -/** - * Gets the last element of `array`. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to query. - * @returns {*} Returns the last element of `array`. - * @example - * - * _.last([1, 2, 3]); - * // => 3 - */ -function last(array) { - var length = array ? array.length : 0; - return length ? array[length - 1] : undefined; -} - -module.exports = last; - -},{}],249:[function(require,module,exports){ -var baseForOwn = require('./_baseForOwn'), - baseIteratee = require('./_baseIteratee'); - -/** - * Creates an object with the same keys as `object` and values generated by - * running each own enumerable property of `object` through `iteratee`. The - * iteratee function is invoked with three arguments: (value, key, object). - * - * @static - * @memberOf _ - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function|Object|string} [iteratee=_.identity] The function invoked per iteration. - * @returns {Object} Returns the new mapped object. - * @example - * - * var users = { - * 'fred': { 'user': 'fred', 'age': 40 }, - * 'pebbles': { 'user': 'pebbles', 'age': 1 } - * }; - * - * _.mapValues(users, function(o) { return o.age; }); - * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed) - * - * // The `_.property` iteratee shorthand. - * _.mapValues(users, 'age'); - * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed) - */ -function mapValues(object, iteratee) { - var result = {}; - iteratee = baseIteratee(iteratee, 3); - - baseForOwn(object, function(value, key, object) { - result[key] = iteratee(value, key, object); - }); - return result; -} - -module.exports = mapValues; - -},{"./_baseForOwn":176,"./_baseIteratee":183}],250:[function(require,module,exports){ -var baseProperty = require('./_baseProperty'), - basePropertyDeep = require('./_basePropertyDeep'), - isKey = require('./_isKey'); - -/** - * Creates a function that returns the value at `path` of a given object. - * - * @static - * @memberOf _ - * @category Util - * @param {Array|string} path The path of the property to get. - * @returns {Function} Returns the new function. - * @example - * - * var objects = [ - * { 'a': { 'b': { 'c': 2 } } }, - * { 'a': { 'b': { 'c': 1 } } } - * ]; - * - * _.map(objects, _.property('a.b.c')); - * // => [2, 1] - * - * _.map(_.sortBy(objects, _.property(['a', 'b', 'c'])), 'a.b.c'); - * // => [1, 2] - */ -function property(path) { - return isKey(path) ? baseProperty(path) : basePropertyDeep(path); -} - -module.exports = property; - -},{"./_baseProperty":187,"./_basePropertyDeep":188,"./_isKey":210}],251:[function(require,module,exports){ -var baseToPairs = require('./_baseToPairs'), - keys = require('./keys'); - -/** - * Creates an array of own enumerable key-value pairs for `object`. - * - * @static - * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the new array of key-value pairs. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.toPairs(new Foo); - * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed) - */ -function toPairs(object) { - return baseToPairs(object, keys(object)); -} - -module.exports = toPairs; - -},{"./_baseToPairs":191,"./keys":247}],252:[function(require,module,exports){ -var Symbol = require('./_Symbol'), - isSymbol = require('./isSymbol'); - -/** Used as references for various `Number` constants. */ -var INFINITY = 1 / 0; - -/** Used to convert symbols to primitives and strings. */ -var symbolProto = Symbol ? Symbol.prototype : undefined, - symbolToString = Symbol ? symbolProto.toString : undefined; - -/** - * Converts `value` to a string if it's not one. An empty string is returned - * for `null` and `undefined` values. The sign of `-0` is preserved. - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to process. - * @returns {string} Returns the string. - * @example - * - * _.toString(null); - * // => '' - * - * _.toString(-0); - * // => '-0' - * - * _.toString([1, 2, 3]); - * // => '1,2,3' - */ -function toString(value) { - // Exit early for strings to avoid a performance hit in some environments. - if (typeof value == 'string') { - return value; - } - if (value == null) { - return ''; - } - if (isSymbol(value)) { - return Symbol ? symbolToString.call(value) : ''; - } - var result = (value + ''); - return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; -} - -module.exports = toString; - -},{"./_Symbol":165,"./isSymbol":245}],253:[function(require,module,exports){ -module.exports = require('react/lib/ReactCSSTransitionGroup'); -},{"react/lib/ReactCSSTransitionGroup":358}],254:[function(require,module,exports){ +},{"./isLength":229,"./isObjectLike":231}],234:[function(_dereq_,module,exports){ +arguments[4][47][0].apply(exports,arguments) +},{"./_baseHas":171,"./_baseKeys":175,"./_indexKeys":194,"./_isIndex":196,"./_isPrototype":199,"./isArrayLike":225,"dup":47}],235:[function(_dereq_,module,exports){ +module.exports = _dereq_('react/lib/ReactCSSTransitionGroup'); +},{"react/lib/ReactCSSTransitionGroup":340}],236:[function(_dereq_,module,exports){ 'use strict'; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } @@ -27732,8 +27642,8 @@ function _possibleConstructorReturn(self, call) { if (!self) { throw new Referen function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var React = require('react'); -var c3 = require('c3'); +var React = _dereq_('react'); +var c3 = _dereq_('c3'); var C3Wrapper = function (_React$Component) { _inherits(C3Wrapper, _React$Component); @@ -27780,13 +27690,13 @@ C3Wrapper.propTypes = { }; module.exports = C3Wrapper; -},{"c3":255,"react":493}],255:[function(require,module,exports){ +},{"c3":237,"react":475}],237:[function(_dereq_,module,exports){ (function (window) { 'use strict'; /*global define, module, exports, require */ - var c3 = { version: "0.4.10" }; + var c3 = { version: "0.4.11" }; var c3_chart_fn, c3_chart_internal_fn, @@ -27814,7 +27724,10 @@ module.exports = C3Wrapper; function Chart(config) { var $$ = this.internal = new ChartInternal(this); $$.loadConfig(config); + + $$.beforeInit(config); $$.init(); + $$.afterInit(config); // bind "this" to nested API (function bindThis(fn, target, argThis) { @@ -27829,7 +27742,7 @@ module.exports = C3Wrapper; function ChartInternal(api) { var $$ = this; - $$.d3 = window.d3 ? window.d3 : typeof require !== 'undefined' ? require("d3") : undefined; + $$.d3 = window.d3 ? window.d3 : typeof _dereq_ !== 'undefined' ? _dereq_("d3") : undefined; $$.api = api; $$.config = $$.getDefaultConfig(); $$.data = {}; @@ -27854,13 +27767,19 @@ module.exports = C3Wrapper; c3_chart_internal_fn = c3.chart.internal.fn; c3_chart_internal_axis_fn = c3.chart.internal.axis.fn; + c3_chart_internal_fn.beforeInit = function () { + // can do something + }; + c3_chart_internal_fn.afterInit = function () { + // can do something + }; c3_chart_internal_fn.init = function () { var $$ = this, config = $$.config; $$.initParams(); if (config.data_url) { - $$.convertUrlToData(config.data_url, config.data_mimeType, config.data_keys, $$.initWithData); + $$.convertUrlToData(config.data_url, config.data_mimeType, config.data_headers, config.data_keys, $$.initWithData); } else if (config.data_json) { $$.initWithData($$.convertJsonToData(config.data_json, config.data_keys)); @@ -28031,6 +27950,10 @@ module.exports = C3Wrapper; .on('mouseenter', function () { return config.onmouseover.call($$); }) .on('mouseleave', function () { return config.onmouseout.call($$); }); + if ($$.config.svg_classname) { + $$.svg.attr('class', $$.config.svg_classname); + } + // Define defs defs = $$.svg.append("defs"); $$.clipChart = $$.appendClip(defs, $$.clipId); @@ -28046,6 +27969,7 @@ module.exports = C3Wrapper; if ($$.initSubchart) { $$.initSubchart(); } if ($$.initTooltip) { $$.initTooltip(); } if ($$.initLegend) { $$.initLegend(); } + if ($$.initTitle) { $$.initTitle(); } /*-- Main Region --*/ @@ -28107,20 +28031,7 @@ module.exports = C3Wrapper; } // Bind resize event - if (window.onresize == null) { - window.onresize = $$.generateResize(); - } - if (window.onresize.add) { - window.onresize.add(function () { - config.onresize.call($$); - }); - window.onresize.add(function () { - $$.api.flush(); - }); - window.onresize.add(function () { - config.onresized.call($$); - }); - } + $$.bindResize(); // export element of the chart $$.api.element = $$.selectChart.node(); @@ -28206,7 +28117,7 @@ module.exports = C3Wrapper; // for arc $$.arcWidth = $$.width - ($$.isLegendRight ? legendWidth + 10 : 0); $$.arcHeight = $$.height - ($$.isLegendRight ? 0 : 10); - if ($$.hasType('gauge')) { + if ($$.hasType('gauge') && !config.gauge_fullCircle) { $$.arcHeight += $$.height - $$.getGaugeLabelHeight(); } if ($$.updateRadius) { $$.updateRadius(); } @@ -28358,9 +28269,6 @@ module.exports = C3Wrapper; $$.subY2.domain($$.getYDomain(targetsToShow, 'y2')); } - // tooltip - $$.tooltip.style("display", "none"); - // xgrid focus $$.updateXgridFocus(); @@ -28391,6 +28299,9 @@ module.exports = C3Wrapper; $$.updateText(durationForExit); } + // title + if ($$.redrawTitle) { $$.redrawTitle(); } + // arc if ($$.redrawArc) { $$.redrawArc(duration, durationForExit, withTransform); } @@ -28697,6 +28608,7 @@ module.exports = C3Wrapper; if (selection.node().parentNode) { window.clearInterval($$.intervalForObserveInserted); $$.updateDimension(); + if ($$.brush) { $$.brush.update(); } $$.config.oninit.call($$); $$.redraw({ withTransform: true, @@ -28715,6 +28627,49 @@ module.exports = C3Wrapper; observer.observe(selection.node(), {attributes: true, childList: true, characterData: true}); }; + c3_chart_internal_fn.bindResize = function () { + var $$ = this, config = $$.config; + + $$.resizeFunction = $$.generateResize(); + + $$.resizeFunction.add(function () { + config.onresize.call($$); + }); + if (config.resize_auto) { + $$.resizeFunction.add(function () { + if ($$.resizeTimeout !== undefined) { + window.clearTimeout($$.resizeTimeout); + } + $$.resizeTimeout = window.setTimeout(function () { + delete $$.resizeTimeout; + $$.api.flush(); + }, 100); + }); + } + $$.resizeFunction.add(function () { + config.onresized.call($$); + }); + + if (window.attachEvent) { + window.attachEvent('onresize', $$.resizeFunction); + } else if (window.addEventListener) { + window.addEventListener('resize', $$.resizeFunction, false); + } else { + // fallback to this, if this is a very old browser + var wrapper = window.onresize; + if (!wrapper) { + // create a wrapper that will call all charts + wrapper = $$.generateResize(); + } else if (!wrapper.add || !wrapper.remove) { + // there is already a handler registered, make sure we call it too + wrapper = $$.generateResize(); + wrapper.add(window.onresize); + } + // add this graph to the wrapper, we will be removed if the user calls destroy + wrapper.add($$.resizeFunction); + window.onresize = wrapper; + } + }; c3_chart_internal_fn.generateResize = function () { var resizeFunctions = []; @@ -28726,6 +28681,14 @@ module.exports = C3Wrapper; callResizeFunctions.add = function (f) { resizeFunctions.push(f); }; + callResizeFunctions.remove = function (f) { + for (var i = 0; i < resizeFunctions.length; i++) { + if (resizeFunctions[i] === f) { + resizeFunctions.splice(i, 1); + break; + } + } + }; return callResizeFunctions; }; @@ -28771,7 +28734,7 @@ module.exports = C3Wrapper; parsedDate = date; } else if (typeof date === 'string') { parsedDate = $$.dataTimeFormat($$.config.data_xFormat).parse(date); - } else if (typeof date === 'number' || !isNaN(date)) { + } else if (typeof date === 'number' && !isNaN(date)) { parsedDate = new Date(+date); } if (!parsedDate || isNaN(+parsedDate)) { @@ -28798,12 +28761,14 @@ module.exports = C3Wrapper; c3_chart_internal_fn.getDefaultConfig = function () { var config = { bindto: '#chart', + svg_classname: undefined, size_width: undefined, size_height: undefined, padding_left: undefined, padding_right: undefined, padding_top: undefined, padding_bottom: undefined, + resize_auto: true, zoom_enabled: false, zoom_extent: undefined, zoom_privileged: false, @@ -28811,6 +28776,9 @@ module.exports = C3Wrapper; zoom_onzoom: function () {}, zoom_onzoomstart: function () {}, zoom_onzoomend: function () {}, + zoom_x_min: undefined, + zoom_x_max: undefined, + interaction_brighten: true, interaction_enabled: true, onmouseover: function () {}, onmouseout: function () {}, @@ -28849,6 +28817,7 @@ module.exports = C3Wrapper; data_onselected: function () {}, data_onunselected: function () {}, data_url: undefined, + data_headers: undefined, data_json: undefined, data_rows: undefined, data_columns: undefined, @@ -28859,6 +28828,7 @@ module.exports = C3Wrapper; // subchart subchart_show: false, subchart_size_height: 60, + subchart_axis_x_show: true, subchart_onbrush: function () {}, // color color_pattern: [], @@ -28875,6 +28845,9 @@ module.exports = C3Wrapper; legend_item_onmouseover: undefined, legend_item_onmouseout: undefined, legend_equally: false, + legend_padding: 0, + legend_item_tile_width: 10, + legend_item_tile_height: 10, // axis axis_rotated: false, axis_x_show: true, @@ -28908,7 +28881,8 @@ module.exports = C3Wrapper; axis_y_label: {}, axis_y_tick_format: undefined, axis_y_tick_outer: true, - axis_y_tick_values: null, + axis_y_tick_values: null, + axis_y_tick_rotate: 0, axis_y_tick_count: undefined, axis_y_tick_time_value: undefined, axis_y_tick_time_interval: undefined, @@ -28941,6 +28915,7 @@ module.exports = C3Wrapper; // point - point of each data point_show: true, point_r: 2.5, + point_sensitivity: 10, point_focus_expand_enabled: true, point_focus_expand_r: undefined, point_select_r: undefined, @@ -28954,26 +28929,36 @@ module.exports = C3Wrapper; bar_zerobased: true, // area area_zerobased: true, + area_above: false, // pie pie_label_show: true, pie_label_format: undefined, pie_label_threshold: 0.05, - pie_expand: true, + pie_label_ratio: undefined, + pie_expand: {}, + pie_expand_duration: 50, // gauge + gauge_fullCircle: false, gauge_label_show: true, gauge_label_format: undefined, - gauge_expand: true, gauge_min: 0, gauge_max: 100, + gauge_startingAngle: -1 * Math.PI/2, gauge_units: undefined, gauge_width: undefined, + gauge_expand: {}, + gauge_expand_duration: 50, // donut donut_label_show: true, donut_label_format: undefined, donut_label_threshold: 0.05, + donut_label_ratio: undefined, donut_width: undefined, - donut_expand: true, donut_title: "", + donut_expand: {}, + donut_expand_duration: 50, + // spline + spline_interpolation_type: 'cardinal', // region - region to change style regions: [], // tooltip - show when mouseover on each data @@ -28988,7 +28973,18 @@ module.exports = C3Wrapper; }, tooltip_init_show: false, tooltip_init_x: 0, - tooltip_init_position: {top: '0px', left: '50px'} + tooltip_init_position: {top: '0px', left: '50px'}, + tooltip_onshow: function () {}, + tooltip_onhide: function () {}, + // title + title_text: undefined, + title_padding: { + top: 0, + right: 0, + bottom: 0, + left: 0 + }, + title_position: 'top-center', }; Object.keys(this.additionalConfig).forEach(function (key) { @@ -29339,14 +29335,15 @@ module.exports = C3Wrapper; return $$.x.domain(); }; c3_chart_internal_fn.trimXDomain = function (domain) { - var $$ = this; - if (domain[0] <= $$.orgXDomain[0]) { - domain[1] = +domain[1] + ($$.orgXDomain[0] - domain[0]); - domain[0] = $$.orgXDomain[0]; + var zoomDomain = this.getZoomDomain(), + min = zoomDomain[0], max = zoomDomain[1]; + if (domain[0] <= min) { + domain[1] = +domain[1] + (min - domain[0]); + domain[0] = min; } - if ($$.orgXDomain[1] <= domain[1]) { - domain[0] = +domain[0] - (domain[1] - $$.orgXDomain[1]); - domain[1] = $$.orgXDomain[1]; + if (max <= domain[1]) { + domain[0] = +domain[0] - (domain[1] - max); + domain[1] = max; } return domain; }; @@ -29406,7 +29403,7 @@ module.exports = C3Wrapper; var $$ = this, name; if (data) { name = $$.config.data_names[data.id]; - data.name = name ? name : data.id; + data.name = name !== undefined ? name : data.id; } return data; }; @@ -29500,7 +29497,7 @@ module.exports = C3Wrapper; }; c3_chart_internal_fn.mapToTargetIds = function (ids) { var $$ = this; - return ids ? (isString(ids) ? [ids] : ids) : $$.mapToIds($$.data.targets); + return ids ? [].concat(ids) : $$.mapToIds($$.data.targets); }; c3_chart_internal_fn.hasTarget = function (targets, id) { var ids = this.mapToIds(targets), i; @@ -29524,7 +29521,8 @@ module.exports = C3Wrapper; c3_chart_internal_fn.mapTargetsToUniqueXs = function (targets) { var $$ = this; var xs = $$.d3.set($$.d3.merge(targets.map(function (t) { return t.values.map(function (v) { return +v.x; }); }))).values(); - return $$.isTimeSeries() ? xs.map(function (x) { return new Date(+x); }) : xs.map(function (x) { return +x; }); + xs = $$.isTimeSeries() ? xs.map(function (x) { return new Date(+x); }) : xs.map(function (x) { return +x; }); + return xs.sort(function (a, b) { return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN; }); }; c3_chart_internal_fn.addHiddenTargetIds = function (targetIds) { this.hiddenTargetIds = this.hiddenTargetIds.concat(targetIds); @@ -29658,7 +29656,7 @@ module.exports = C3Wrapper; return $$.findClosest(candidates, pos); }; c3_chart_internal_fn.findClosest = function (values, pos) { - var $$ = this, minDist = 100, closest; + var $$ = this, minDist = $$.config.point_sensitivity, closest; // find mouseovering bar values.filter(function (v) { return v && $$.isBarType(v.id); }).forEach(function (v) { @@ -29685,7 +29683,7 @@ module.exports = C3Wrapper; yIndex = config.axis_rotated ? 0 : 1, y = $$.circleY(data, data.index), x = $$.x(data.x); - return Math.pow(x - pos[xIndex], 2) + Math.pow(y - pos[yIndex], 2); + return Math.sqrt(Math.pow(x - pos[xIndex], 2) + Math.pow(y - pos[yIndex], 2)); }; c3_chart_internal_fn.convertValuesToStep = function (values) { var converted = [].concat(values), i; @@ -29721,9 +29719,15 @@ module.exports = C3Wrapper; return current; }; - c3_chart_internal_fn.convertUrlToData = function (url, mimeType, keys, done) { + c3_chart_internal_fn.convertUrlToData = function (url, mimeType, headers, keys, done) { var $$ = this, type = mimeType ? mimeType : 'csv'; - $$.d3.xhr(url, function (error, data) { + var req = $$.d3.xhr(url); + if (headers) { + Object.keys(headers).forEach(function (header) { + req.header(header, headers[header]); + }); + } + req.get(function (error, data) { var d; if (!data) { throw new Error(error.responseURL + ' ' + error.status + ' (' + error.statusText + ')'); @@ -29771,7 +29775,10 @@ module.exports = C3Wrapper; var new_row = []; targetKeys.forEach(function (key) { // convert undefined to null because undefined data will be removed in convertDataToTargets() - var v = isUndefined(o[key]) ? null : o[key]; + var v = $$.findValueInJson(o, key); + if (isUndefined(v)) { + v = null; + } new_row.push(v); }); new_rows.push(new_row); @@ -29785,6 +29792,20 @@ module.exports = C3Wrapper; } return data; }; + c3_chart_internal_fn.findValueInJson = function (object, path) { + path = path.replace(/\[(\w+)\]/g, '.$1'); // convert indexes to properties (replace [] with .) + path = path.replace(/^\./, ''); // strip a leading dot + var pathArray = path.split('.'); + for (var i = 0; i < pathArray.length; ++i) { + var k = pathArray[i]; + if (k in object) { + object = object[k]; + } else { + return; + } + } + return object; + }; c3_chart_internal_fn.convertRowsToData = function (rows) { var keys = rows[0], new_row = {}, new_rows = [], i, j; for (i = 1; i < rows.length; i++) { @@ -29863,17 +29884,26 @@ module.exports = C3Wrapper; id: convertedId, id_org: id, values: data.map(function (d, i) { - var xKey = $$.getXKey(id), rawX = d[xKey], x = $$.generateTargetX(rawX, id, i); + var xKey = $$.getXKey(id), rawX = d[xKey], + value = d[id] !== null && !isNaN(d[id]) ? +d[id] : null, x; // use x as categories if custom x and categorized - if ($$.isCustomX() && $$.isCategorized() && index === 0 && rawX) { - if (i === 0) { config.axis_x_categories = []; } - config.axis_x_categories.push(rawX); + if ($$.isCustomX() && $$.isCategorized() && index === 0 && !isUndefined(rawX)) { + if (index === 0 && i === 0) { + config.axis_x_categories = []; + } + x = config.axis_x_categories.indexOf(rawX); + if (x === -1) { + x = config.axis_x_categories.length; + config.axis_x_categories.push(rawX); + } + } else { + x = $$.generateTargetX(rawX, id, i); } // mark as x = undefined if value is undefined and filter to remove after mapped if (isUndefined(d[id]) || $$.data.xs[id].length <= i) { x = undefined; } - return {x: x, value: d[id] !== null && !isNaN(d[id]) ? +d[id] : null, id: convertedId}; + return {x: x, value: value, id: convertedId}; }).filter(function (v) { return isDefined(v.x); }) }; }); @@ -29900,6 +29930,10 @@ module.exports = C3Wrapper; }); }); + // cache information about values + $$.hasNegativeValue = $$.hasNegativeValueInTargets(targets); + $$.hasPositiveValue = $$.hasPositiveValueInTargets(targets); + // set target types if (config.data_type) { $$.setTargetType($$.mapToIds(targets).filter(function (id) { return ! (id in config.data_types); }), config.data_type); @@ -29954,7 +29988,7 @@ module.exports = C3Wrapper; $$.load($$.convertDataToTargets(args.data), args); } else if (args.url) { - $$.convertUrlToData(args.url, args.mimeType, args.keys, function (data) { + $$.convertUrlToData(args.url, args.mimeType, args.headers, args.keys, function (data) { $$.load($$.convertDataToTargets(data), args); }); } @@ -30297,7 +30331,7 @@ module.exports = C3Wrapper; $$.showXGridFocus(selectedData); // Show cursor as pointer if point is close to mouse position - if ($$.isBarType(closest.id) || $$.dist(closest, mouse) < 100) { + if ($$.isBarType(closest.id) || $$.dist(closest, mouse) < config.point_sensitivity) { $$.svg.select('.' + CLASS.eventRect).style('cursor', 'pointer'); if (!$$.mouseover) { config.data_onmouseover.call($$.api, closest); @@ -30308,16 +30342,13 @@ module.exports = C3Wrapper; .on('click', function () { var targetsToShow = $$.filterTargetsToShow($$.data.targets); var mouse, closest; - if ($$.hasArcType(targetsToShow)) { return; } mouse = d3.mouse(this); closest = $$.findClosestFromTargets(targetsToShow, mouse); - if (! closest) { return; } - // select if selection enabled - if ($$.isBarType(closest.id) || $$.dist(closest, mouse) < 100) { + if ($$.isBarType(closest.id) || $$.dist(closest, mouse) < config.point_sensitivity) { $$.main.selectAll('.' + CLASS.shapes + $$.getTargetSelectorSuffix(closest.id)).selectAll('.' + CLASS.shape + '-' + closest.index).each(function () { if (config.data_selection_grouped || $$.isWithinShape(this, closest)) { $$.toggleShape(this, closest, closest.index); @@ -30356,11 +30387,16 @@ module.exports = C3Wrapper; c3_chart_internal_fn.getCurrentHeight = function () { var $$ = this, config = $$.config, h = config.size_height ? config.size_height : $$.getParentHeight(); - return h > 0 ? h : 320 / ($$.hasType('gauge') ? 2 : 1); + return h > 0 ? h : 320 / ($$.hasType('gauge') && !config.gauge_fullCircle ? 2 : 1); }; c3_chart_internal_fn.getCurrentPaddingTop = function () { - var config = this.config; - return isValue(config.padding_top) ? config.padding_top : 0; + var $$ = this, + config = $$.config, + padding = isValue(config.padding_top) ? config.padding_top : 0; + if ($$.title && $$.title.node()) { + padding += $$.getTitlePadding(); + } + return padding; }; c3_chart_internal_fn.getCurrentPaddingBottom = function () { var config = this.config; @@ -30441,12 +30477,18 @@ module.exports = C3Wrapper; var $$ = this, config = $$.config, h = 30; if (axisId === 'x' && !config.axis_x_show) { return 8; } if (axisId === 'x' && config.axis_x_height) { return config.axis_x_height; } - if (axisId === 'y' && !config.axis_y_show) { return config.legend_show && !$$.isLegendRight && !$$.isLegendInset ? 10 : 1; } + if (axisId === 'y' && !config.axis_y_show) { + return config.legend_show && !$$.isLegendRight && !$$.isLegendInset ? 10 : 1; + } if (axisId === 'y2' && !config.axis_y2_show) { return $$.rotated_padding_top; } // Calculate x axis height when tick rotated if (axisId === 'x' && !config.axis_rotated && config.axis_x_tick_rotate) { h = 30 + $$.axis.getMaxTickWidth(axisId) * Math.cos(Math.PI * (90 - config.axis_x_tick_rotate) / 180); } + // Calculate y axis height when tick rotated + if (axisId === 'y' && config.axis_rotated && config.axis_y_tick_rotate) { + h = 30 + $$.axis.getMaxTickWidth(axisId) * Math.cos(Math.PI * (90 - config.axis_y_tick_rotate) / 180); + } return h + ($$.axis.getLabelPositionById(axisId).isInner ? 0 : 10) + (axisId === 'y2' ? -10 : 0); }; @@ -30497,7 +30539,17 @@ module.exports = C3Wrapper; var values = $$.isStepType(d) ? $$.convertValuesToStep(t.values) : t.values; if (t.id === d.id || indices[t.id] !== indices[d.id]) { return; } if (targetIds.indexOf(t.id) < targetIds.indexOf(d.id)) { - if (values[i].value * d.value >= 0) { + // check if the x values line up + if (typeof values[i] === 'undefined' || +values[i].x !== +d.x) { // "+" for timeseries + // if not, try to find the value that does line up + i = -1; + values.forEach(function (v, j) { + if (v.x === d.x) { + i = j; + } + }); + } + if (i in values && values[i].value * d.value >= 0) { offset += scale(values[i].value) - y0; } } @@ -30522,8 +30574,9 @@ module.exports = C3Wrapper; c3_chart_internal_fn.getInterpolate = function (d) { - var $$ = this; - return $$.isSplineType(d) ? "cardinal" : $$.isStepType(d) ? $$.config.line_step_type : "linear"; + var $$ = this, + interpolation = $$.isInterpolationType($$.config.spline_interpolation_type) ? $$.config.spline_interpolation_type : 'cardinal'; + return $$.isSplineType(d) ? interpolation : $$.isStepType(d) ? $$.config.line_step_type : "linear"; }; c3_chart_internal_fn.initLine = function () { @@ -30584,7 +30637,7 @@ module.exports = C3Wrapper; }; c3_chart_internal_fn.redrawLine = function (drawLine, withTransition) { return [ - (withTransition ? this.mainLine.transition() : this.mainLine) + (withTransition ? this.mainLine.transition(Math.random().toString()) : this.mainLine) .attr("d", drawLine) .style("stroke", this.color) .style("opacity", 1) @@ -30760,7 +30813,7 @@ module.exports = C3Wrapper; }; c3_chart_internal_fn.redrawArea = function (drawArea, withTransition) { return [ - (withTransition ? this.mainArea.transition() : this.mainArea) + (withTransition ? this.mainArea.transition(Math.random().toString()) : this.mainArea) .attr("d", drawArea) .style("fill", this.color) .style("opacity", this.orgAreaOpacity) @@ -30778,7 +30831,7 @@ module.exports = C3Wrapper; return config.data_groups.length > 0 ? getPoints(d, i)[1][1] : yScaleGetter.call($$, d.id)(d.value); }; - area = config.axis_rotated ? area.x0(value0).x1(value1).y(xValue) : area.x(xValue).y0(value0).y1(value1); + area = config.axis_rotated ? area.x0(value0).x1(value1).y(xValue) : area.x(xValue).y0(config.area_above ? 0 : value0).y1(value1); if (!config.line_connectNull) { area = area.defined(function (d) { return d.value !== null; }); } @@ -30843,12 +30896,12 @@ module.exports = C3Wrapper; c3_chart_internal_fn.redrawCircle = function (cx, cy, withTransition) { var selectedCircles = this.main.selectAll('.' + CLASS.selectedCircle); return [ - (withTransition ? this.mainCircle.transition() : this.mainCircle) + (withTransition ? this.mainCircle.transition(Math.random().toString()) : this.mainCircle) .style('opacity', this.opacityForCircle.bind(this)) .style("fill", this.color) .attr("cx", cx) .attr("cy", cy), - (withTransition ? selectedCircles.transition() : selectedCircles) + (withTransition ? selectedCircles.transition(Math.random().toString()) : selectedCircles) .attr("cx", cx) .attr("cy", cy) ]; @@ -30900,7 +30953,7 @@ module.exports = C3Wrapper; }; c3_chart_internal_fn.pointSelectR = function (d) { var $$ = this, config = $$.config; - return config.point_select_r ? config.point_select_r : $$.pointR(d) * 4; + return isFunction(config.point_select_r) ? config.point_select_r(d) : ((config.point_select_r) ? config.point_select_r : $$.pointR(d) * 4); }; c3_chart_internal_fn.isWithinCircle = function (that, r) { var d3 = this.d3, @@ -30956,7 +31009,7 @@ module.exports = C3Wrapper; }; c3_chart_internal_fn.redrawBar = function (drawBar, withTransition) { return [ - (withTransition ? this.mainBar.transition() : this.mainBar) + (withTransition ? this.mainBar.transition(Math.random().toString()) : this.mainBar) .attr('d', drawBar) .style("fill", this.color) .style("opacity", 1) @@ -31084,14 +31137,16 @@ module.exports = C3Wrapper; .style("fill-opacity", forFlow ? 0 : this.opacityForText.bind(this)) ]; }; - c3_chart_internal_fn.getTextRect = function (text, cls) { + c3_chart_internal_fn.getTextRect = function (text, cls, element) { var dummy = this.d3.select('body').append('div').classed('c3', true), svg = dummy.append("svg").style('visibility', 'hidden').style('position', 'fixed').style('top', 0).style('left', 0), + font = this.d3.select(element).style('font'), rect; svg.selectAll('.dummy') .data([text]) .enter().append('text') .classed(cls ? cls : "", true) + .style('font', font) .text(text) .each(function () { rect = this.getBoundingClientRect(); }); dummy.remove(); @@ -31135,7 +31190,7 @@ module.exports = C3Wrapper; yPos = (points[0][0] + points[2][0] + box.height * 0.6) / 2; } else { yPos = points[2][1]; - if (d.value < 0) { + if (d.value < 0 || (d.value === 0 && !$$.hasPositiveValue)) { yPos += box.height; if ($$.isBarType(d) && $$.isSafari()) { yPos -= 3; @@ -31249,6 +31304,9 @@ module.exports = C3Wrapper; c3_chart_internal_fn.barOrLineData = function (d) { return this.isBarType(d) || this.isLineType(d) ? d.values : []; }; + c3_chart_internal_fn.isInterpolationType = function (type) { + return ['linear', 'linear-closed', 'basis', 'basis-open', 'basis-closed', 'bundle', 'cardinal', 'cardinal-open', 'cardinal-closed', 'monotone'].indexOf(type) >= 0; + }; c3_chart_internal_fn.initGrid = function () { var $$ = this, config = $$.config, d3 = $$.d3; @@ -31522,21 +31580,44 @@ module.exports = C3Wrapper; titleFormat = config.tooltip_format_title || defaultTitleFormat, nameFormat = config.tooltip_format_name || function (name) { return name; }, valueFormat = config.tooltip_format_value || defaultValueFormat, - text, i, title, value, name, bgcolor; + text, i, title, value, name, bgcolor, + orderAsc = $$.isOrderAsc(); + + if (config.data_groups.length === 0) { + d.sort(function(a, b){ + var v1 = a ? a.value : null, v2 = b ? b.value : null; + return orderAsc ? v1 - v2 : v2 - v1; + }); + } else { + var ids = $$.orderTargets($$.data.targets).map(function (i) { + return i.id; + }); + d.sort(function(a, b) { + var v1 = a ? a.value : null, v2 = b ? b.value : null; + if (v1 > 0 && v2 > 0) { + v1 = a ? ids.indexOf(a.id) : null; + v2 = b ? ids.indexOf(b.id) : null; + } + return orderAsc ? v1 - v2 : v2 - v1; + }); + } + for (i = 0; i < d.length; i++) { if (! (d[i] && (d[i].value || d[i].value === 0))) { continue; } if (! text) { - title = titleFormat ? titleFormat(d[i].x) : d[i].x; - text = "" + (title || title === 0 ? "" : ""); + title = sanitise(titleFormat ? titleFormat(d[i].x) : d[i].x); + text = "
" + title + "
" + (title || title === 0 ? "" : ""); } - value = valueFormat(d[i].value, d[i].ratio, d[i].id, d[i].index); + value = sanitise(valueFormat(d[i].value, d[i].ratio, d[i].id, d[i].index, d)); if (value !== undefined) { - name = nameFormat(d[i].name, d[i].ratio, d[i].id, d[i].index); + // Skip elements when their name is set to null + if (d[i].name === null) { continue; } + name = sanitise(nameFormat(d[i].name, d[i].ratio, d[i].id, d[i].index)); bgcolor = $$.levelColor ? $$.levelColor(d[i].value) : color(d[i].id); - text += ""; + text += ""; text += ""; text += ""; text += ""; @@ -31568,7 +31649,7 @@ module.exports = C3Wrapper; } if (tooltipRight > chartRight) { - // 20 is needed for Firefox to keep tooletip width + // 20 is needed for Firefox to keep tooltip width tooltipLeft -= tooltipRight - chartRight + 20; } if (tooltipTop + tHeight > $$.currentHeight) { @@ -31720,19 +31801,24 @@ module.exports = C3Wrapper; }; c3_chart_internal_fn.updateLegend = function (targetIds, options, transitions) { var $$ = this, config = $$.config; - var xForLegend, xForLegendText, xForLegendRect, yForLegend, yForLegendText, yForLegendRect; - var paddingTop = 4, paddingRight = 10, maxWidth = 0, maxHeight = 0, posMin = 10, tileWidth = 15; + var xForLegend, xForLegendText, xForLegendRect, yForLegend, yForLegendText, yForLegendRect, x1ForLegendTile, x2ForLegendTile, yForLegendTile; + var paddingTop = 4, paddingRight = 10, maxWidth = 0, maxHeight = 0, posMin = 10, tileWidth = config.legend_item_tile_width + 5; var l, totalLength = 0, offsets = {}, widths = {}, heights = {}, margins = [0], steps = {}, step = 0; var withTransition, withTransitionForTransform; var texts, rects, tiles, background; + // Skip elements when their name is set to null + targetIds = targetIds.filter(function(id) { + return !isDefined(config.data_names[id]) || config.data_names[id] !== null; + }); + options = options || {}; withTransition = getOption(options, "withTransition", true); withTransitionForTransform = getOption(options, "withTransitionForTransform", true); function getTextBox(textElement, id) { if (!$$.legendItemTextBox[id]) { - $$.legendItemTextBox[id] = $$.getTextRect(textElement.textContent, CLASS.legendItem); + $$.legendItemTextBox[id] = $$.getTextRect(textElement.textContent, CLASS.legendItem, textElement); } return $$.legendItemTextBox[id]; } @@ -31740,7 +31826,7 @@ module.exports = C3Wrapper; function updatePositions(textElement, id, index) { var reset = index === 0, isLast = index === targetIds.length - 1, box = getTextBox(textElement, id), - itemWidth = box.width + tileWidth + (isLast && !($$.isLegendRight || $$.isLegendInset) ? 0 : paddingRight), + itemWidth = box.width + tileWidth + (isLast && !($$.isLegendRight || $$.isLegendInset) ? 0 : paddingRight) + config.legend_padding, itemHeight = box.height + paddingTop, itemLength = $$.isLegendRight || $$.isLegendInset ? itemHeight : itemWidth, areaLength = $$.isLegendRight || $$.isLegendInset ? $$.getLegendHeight() : $$.getLegendWidth(), @@ -31813,10 +31899,13 @@ module.exports = C3Wrapper; xForLegend = function (id) { return margins[steps[id]] + offsets[id]; }; yForLegend = function (id) { return maxHeight * steps[id]; }; } - xForLegendText = function (id, i) { return xForLegend(id, i) + 14; }; + xForLegendText = function (id, i) { return xForLegend(id, i) + 4 + config.legend_item_tile_width; }; yForLegendText = function (id, i) { return yForLegend(id, i) + 9; }; xForLegendRect = function (id, i) { return xForLegend(id, i); }; yForLegendRect = function (id, i) { return yForLegend(id, i) - 5; }; + x1ForLegendTile = function (id, i) { return xForLegend(id, i) - 2; }; + x2ForLegendTile = function (id, i) { return xForLegend(id, i) - 2 + config.legend_item_tile_width; }; + yForLegendTile = function (id, i) { return yForLegend(id, i) + 4; }; // Define g for legend area l = $$.legend.selectAll('.' + CLASS.legendItem) @@ -31839,20 +31928,24 @@ module.exports = C3Wrapper; } }) .on('mouseover', function (id) { - $$.d3.select(this).classed(CLASS.legendItemFocused, true); - if (!$$.transiting && $$.isTargetToShow(id)) { - $$.api.focus(id); - } if (config.legend_item_onmouseover) { config.legend_item_onmouseover.call($$, id); } + else { + $$.d3.select(this).classed(CLASS.legendItemFocused, true); + if (!$$.transiting && $$.isTargetToShow(id)) { + $$.api.focus(id); + } + } }) .on('mouseout', function (id) { - $$.d3.select(this).classed(CLASS.legendItemFocused, false); - $$.api.revert(); if (config.legend_item_onmouseout) { config.legend_item_onmouseout.call($$, id); } + else { + $$.d3.select(this).classed(CLASS.legendItemFocused, false); + $$.api.revert(); + } }); l.append('text') .text(function (id) { return isDefined(config.data_names[id]) ? config.data_names[id] : id; }) @@ -31865,14 +31958,15 @@ module.exports = C3Wrapper; .style('fill-opacity', 0) .attr('x', $$.isLegendRight || $$.isLegendInset ? xForLegendRect : -200) .attr('y', $$.isLegendRight || $$.isLegendInset ? -200 : yForLegendRect); - l.append('rect') - .attr("class", CLASS.legendItemTile) + l.append('line') + .attr('class', CLASS.legendItemTile) + .style('stroke', $$.color) .style("pointer-events", "none") - .style('fill', $$.color) - .attr('x', $$.isLegendRight || $$.isLegendInset ? xForLegendText : -200) - .attr('y', $$.isLegendRight || $$.isLegendInset ? -200 : yForLegend) - .attr('width', 10) - .attr('height', 10); + .attr('x1', $$.isLegendRight || $$.isLegendInset ? x1ForLegendTile : -200) + .attr('y1', $$.isLegendRight || $$.isLegendInset ? -200 : yForLegendTile) + .attr('x2', $$.isLegendRight || $$.isLegendInset ? x2ForLegendTile : -200) + .attr('y2', $$.isLegendRight || $$.isLegendInset ? -200 : yForLegendTile) + .attr('stroke-width', config.legend_item_tile_height); // Set background for inset legend background = $$.legend.select('.' + CLASS.legendBackground + ' rect'); @@ -31898,12 +31992,14 @@ module.exports = C3Wrapper; .attr('x', xForLegendRect) .attr('y', yForLegendRect); - tiles = $$.legend.selectAll('rect.' + CLASS.legendItemTile) - .data(targetIds); - (withTransition ? tiles.transition() : tiles) - .style('fill', $$.color) - .attr('x', xForLegend) - .attr('y', yForLegend); + tiles = $$.legend.selectAll('line.' + CLASS.legendItemTile) + .data(targetIds); + (withTransition ? tiles.transition() : tiles) + .style('stroke', $$.color) + .attr('x1', x1ForLegendTile) + .attr('y1', yForLegendTile) + .attr('x2', x2ForLegendTile) + .attr('y2', yForLegendTile); if (background) { (withTransition ? background.transition() : background) @@ -31928,6 +32024,38 @@ module.exports = C3Wrapper; $$.legendHasRendered = true; }; + c3_chart_internal_fn.initTitle = function () { + var $$ = this; + $$.title = $$.svg.append("text") + .text($$.config.title_text) + .attr("class", $$.CLASS.title); + }; + c3_chart_internal_fn.redrawTitle = function () { + var $$ = this; + $$.title + .attr("x", $$.xForTitle.bind($$)) + .attr("y", $$.yForTitle.bind($$)); + }; + c3_chart_internal_fn.xForTitle = function () { + var $$ = this, config = $$.config, position = config.title_position || 'left', x; + if (position.indexOf('right') >= 0) { + x = $$.currentWidth - $$.getTextRect($$.title.node().textContent, $$.CLASS.title, $$.title.node()).width - config.title_padding.right; + } else if (position.indexOf('center') >= 0) { + x = ($$.currentWidth - $$.getTextRect($$.title.node().textContent, $$.CLASS.title, $$.title.node()).width) / 2; + } else { // left + x = config.title_padding.left; + } + return x; + }; + c3_chart_internal_fn.yForTitle = function () { + var $$ = this; + return $$.config.title_padding.top + $$.getTextRect($$.title.node().textContent, $$.CLASS.title, $$.title.node()).height; + }; + c3_chart_internal_fn.getTitlePadding = function() { + var $$ = this; + return $$.yForTitle() + $$.config.title_padding.bottom; + }; + function Axis(owner) { API.call(this, owner); } @@ -31978,7 +32106,7 @@ module.exports = C3Wrapper; }, axis = c3_axis($$.d3, axisParams).scale(scale).orient(orient); - if ($$.isTimeSeries() && tickValues) { + if ($$.isTimeSeries() && tickValues && typeof tickValues !== "function") { tickValues = tickValues.map(function (v) { return $$.parseDate(v); }); } @@ -32006,17 +32134,16 @@ module.exports = C3Wrapper; } return tickValues; }; - Axis.prototype.getYAxis = function getYAxis(scale, orient, tickFormat, tickValues, withOuterTick, withoutTransition) { - var axisParams = { - withOuterTick: withOuterTick, - withoutTransition: withoutTransition, - }, - $$ = this.owner, - d3 = $$.d3, - config = $$.config, - axis = c3_axis(d3, axisParams).scale(scale).orient(orient).tickFormat(tickFormat); + Axis.prototype.getYAxis = function getYAxis(scale, orient, tickFormat, tickValues, withOuterTick, withoutTransition, withoutRotateTickText) { + var $$ = this.owner, config = $$.config, + axisParams = { + withOuterTick: withOuterTick, + withoutTransition: withoutTransition, + tickTextRotate: withoutRotateTickText ? 0 : config.axis_y_tick_rotate + }, + axis = c3_axis($$.d3, axisParams).scale(scale).orient(orient).tickFormat(tickFormat); if ($$.isTimeSeriesY()) { - axis.ticks(d3.time[config.axis_y_tick_time_value], config.axis_y_tick_time_interval); + axis.ticks($$.d3.time[config.axis_y_tick_time_value], config.axis_y_tick_time_interval); } else { axis.tickValues(tickValues); } @@ -32206,10 +32333,10 @@ module.exports = C3Wrapper; targetsToShow = $$.filterTargetsToShow($$.data.targets); if (id === 'y') { scale = $$.y.copy().domain($$.getYDomain(targetsToShow, 'y')); - axis = this.getYAxis(scale, $$.yOrient, config.axis_y_tick_format, $$.yAxisTickValues, false, true); + axis = this.getYAxis(scale, $$.yOrient, config.axis_y_tick_format, $$.yAxisTickValues, false, true, true); } else if (id === 'y2') { scale = $$.y2.copy().domain($$.getYDomain(targetsToShow, 'y2')); - axis = this.getYAxis(scale, $$.y2Orient, config.axis_y2_tick_format, $$.y2AxisTickValues, false, true); + axis = this.getYAxis(scale, $$.y2Orient, config.axis_y2_tick_format, $$.y2AxisTickValues, false, true, true); } else { scale = $$.x.copy().domain($$.getXDomain(targetsToShow)); axis = this.getXAxis(scale, $$.xOrient, $$.xAxisTickFormat, $$.xAxisTickValues, false, true, true); @@ -32251,14 +32378,15 @@ module.exports = C3Wrapper; .text(this.textForY2AxisLabel.bind(this)); }; Axis.prototype.getPadding = function getPadding(padding, key, defaultValue, domainLength) { - if (!isValue(padding[key])) { + var p = typeof padding === 'number' ? padding : padding[key]; + if (!isValue(p)) { return defaultValue; } if (padding.unit === 'ratio') { return padding[key] * domainLength; } // assume padding is pixels if unit is not specified - return this.convertPixelsToAxisPadding(padding[key], domainLength); + return this.convertPixelsToAxisPadding(p, domainLength); }; Axis.prototype.convertPixelsToAxisPadding = function convertPixelsToAxisPadding(pixels, domainLength) { var $$ = this.owner, @@ -32400,7 +32528,12 @@ module.exports = C3Wrapper; c3_chart_internal_fn.updateAngle = function (d) { var $$ = this, config = $$.config, found = false, index = 0, - gMin = config.gauge_min, gMax = config.gauge_max, gTic, gValue; + gMin, gMax, gTic, gValue; + + if (!config) { + return null; + } + $$.pie($$.filterTargetsToShow($$.data.targets)).forEach(function (t) { if (! found && t.data.id === d.data.id) { found = true; @@ -32416,9 +32549,11 @@ module.exports = C3Wrapper; d.endAngle = d.startAngle; } if ($$.isGaugeType(d.data)) { - gTic = (Math.PI) / (gMax - gMin); + gMin = config.gauge_min; + gMax = config.gauge_max; + gTic = (Math.PI * (config.gauge_fullCircle ? 2 : 1)) / (gMax - gMin); gValue = d.value < gMin ? 0 : d.value < gMax ? d.value - gMin : (gMax - gMin); - d.startAngle = -1 * (Math.PI / 2); + d.startAngle = config.gauge_startingAngle; d.endAngle = d.startAngle + gTic * gValue; } return found ? d : null; @@ -32453,15 +32588,20 @@ module.exports = C3Wrapper; c3_chart_internal_fn.transformForArcLabel = function (d) { - var $$ = this, + var $$ = this, config = $$.config, updated = $$.updateAngle(d), c, x, y, h, ratio, translate = ""; if (updated && !$$.hasType('gauge')) { c = this.svgArc.centroid(updated); x = isNaN(c[0]) ? 0 : c[0]; y = isNaN(c[1]) ? 0 : c[1]; h = Math.sqrt(x * x + y * y); - // TODO: ratio should be an option? - ratio = $$.radius && h ? (36 / $$.radius > 0.375 ? 1.175 - 36 / $$.radius : 0.8) * $$.radius / h : 0; + if ($$.hasType('donut') && config.donut_label_ratio) { + ratio = isFunction(config.donut_label_ratio) ? config.donut_label_ratio(d, $$.radius, h) : config.donut_label_ratio; + } else if ($$.hasType('pie') && config.pie_label_ratio) { + ratio = isFunction(config.pie_label_ratio) ? config.pie_label_ratio(d, $$.radius, h) : config.pie_label_ratio; + } else { + ratio = $$.radius && h ? (36 / $$.radius > 0.375 ? 1.175 - 36 / $$.radius : 0.8) * $$.radius / h : 0; + } translate = "translate(" + (x * ratio) + ',' + (y * ratio) + ")"; } return translate; @@ -32469,7 +32609,8 @@ module.exports = C3Wrapper; c3_chart_internal_fn.getArcRatio = function (d) { var $$ = this, - whole = $$.hasType('gauge') ? Math.PI : (Math.PI * 2); + config = $$.config, + whole = Math.PI * ($$.hasType('gauge') && !config.gauge_fullCircle ? 1 : 2); return d ? (d.endAngle - d.startAngle) / whole : null; }; @@ -32516,9 +32657,9 @@ module.exports = C3Wrapper; $$.svg.selectAll($$.selectorTargets(targetIds, '.' + CLASS.chartArc)).each(function (d) { if (! $$.shouldExpand(d.data.id)) { return; } $$.d3.select(this).selectAll('path') - .transition().duration(50) + .transition().duration($$.expandDuration(d.data.id)) .attr("d", $$.svgArcExpanded) - .transition().duration(100) + .transition().duration($$.expandDuration(d.data.id) * 2) .attr("d", $$.svgArcExpandedSub) .each(function (d) { if ($$.isDonutType(d.data)) { @@ -32536,15 +32677,34 @@ module.exports = C3Wrapper; targetIds = $$.mapToTargetIds(targetIds); $$.svg.selectAll($$.selectorTargets(targetIds, '.' + CLASS.chartArc)).selectAll('path') - .transition().duration(50) + .transition().duration(function(d) { + return $$.expandDuration(d.data.id); + }) .attr("d", $$.svgArc); $$.svg.selectAll('.' + CLASS.arc) .style("opacity", 1); }; + c3_chart_internal_fn.expandDuration = function (id) { + var $$ = this, config = $$.config; + + if ($$.isDonutType(id)) { + return config.donut_expand_duration; + } else if ($$.isGaugeType(id)) { + return config.gauge_expand_duration; + } else if ($$.isPieType(id)) { + return config.pie_expand_duration; + } else { + return 50; + } + + }; + c3_chart_internal_fn.shouldExpand = function (id) { var $$ = this, config = $$.config; - return ($$.isDonutType(id) && config.donut_expand) || ($$.isGaugeType(id) && config.gauge_expand) || ($$.isPieType(id) && config.pie_expand); + return ($$.isDonutType(id) && config.donut_expand) || + ($$.isGaugeType(id) && config.gauge_expand) || + ($$.isPieType(id) && config.pie_expand); }; c3_chart_internal_fn.shouldShowArcLabel = function () { @@ -32625,7 +32785,7 @@ module.exports = C3Wrapper; .style("opacity", 0) .each(function (d) { if ($$.isGaugeType(d.data)) { - d.startAngle = d.endAngle = -1 * (Math.PI / 2); + d.startAngle = d.endAngle = config.gauge_startingAngle; } this._current = d; }); @@ -32638,18 +32798,22 @@ module.exports = C3Wrapper; return; } updated = $$.updateAngle(d); - arcData = $$.convertToArcData(updated); - // transitions - $$.expandArc(updated.data.id); - $$.api.focus(updated.data.id); - $$.toggleFocusLegend(updated.data.id, true); - $$.config.data_onmouseover(arcData, this); + if (updated) { + arcData = $$.convertToArcData(updated); + // transitions + $$.expandArc(updated.data.id); + $$.api.focus(updated.data.id); + $$.toggleFocusLegend(updated.data.id, true); + $$.config.data_onmouseover(arcData, this); + } } : null) .on('mousemove', config.interaction_enabled ? function (d) { - var updated = $$.updateAngle(d), + var updated = $$.updateAngle(d), arcData, selectedData; + if (updated) { arcData = $$.convertToArcData(updated), selectedData = [arcData]; - $$.showTooltip(selectedData, this); + $$.showTooltip(selectedData, this); + } } : null) .on('mouseout', config.interaction_enabled ? function (d) { var updated, arcData; @@ -32657,19 +32821,25 @@ module.exports = C3Wrapper; return; } updated = $$.updateAngle(d); - arcData = $$.convertToArcData(updated); - // transitions - $$.unexpandArc(updated.data.id); - $$.api.revert(); - $$.revertLegend(); - $$.hideTooltip(); - $$.config.data_onmouseout(arcData, this); + if (updated) { + arcData = $$.convertToArcData(updated); + // transitions + $$.unexpandArc(updated.data.id); + $$.api.revert(); + $$.revertLegend(); + $$.hideTooltip(); + $$.config.data_onmouseout(arcData, this); + } } : null) .on('click', config.interaction_enabled ? function (d, i) { - var updated = $$.updateAngle(d), + var updated = $$.updateAngle(d), arcData; + if (updated) { arcData = $$.convertToArcData(updated); - if ($$.toggleShape) { $$.toggleShape(this, arcData, i); } - $$.config.data_onclick.call($$.api, arcData, this); + if ($$.toggleShape) { + $$.toggleShape(this, arcData, i); + } + $$.config.data_onclick.call($$.api, arcData, this); + } } : null) .each(function () { $$.transiting = true; }) .transition().duration(duration) @@ -32725,8 +32895,8 @@ module.exports = C3Wrapper; .attr("d", function () { var d = { data: [{value: config.gauge_max}], - startAngle: -1 * (Math.PI / 2), - endAngle: Math.PI / 2 + startAngle: config.gauge_startingAngle, + endAngle: -1 * config.gauge_startingAngle }; return $$.getArc(d, true, true); }); @@ -32734,11 +32904,11 @@ module.exports = C3Wrapper; .attr("dy", ".75em") .text(config.gauge_label_show ? config.gauge_units : ''); $$.arcs.select('.' + CLASS.chartArcsGaugeMin) - .attr("dx", -1 * ($$.innerRadius + (($$.radius - $$.innerRadius) / 2)) + "px") + .attr("dx", -1 * ($$.innerRadius + (($$.radius - $$.innerRadius) / (config.gauge_fullCircle ? 1 : 2))) + "px") .attr("dy", "1.2em") .text(config.gauge_label_show ? config.gauge_min : ''); $$.arcs.select('.' + CLASS.chartArcsGaugeMax) - .attr("dx", $$.innerRadius + (($$.radius - $$.innerRadius) / 2) + "px") + .attr("dx", $$.innerRadius + (($$.radius - $$.innerRadius) / (config.gauge_fullCircle ? 1 : 2)) + "px") .attr("dy", "1.2em") .text(config.gauge_label_show ? config.gauge_max : ''); } @@ -32781,16 +32951,23 @@ module.exports = C3Wrapper; $$.mainRegion = $$.main.select('.' + CLASS.regions).selectAll('.' + CLASS.region) .data(config.regions); $$.mainRegion.enter().append('g') - .attr('class', $$.classRegion.bind($$)) .append('rect') .style("fill-opacity", 0); + $$.mainRegion + .attr('class', $$.classRegion.bind($$)); $$.mainRegion.exit().transition().duration(duration) .style("opacity", 0) .remove(); }; c3_chart_internal_fn.redrawRegion = function (withTransition) { var $$ = this, - regions = $$.mainRegion.selectAll('rect'), + regions = $$.mainRegion.selectAll('rect').each(function () { + // data is binded to g and it's not transferred to rect (child node) automatically, + // then data of each rect has to be updated manually. + // TODO: there should be more efficient way to solve this? + var parentData = $$.d3.select(this.parentNode).datum(); + $$.d3.select(this).datum(parentData); + }), x = $$.regionX.bind($$), y = $$.regionY.bind($$), w = $$.regionWidth.bind($$), @@ -32950,7 +33127,7 @@ module.exports = C3Wrapper; }; c3_chart_internal_fn.unselectPoint = function (target, d, i) { var $$ = this; - $$.config.data_onunselected(d, target.node()); + $$.config.data_onunselected.call($$.api, d, target.node()); // remove selected-circle from low layer g $$.main.select('.' + CLASS.selectedCircles + $$.getTargetSelectorSuffix(d.id)).selectAll('.' + CLASS.selectedCircle + '-' + i) .transition().duration(100).attr('r', 0) @@ -32962,14 +33139,18 @@ module.exports = C3Wrapper; c3_chart_internal_fn.selectPath = function (target, d) { var $$ = this; $$.config.data_onselected.call($$, d, target.node()); - target.transition().duration(100) - .style("fill", function () { return $$.d3.rgb($$.color(d)).brighter(0.75); }); + if ($$.config.interaction_brighten) { + target.transition().duration(100) + .style("fill", function () { return $$.d3.rgb($$.color(d)).brighter(0.75); }); + } }; c3_chart_internal_fn.unselectPath = function (target, d) { var $$ = this; $$.config.data_onunselected.call($$, d, target.node()); - target.transition().duration(100) - .style("fill", function () { return $$.color(d); }); + if ($$.config.interaction_brighten) { + target.transition().duration(100) + .style("fill", function () { return $$.color(d); }); + } }; c3_chart_internal_fn.togglePath = function (selected, target, d, i) { selected ? this.selectPath(target, d, i) : this.unselectPath(target, d, i); @@ -33019,9 +33200,10 @@ module.exports = C3Wrapper; }; c3_chart_internal_fn.initSubchart = function () { var $$ = this, config = $$.config, - context = $$.context = $$.svg.append("g").attr("transform", $$.getTranslate('context')); + context = $$.context = $$.svg.append("g").attr("transform", $$.getTranslate('context')), + visibility = config.subchart_show ? 'visible' : 'hidden'; - context.style('visibility', config.subchart_show ? 'visible' : 'hidden'); + context.style('visibility', visibility); // Define g for chart area context.append('g') @@ -33047,7 +33229,8 @@ module.exports = C3Wrapper; $$.axes.subx = context.append("g") .attr("class", CLASS.axisX) .attr("transform", $$.getTranslate('subx')) - .attr("clip-path", config.axis_rotated ? "" : $$.clipPathForXAxis); + .attr("clip-path", config.axis_rotated ? "" : $$.clipPathForXAxis) + .style("visibility", config.subchart_axis_x_show ? visibility : 'hidden'); }; c3_chart_internal_fn.updateTargetsForSubchart = function (targets) { var $$ = this, context = $$.context, config = $$.config, @@ -33104,7 +33287,7 @@ module.exports = C3Wrapper; .remove(); }; c3_chart_internal_fn.redrawBarForSubchart = function (drawBarOnSub, withTransition, duration) { - (withTransition ? this.contextBar.transition().duration(duration) : this.contextBar) + (withTransition ? this.contextBar.transition(Math.random().toString()).duration(duration) : this.contextBar) .attr('d', drawBarOnSub) .style('opacity', 1); }; @@ -33122,7 +33305,7 @@ module.exports = C3Wrapper; .remove(); }; c3_chart_internal_fn.redrawLineForSubchart = function (drawLineOnSub, withTransition, duration) { - (withTransition ? this.contextLine.transition().duration(duration) : this.contextLine) + (withTransition ? this.contextLine.transition(Math.random().toString()).duration(duration) : this.contextLine) .attr("d", drawLineOnSub) .style('opacity', 1); }; @@ -33141,7 +33324,7 @@ module.exports = C3Wrapper; .remove(); }; c3_chart_internal_fn.redrawAreaForSubchart = function (drawAreaOnSub, withTransition, duration) { - (withTransition ? this.contextArea.transition().duration(duration) : this.contextArea) + (withTransition ? this.contextArea.transition(Math.random().toString()).duration(duration) : this.contextArea) .attr("d", drawAreaOnSub) .style("fill", this.color) .style("opacity", this.orgAreaOpacity); @@ -33241,12 +33424,18 @@ module.exports = C3Wrapper; return [extent[0], Math.max($$.getMaxDataCount() / extent[1], extent[1])]; }; $$.zoom.updateScaleExtent = function () { - var ratio = diffDomain($$.x.orgDomain()) / diffDomain($$.orgXDomain), + var ratio = diffDomain($$.x.orgDomain()) / diffDomain($$.getZoomDomain()), extent = this.orgScaleExtent(); this.scaleExtent([extent[0] * ratio, extent[1] * ratio]); return this; }; }; + c3_chart_internal_fn.getZoomDomain = function () { + var $$ = this, config = $$.config, d3 = $$.d3, + min = d3.min([$$.orgXDomain[0], config.zoom_x_min]), + max = d3.max([$$.orgXDomain[1], config.zoom_x_max]); + return [min, max]; + }; c3_chart_internal_fn.updateZoom = function () { var $$ = this, z = $$.config.zoom_enabled ? $$.zoom : function () {}; $$.main.select('.' + CLASS.zoomRect).call(z).on("dblclick.zoom", null); @@ -33416,6 +33605,7 @@ module.exports = C3Wrapper; defocused: 'c3-defocused', region: 'c3-region', regions: 'c3-regions', + title: 'c3-title', tooltipContainer: 'c3-tooltip-container', tooltip: 'c3-tooltip', tooltipName: 'c3-tooltip-name', @@ -33588,10 +33778,10 @@ module.exports = C3Wrapper; return d[1] - d[0]; }, isEmpty = c3_chart_internal_fn.isEmpty = function (o) { - return !o || (isString(o) && o.length === 0) || (typeof o === 'object' && Object.keys(o).length === 0); + return typeof o === 'undefined' || o === null || (isString(o) && o.length === 0) || (typeof o === 'object' && Object.keys(o).length === 0); }, notEmpty = c3_chart_internal_fn.notEmpty = function (o) { - return Object.keys(o).length > 0; + return !c3_chart_internal_fn.isEmpty(o); }, getOption = c3_chart_internal_fn.getOption = function (options, key, defaultValue) { return isDefined(options[key]) ? options[key] : defaultValue; @@ -33603,6 +33793,9 @@ module.exports = C3Wrapper; }); return found; }, + sanitise = c3_chart_internal_fn.sanitise = function (str) { + return typeof str === 'string' ? str.replace(//g, '>') : str; + }, getPathBox = c3_chart_internal_fn.getPathBox = function (path) { var box = path.getBoundingClientRect(), items = [path.pathSegList.getItem(0), path.pathSegList.getItem(1)], @@ -33745,12 +33938,48 @@ module.exports = C3Wrapper; $$.redraw({withUpdateXDomain: true}); }; + c3_chart_fn.zoom.max = function (max) { + var $$ = this.internal, config = $$.config, d3 = $$.d3; + if (max === 0 || max) { + config.zoom_x_max = d3.max([$$.orgXDomain[1], max]); + } + else { + return config.zoom_x_max; + } + }; + + c3_chart_fn.zoom.min = function (min) { + var $$ = this.internal, config = $$.config, d3 = $$.d3; + if (min === 0 || min) { + config.zoom_x_min = d3.min([$$.orgXDomain[0], min]); + } + else { + return config.zoom_x_min; + } + }; + + c3_chart_fn.zoom.range = function (range) { + if (arguments.length) { + if (isDefined(range.max)) { this.domain.max(range.max); } + if (isDefined(range.min)) { this.domain.min(range.min); } + } else { + return { + max: this.domain.max(), + min: this.domain.min() + }; + } + }; + c3_chart_fn.load = function (args) { var $$ = this.internal, config = $$.config; // update xs if specified if (args.xs) { $$.addXs(args.xs); } + // update names if exists + if ('names' in args) { + c3_chart_fn.data.names.bind(this)(args.names); + } // update classes if exists if ('classes' in args) { Object.keys(args.classes).forEach(function (id) { @@ -34007,7 +34236,7 @@ module.exports = C3Wrapper; translateX = diffDomain(domain) / 2; } } - } else if (flow.orgDataCount === 1 || flowStart.x === flowEnd.x) { + } else if (flow.orgDataCount === 1 || (flowStart && flowStart.x) === (flowEnd && flowEnd.x)) { translateX = $$.x(orgDomain[0]) - $$.x(domain[0]); } else { if ($$.isTimeSeries()) { @@ -34019,9 +34248,7 @@ module.exports = C3Wrapper; scaleX = (diffDomain(orgDomain) / diffDomain(domain)); transform = 'translate(' + translateX + ',0) scale(' + scaleX + ',1)'; - // hide tooltip $$.hideXGridFocus(); - $$.hideTooltip(); d3.transition().ease('linear').duration(durationForFlow).each(function () { wait.add($$.axes.x.transition().call($$.xAxis)); @@ -34407,7 +34634,22 @@ module.exports = C3Wrapper; var $$ = this.internal; window.clearInterval($$.intervalForObserveInserted); - window.onresize = null; + + if ($$.resizeTimeout !== undefined) { + window.clearTimeout($$.resizeTimeout); + } + + if (window.detachEvent) { + window.detachEvent('onresize', $$.resizeFunction); + } else if (window.removeEventListener) { + window.removeEventListener('resize', $$.resizeFunction); + } else { + var wrapper = window.onresize; + // check if no one else removed our wrapper and remove our resizeFunction from it + if (wrapper && wrapper.add && wrapper.remove) { + wrapper.remove($$.resizeFunction); + } + } $$.selectChart.classed('c3', false).html(""); @@ -34449,10 +34691,14 @@ module.exports = C3Wrapper; // emulate mouse events to show $$.dispatchEvent('mouseover', index, mouse); $$.dispatchEvent('mousemove', index, mouse); + + $$.config.tooltip_onshow.call($$, args.data); }; c3_chart_fn.tooltip.hide = function () { // TODO: get target data by checking the state of focus this.internal.dispatchEvent('mouseout', 0); + + this.internal.config.tooltip_onhide.call(this); }; // Features: @@ -34795,6 +35041,8 @@ module.exports = C3Wrapper; return ua.indexOf('Chrome') >= 0; }; + /* jshint ignore:start */ + // PhantomJS doesn't have support for Function.prototype.bind, which has caused confusion. Use // this polyfill to avoid the confusion. // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind#Polyfill @@ -34821,8 +35069,823 @@ module.exports = C3Wrapper; }; } + //SVGPathSeg API polyfill + //https://github.com/progers/pathseg + // + //This is a drop-in replacement for the SVGPathSeg and SVGPathSegList APIs that were removed from + //SVG2 (https://lists.w3.org/Archives/Public/www-svg/2015Jun/0044.html), including the latest spec + //changes which were implemented in Firefox 43 and Chrome 46. + //Chrome 48 removes these APIs, so this polyfill is required. + + (function() { "use strict"; + if (!("SVGPathSeg" in window)) { + // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-InterfaceSVGPathSeg + window.SVGPathSeg = function(type, typeAsLetter, owningPathSegList) { + this.pathSegType = type; + this.pathSegTypeAsLetter = typeAsLetter; + this._owningPathSegList = owningPathSegList; + } + + SVGPathSeg.PATHSEG_UNKNOWN = 0; + SVGPathSeg.PATHSEG_CLOSEPATH = 1; + SVGPathSeg.PATHSEG_MOVETO_ABS = 2; + SVGPathSeg.PATHSEG_MOVETO_REL = 3; + SVGPathSeg.PATHSEG_LINETO_ABS = 4; + SVGPathSeg.PATHSEG_LINETO_REL = 5; + SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS = 6; + SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL = 7; + SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS = 8; + SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL = 9; + SVGPathSeg.PATHSEG_ARC_ABS = 10; + SVGPathSeg.PATHSEG_ARC_REL = 11; + SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS = 12; + SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL = 13; + SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS = 14; + SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL = 15; + SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS = 16; + SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL = 17; + SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS = 18; + SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL = 19; + + // Notify owning PathSegList on any changes so they can be synchronized back to the path element. + SVGPathSeg.prototype._segmentChanged = function() { + if (this._owningPathSegList) + this._owningPathSegList.segmentChanged(this); + } + + window.SVGPathSegClosePath = function(owningPathSegList) { + SVGPathSeg.call(this, SVGPathSeg.PATHSEG_CLOSEPATH, "z", owningPathSegList); + } + SVGPathSegClosePath.prototype = Object.create(SVGPathSeg.prototype); + SVGPathSegClosePath.prototype.toString = function() { return "[object SVGPathSegClosePath]"; } + SVGPathSegClosePath.prototype._asPathString = function() { return this.pathSegTypeAsLetter; } + SVGPathSegClosePath.prototype.clone = function() { return new SVGPathSegClosePath(undefined); } + + window.SVGPathSegMovetoAbs = function(owningPathSegList, x, y) { + SVGPathSeg.call(this, SVGPathSeg.PATHSEG_MOVETO_ABS, "M", owningPathSegList); + this._x = x; + this._y = y; + } + SVGPathSegMovetoAbs.prototype = Object.create(SVGPathSeg.prototype); + SVGPathSegMovetoAbs.prototype.toString = function() { return "[object SVGPathSegMovetoAbs]"; } + SVGPathSegMovetoAbs.prototype._asPathString = function() { return this.pathSegTypeAsLetter + " " + this._x + " " + this._y; } + SVGPathSegMovetoAbs.prototype.clone = function() { return new SVGPathSegMovetoAbs(undefined, this._x, this._y); } + Object.defineProperty(SVGPathSegMovetoAbs.prototype, "x", { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true }); + Object.defineProperty(SVGPathSegMovetoAbs.prototype, "y", { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true }); + + window.SVGPathSegMovetoRel = function(owningPathSegList, x, y) { + SVGPathSeg.call(this, SVGPathSeg.PATHSEG_MOVETO_REL, "m", owningPathSegList); + this._x = x; + this._y = y; + } + SVGPathSegMovetoRel.prototype = Object.create(SVGPathSeg.prototype); + SVGPathSegMovetoRel.prototype.toString = function() { return "[object SVGPathSegMovetoRel]"; } + SVGPathSegMovetoRel.prototype._asPathString = function() { return this.pathSegTypeAsLetter + " " + this._x + " " + this._y; } + SVGPathSegMovetoRel.prototype.clone = function() { return new SVGPathSegMovetoRel(undefined, this._x, this._y); } + Object.defineProperty(SVGPathSegMovetoRel.prototype, "x", { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true }); + Object.defineProperty(SVGPathSegMovetoRel.prototype, "y", { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true }); + + window.SVGPathSegLinetoAbs = function(owningPathSegList, x, y) { + SVGPathSeg.call(this, SVGPathSeg.PATHSEG_LINETO_ABS, "L", owningPathSegList); + this._x = x; + this._y = y; + } + SVGPathSegLinetoAbs.prototype = Object.create(SVGPathSeg.prototype); + SVGPathSegLinetoAbs.prototype.toString = function() { return "[object SVGPathSegLinetoAbs]"; } + SVGPathSegLinetoAbs.prototype._asPathString = function() { return this.pathSegTypeAsLetter + " " + this._x + " " + this._y; } + SVGPathSegLinetoAbs.prototype.clone = function() { return new SVGPathSegLinetoAbs(undefined, this._x, this._y); } + Object.defineProperty(SVGPathSegLinetoAbs.prototype, "x", { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true }); + Object.defineProperty(SVGPathSegLinetoAbs.prototype, "y", { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true }); + + window.SVGPathSegLinetoRel = function(owningPathSegList, x, y) { + SVGPathSeg.call(this, SVGPathSeg.PATHSEG_LINETO_REL, "l", owningPathSegList); + this._x = x; + this._y = y; + } + SVGPathSegLinetoRel.prototype = Object.create(SVGPathSeg.prototype); + SVGPathSegLinetoRel.prototype.toString = function() { return "[object SVGPathSegLinetoRel]"; } + SVGPathSegLinetoRel.prototype._asPathString = function() { return this.pathSegTypeAsLetter + " " + this._x + " " + this._y; } + SVGPathSegLinetoRel.prototype.clone = function() { return new SVGPathSegLinetoRel(undefined, this._x, this._y); } + Object.defineProperty(SVGPathSegLinetoRel.prototype, "x", { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true }); + Object.defineProperty(SVGPathSegLinetoRel.prototype, "y", { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true }); + + window.SVGPathSegCurvetoCubicAbs = function(owningPathSegList, x, y, x1, y1, x2, y2) { + SVGPathSeg.call(this, SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS, "C", owningPathSegList); + this._x = x; + this._y = y; + this._x1 = x1; + this._y1 = y1; + this._x2 = x2; + this._y2 = y2; + } + SVGPathSegCurvetoCubicAbs.prototype = Object.create(SVGPathSeg.prototype); + SVGPathSegCurvetoCubicAbs.prototype.toString = function() { return "[object SVGPathSegCurvetoCubicAbs]"; } + SVGPathSegCurvetoCubicAbs.prototype._asPathString = function() { return this.pathSegTypeAsLetter + " " + this._x1 + " " + this._y1 + " " + this._x2 + " " + this._y2 + " " + this._x + " " + this._y; } + SVGPathSegCurvetoCubicAbs.prototype.clone = function() { return new SVGPathSegCurvetoCubicAbs(undefined, this._x, this._y, this._x1, this._y1, this._x2, this._y2); } + Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype, "x", { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true }); + Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype, "y", { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true }); + Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype, "x1", { get: function() { return this._x1; }, set: function(x1) { this._x1 = x1; this._segmentChanged(); }, enumerable: true }); + Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype, "y1", { get: function() { return this._y1; }, set: function(y1) { this._y1 = y1; this._segmentChanged(); }, enumerable: true }); + Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype, "x2", { get: function() { return this._x2; }, set: function(x2) { this._x2 = x2; this._segmentChanged(); }, enumerable: true }); + Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype, "y2", { get: function() { return this._y2; }, set: function(y2) { this._y2 = y2; this._segmentChanged(); }, enumerable: true }); + + window.SVGPathSegCurvetoCubicRel = function(owningPathSegList, x, y, x1, y1, x2, y2) { + SVGPathSeg.call(this, SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL, "c", owningPathSegList); + this._x = x; + this._y = y; + this._x1 = x1; + this._y1 = y1; + this._x2 = x2; + this._y2 = y2; + } + SVGPathSegCurvetoCubicRel.prototype = Object.create(SVGPathSeg.prototype); + SVGPathSegCurvetoCubicRel.prototype.toString = function() { return "[object SVGPathSegCurvetoCubicRel]"; } + SVGPathSegCurvetoCubicRel.prototype._asPathString = function() { return this.pathSegTypeAsLetter + " " + this._x1 + " " + this._y1 + " " + this._x2 + " " + this._y2 + " " + this._x + " " + this._y; } + SVGPathSegCurvetoCubicRel.prototype.clone = function() { return new SVGPathSegCurvetoCubicRel(undefined, this._x, this._y, this._x1, this._y1, this._x2, this._y2); } + Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype, "x", { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true }); + Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype, "y", { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true }); + Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype, "x1", { get: function() { return this._x1; }, set: function(x1) { this._x1 = x1; this._segmentChanged(); }, enumerable: true }); + Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype, "y1", { get: function() { return this._y1; }, set: function(y1) { this._y1 = y1; this._segmentChanged(); }, enumerable: true }); + Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype, "x2", { get: function() { return this._x2; }, set: function(x2) { this._x2 = x2; this._segmentChanged(); }, enumerable: true }); + Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype, "y2", { get: function() { return this._y2; }, set: function(y2) { this._y2 = y2; this._segmentChanged(); }, enumerable: true }); + + window.SVGPathSegCurvetoQuadraticAbs = function(owningPathSegList, x, y, x1, y1) { + SVGPathSeg.call(this, SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS, "Q", owningPathSegList); + this._x = x; + this._y = y; + this._x1 = x1; + this._y1 = y1; + } + SVGPathSegCurvetoQuadraticAbs.prototype = Object.create(SVGPathSeg.prototype); + SVGPathSegCurvetoQuadraticAbs.prototype.toString = function() { return "[object SVGPathSegCurvetoQuadraticAbs]"; } + SVGPathSegCurvetoQuadraticAbs.prototype._asPathString = function() { return this.pathSegTypeAsLetter + " " + this._x1 + " " + this._y1 + " " + this._x + " " + this._y; } + SVGPathSegCurvetoQuadraticAbs.prototype.clone = function() { return new SVGPathSegCurvetoQuadraticAbs(undefined, this._x, this._y, this._x1, this._y1); } + Object.defineProperty(SVGPathSegCurvetoQuadraticAbs.prototype, "x", { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true }); + Object.defineProperty(SVGPathSegCurvetoQuadraticAbs.prototype, "y", { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true }); + Object.defineProperty(SVGPathSegCurvetoQuadraticAbs.prototype, "x1", { get: function() { return this._x1; }, set: function(x1) { this._x1 = x1; this._segmentChanged(); }, enumerable: true }); + Object.defineProperty(SVGPathSegCurvetoQuadraticAbs.prototype, "y1", { get: function() { return this._y1; }, set: function(y1) { this._y1 = y1; this._segmentChanged(); }, enumerable: true }); + + window.SVGPathSegCurvetoQuadraticRel = function(owningPathSegList, x, y, x1, y1) { + SVGPathSeg.call(this, SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL, "q", owningPathSegList); + this._x = x; + this._y = y; + this._x1 = x1; + this._y1 = y1; + } + SVGPathSegCurvetoQuadraticRel.prototype = Object.create(SVGPathSeg.prototype); + SVGPathSegCurvetoQuadraticRel.prototype.toString = function() { return "[object SVGPathSegCurvetoQuadraticRel]"; } + SVGPathSegCurvetoQuadraticRel.prototype._asPathString = function() { return this.pathSegTypeAsLetter + " " + this._x1 + " " + this._y1 + " " + this._x + " " + this._y; } + SVGPathSegCurvetoQuadraticRel.prototype.clone = function() { return new SVGPathSegCurvetoQuadraticRel(undefined, this._x, this._y, this._x1, this._y1); } + Object.defineProperty(SVGPathSegCurvetoQuadraticRel.prototype, "x", { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true }); + Object.defineProperty(SVGPathSegCurvetoQuadraticRel.prototype, "y", { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true }); + Object.defineProperty(SVGPathSegCurvetoQuadraticRel.prototype, "x1", { get: function() { return this._x1; }, set: function(x1) { this._x1 = x1; this._segmentChanged(); }, enumerable: true }); + Object.defineProperty(SVGPathSegCurvetoQuadraticRel.prototype, "y1", { get: function() { return this._y1; }, set: function(y1) { this._y1 = y1; this._segmentChanged(); }, enumerable: true }); + + window.SVGPathSegArcAbs = function(owningPathSegList, x, y, r1, r2, angle, largeArcFlag, sweepFlag) { + SVGPathSeg.call(this, SVGPathSeg.PATHSEG_ARC_ABS, "A", owningPathSegList); + this._x = x; + this._y = y; + this._r1 = r1; + this._r2 = r2; + this._angle = angle; + this._largeArcFlag = largeArcFlag; + this._sweepFlag = sweepFlag; + } + SVGPathSegArcAbs.prototype = Object.create(SVGPathSeg.prototype); + SVGPathSegArcAbs.prototype.toString = function() { return "[object SVGPathSegArcAbs]"; } + SVGPathSegArcAbs.prototype._asPathString = function() { return this.pathSegTypeAsLetter + " " + this._r1 + " " + this._r2 + " " + this._angle + " " + (this._largeArcFlag ? "1" : "0") + " " + (this._sweepFlag ? "1" : "0") + " " + this._x + " " + this._y; } + SVGPathSegArcAbs.prototype.clone = function() { return new SVGPathSegArcAbs(undefined, this._x, this._y, this._r1, this._r2, this._angle, this._largeArcFlag, this._sweepFlag); } + Object.defineProperty(SVGPathSegArcAbs.prototype, "x", { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true }); + Object.defineProperty(SVGPathSegArcAbs.prototype, "y", { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true }); + Object.defineProperty(SVGPathSegArcAbs.prototype, "r1", { get: function() { return this._r1; }, set: function(r1) { this._r1 = r1; this._segmentChanged(); }, enumerable: true }); + Object.defineProperty(SVGPathSegArcAbs.prototype, "r2", { get: function() { return this._r2; }, set: function(r2) { this._r2 = r2; this._segmentChanged(); }, enumerable: true }); + Object.defineProperty(SVGPathSegArcAbs.prototype, "angle", { get: function() { return this._angle; }, set: function(angle) { this._angle = angle; this._segmentChanged(); }, enumerable: true }); + Object.defineProperty(SVGPathSegArcAbs.prototype, "largeArcFlag", { get: function() { return this._largeArcFlag; }, set: function(largeArcFlag) { this._largeArcFlag = largeArcFlag; this._segmentChanged(); }, enumerable: true }); + Object.defineProperty(SVGPathSegArcAbs.prototype, "sweepFlag", { get: function() { return this._sweepFlag; }, set: function(sweepFlag) { this._sweepFlag = sweepFlag; this._segmentChanged(); }, enumerable: true }); + + window.SVGPathSegArcRel = function(owningPathSegList, x, y, r1, r2, angle, largeArcFlag, sweepFlag) { + SVGPathSeg.call(this, SVGPathSeg.PATHSEG_ARC_REL, "a", owningPathSegList); + this._x = x; + this._y = y; + this._r1 = r1; + this._r2 = r2; + this._angle = angle; + this._largeArcFlag = largeArcFlag; + this._sweepFlag = sweepFlag; + } + SVGPathSegArcRel.prototype = Object.create(SVGPathSeg.prototype); + SVGPathSegArcRel.prototype.toString = function() { return "[object SVGPathSegArcRel]"; } + SVGPathSegArcRel.prototype._asPathString = function() { return this.pathSegTypeAsLetter + " " + this._r1 + " " + this._r2 + " " + this._angle + " " + (this._largeArcFlag ? "1" : "0") + " " + (this._sweepFlag ? "1" : "0") + " " + this._x + " " + this._y; } + SVGPathSegArcRel.prototype.clone = function() { return new SVGPathSegArcRel(undefined, this._x, this._y, this._r1, this._r2, this._angle, this._largeArcFlag, this._sweepFlag); } + Object.defineProperty(SVGPathSegArcRel.prototype, "x", { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true }); + Object.defineProperty(SVGPathSegArcRel.prototype, "y", { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true }); + Object.defineProperty(SVGPathSegArcRel.prototype, "r1", { get: function() { return this._r1; }, set: function(r1) { this._r1 = r1; this._segmentChanged(); }, enumerable: true }); + Object.defineProperty(SVGPathSegArcRel.prototype, "r2", { get: function() { return this._r2; }, set: function(r2) { this._r2 = r2; this._segmentChanged(); }, enumerable: true }); + Object.defineProperty(SVGPathSegArcRel.prototype, "angle", { get: function() { return this._angle; }, set: function(angle) { this._angle = angle; this._segmentChanged(); }, enumerable: true }); + Object.defineProperty(SVGPathSegArcRel.prototype, "largeArcFlag", { get: function() { return this._largeArcFlag; }, set: function(largeArcFlag) { this._largeArcFlag = largeArcFlag; this._segmentChanged(); }, enumerable: true }); + Object.defineProperty(SVGPathSegArcRel.prototype, "sweepFlag", { get: function() { return this._sweepFlag; }, set: function(sweepFlag) { this._sweepFlag = sweepFlag; this._segmentChanged(); }, enumerable: true }); + + window.SVGPathSegLinetoHorizontalAbs = function(owningPathSegList, x) { + SVGPathSeg.call(this, SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS, "H", owningPathSegList); + this._x = x; + } + SVGPathSegLinetoHorizontalAbs.prototype = Object.create(SVGPathSeg.prototype); + SVGPathSegLinetoHorizontalAbs.prototype.toString = function() { return "[object SVGPathSegLinetoHorizontalAbs]"; } + SVGPathSegLinetoHorizontalAbs.prototype._asPathString = function() { return this.pathSegTypeAsLetter + " " + this._x; } + SVGPathSegLinetoHorizontalAbs.prototype.clone = function() { return new SVGPathSegLinetoHorizontalAbs(undefined, this._x); } + Object.defineProperty(SVGPathSegLinetoHorizontalAbs.prototype, "x", { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true }); + + window.SVGPathSegLinetoHorizontalRel = function(owningPathSegList, x) { + SVGPathSeg.call(this, SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL, "h", owningPathSegList); + this._x = x; + } + SVGPathSegLinetoHorizontalRel.prototype = Object.create(SVGPathSeg.prototype); + SVGPathSegLinetoHorizontalRel.prototype.toString = function() { return "[object SVGPathSegLinetoHorizontalRel]"; } + SVGPathSegLinetoHorizontalRel.prototype._asPathString = function() { return this.pathSegTypeAsLetter + " " + this._x; } + SVGPathSegLinetoHorizontalRel.prototype.clone = function() { return new SVGPathSegLinetoHorizontalRel(undefined, this._x); } + Object.defineProperty(SVGPathSegLinetoHorizontalRel.prototype, "x", { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true }); + + window.SVGPathSegLinetoVerticalAbs = function(owningPathSegList, y) { + SVGPathSeg.call(this, SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS, "V", owningPathSegList); + this._y = y; + } + SVGPathSegLinetoVerticalAbs.prototype = Object.create(SVGPathSeg.prototype); + SVGPathSegLinetoVerticalAbs.prototype.toString = function() { return "[object SVGPathSegLinetoVerticalAbs]"; } + SVGPathSegLinetoVerticalAbs.prototype._asPathString = function() { return this.pathSegTypeAsLetter + " " + this._y; } + SVGPathSegLinetoVerticalAbs.prototype.clone = function() { return new SVGPathSegLinetoVerticalAbs(undefined, this._y); } + Object.defineProperty(SVGPathSegLinetoVerticalAbs.prototype, "y", { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true }); + + window.SVGPathSegLinetoVerticalRel = function(owningPathSegList, y) { + SVGPathSeg.call(this, SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL, "v", owningPathSegList); + this._y = y; + } + SVGPathSegLinetoVerticalRel.prototype = Object.create(SVGPathSeg.prototype); + SVGPathSegLinetoVerticalRel.prototype.toString = function() { return "[object SVGPathSegLinetoVerticalRel]"; } + SVGPathSegLinetoVerticalRel.prototype._asPathString = function() { return this.pathSegTypeAsLetter + " " + this._y; } + SVGPathSegLinetoVerticalRel.prototype.clone = function() { return new SVGPathSegLinetoVerticalRel(undefined, this._y); } + Object.defineProperty(SVGPathSegLinetoVerticalRel.prototype, "y", { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true }); + + window.SVGPathSegCurvetoCubicSmoothAbs = function(owningPathSegList, x, y, x2, y2) { + SVGPathSeg.call(this, SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS, "S", owningPathSegList); + this._x = x; + this._y = y; + this._x2 = x2; + this._y2 = y2; + } + SVGPathSegCurvetoCubicSmoothAbs.prototype = Object.create(SVGPathSeg.prototype); + SVGPathSegCurvetoCubicSmoothAbs.prototype.toString = function() { return "[object SVGPathSegCurvetoCubicSmoothAbs]"; } + SVGPathSegCurvetoCubicSmoothAbs.prototype._asPathString = function() { return this.pathSegTypeAsLetter + " " + this._x2 + " " + this._y2 + " " + this._x + " " + this._y; } + SVGPathSegCurvetoCubicSmoothAbs.prototype.clone = function() { return new SVGPathSegCurvetoCubicSmoothAbs(undefined, this._x, this._y, this._x2, this._y2); } + Object.defineProperty(SVGPathSegCurvetoCubicSmoothAbs.prototype, "x", { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true }); + Object.defineProperty(SVGPathSegCurvetoCubicSmoothAbs.prototype, "y", { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true }); + Object.defineProperty(SVGPathSegCurvetoCubicSmoothAbs.prototype, "x2", { get: function() { return this._x2; }, set: function(x2) { this._x2 = x2; this._segmentChanged(); }, enumerable: true }); + Object.defineProperty(SVGPathSegCurvetoCubicSmoothAbs.prototype, "y2", { get: function() { return this._y2; }, set: function(y2) { this._y2 = y2; this._segmentChanged(); }, enumerable: true }); + + window.SVGPathSegCurvetoCubicSmoothRel = function(owningPathSegList, x, y, x2, y2) { + SVGPathSeg.call(this, SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL, "s", owningPathSegList); + this._x = x; + this._y = y; + this._x2 = x2; + this._y2 = y2; + } + SVGPathSegCurvetoCubicSmoothRel.prototype = Object.create(SVGPathSeg.prototype); + SVGPathSegCurvetoCubicSmoothRel.prototype.toString = function() { return "[object SVGPathSegCurvetoCubicSmoothRel]"; } + SVGPathSegCurvetoCubicSmoothRel.prototype._asPathString = function() { return this.pathSegTypeAsLetter + " " + this._x2 + " " + this._y2 + " " + this._x + " " + this._y; } + SVGPathSegCurvetoCubicSmoothRel.prototype.clone = function() { return new SVGPathSegCurvetoCubicSmoothRel(undefined, this._x, this._y, this._x2, this._y2); } + Object.defineProperty(SVGPathSegCurvetoCubicSmoothRel.prototype, "x", { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true }); + Object.defineProperty(SVGPathSegCurvetoCubicSmoothRel.prototype, "y", { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true }); + Object.defineProperty(SVGPathSegCurvetoCubicSmoothRel.prototype, "x2", { get: function() { return this._x2; }, set: function(x2) { this._x2 = x2; this._segmentChanged(); }, enumerable: true }); + Object.defineProperty(SVGPathSegCurvetoCubicSmoothRel.prototype, "y2", { get: function() { return this._y2; }, set: function(y2) { this._y2 = y2; this._segmentChanged(); }, enumerable: true }); + + window.SVGPathSegCurvetoQuadraticSmoothAbs = function(owningPathSegList, x, y) { + SVGPathSeg.call(this, SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS, "T", owningPathSegList); + this._x = x; + this._y = y; + } + SVGPathSegCurvetoQuadraticSmoothAbs.prototype = Object.create(SVGPathSeg.prototype); + SVGPathSegCurvetoQuadraticSmoothAbs.prototype.toString = function() { return "[object SVGPathSegCurvetoQuadraticSmoothAbs]"; } + SVGPathSegCurvetoQuadraticSmoothAbs.prototype._asPathString = function() { return this.pathSegTypeAsLetter + " " + this._x + " " + this._y; } + SVGPathSegCurvetoQuadraticSmoothAbs.prototype.clone = function() { return new SVGPathSegCurvetoQuadraticSmoothAbs(undefined, this._x, this._y); } + Object.defineProperty(SVGPathSegCurvetoQuadraticSmoothAbs.prototype, "x", { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true }); + Object.defineProperty(SVGPathSegCurvetoQuadraticSmoothAbs.prototype, "y", { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true }); + + window.SVGPathSegCurvetoQuadraticSmoothRel = function(owningPathSegList, x, y) { + SVGPathSeg.call(this, SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL, "t", owningPathSegList); + this._x = x; + this._y = y; + } + SVGPathSegCurvetoQuadraticSmoothRel.prototype = Object.create(SVGPathSeg.prototype); + SVGPathSegCurvetoQuadraticSmoothRel.prototype.toString = function() { return "[object SVGPathSegCurvetoQuadraticSmoothRel]"; } + SVGPathSegCurvetoQuadraticSmoothRel.prototype._asPathString = function() { return this.pathSegTypeAsLetter + " " + this._x + " " + this._y; } + SVGPathSegCurvetoQuadraticSmoothRel.prototype.clone = function() { return new SVGPathSegCurvetoQuadraticSmoothRel(undefined, this._x, this._y); } + Object.defineProperty(SVGPathSegCurvetoQuadraticSmoothRel.prototype, "x", { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true }); + Object.defineProperty(SVGPathSegCurvetoQuadraticSmoothRel.prototype, "y", { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true }); + + // Add createSVGPathSeg* functions to SVGPathElement. + // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-InterfaceSVGPathElement. + SVGPathElement.prototype.createSVGPathSegClosePath = function() { return new SVGPathSegClosePath(undefined); } + SVGPathElement.prototype.createSVGPathSegMovetoAbs = function(x, y) { return new SVGPathSegMovetoAbs(undefined, x, y); } + SVGPathElement.prototype.createSVGPathSegMovetoRel = function(x, y) { return new SVGPathSegMovetoRel(undefined, x, y); } + SVGPathElement.prototype.createSVGPathSegLinetoAbs = function(x, y) { return new SVGPathSegLinetoAbs(undefined, x, y); } + SVGPathElement.prototype.createSVGPathSegLinetoRel = function(x, y) { return new SVGPathSegLinetoRel(undefined, x, y); } + SVGPathElement.prototype.createSVGPathSegCurvetoCubicAbs = function(x, y, x1, y1, x2, y2) { return new SVGPathSegCurvetoCubicAbs(undefined, x, y, x1, y1, x2, y2); } + SVGPathElement.prototype.createSVGPathSegCurvetoCubicRel = function(x, y, x1, y1, x2, y2) { return new SVGPathSegCurvetoCubicRel(undefined, x, y, x1, y1, x2, y2); } + SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticAbs = function(x, y, x1, y1) { return new SVGPathSegCurvetoQuadraticAbs(undefined, x, y, x1, y1); } + SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticRel = function(x, y, x1, y1) { return new SVGPathSegCurvetoQuadraticRel(undefined, x, y, x1, y1); } + SVGPathElement.prototype.createSVGPathSegArcAbs = function(x, y, r1, r2, angle, largeArcFlag, sweepFlag) { return new SVGPathSegArcAbs(undefined, x, y, r1, r2, angle, largeArcFlag, sweepFlag); } + SVGPathElement.prototype.createSVGPathSegArcRel = function(x, y, r1, r2, angle, largeArcFlag, sweepFlag) { return new SVGPathSegArcRel(undefined, x, y, r1, r2, angle, largeArcFlag, sweepFlag); } + SVGPathElement.prototype.createSVGPathSegLinetoHorizontalAbs = function(x) { return new SVGPathSegLinetoHorizontalAbs(undefined, x); } + SVGPathElement.prototype.createSVGPathSegLinetoHorizontalRel = function(x) { return new SVGPathSegLinetoHorizontalRel(undefined, x); } + SVGPathElement.prototype.createSVGPathSegLinetoVerticalAbs = function(y) { return new SVGPathSegLinetoVerticalAbs(undefined, y); } + SVGPathElement.prototype.createSVGPathSegLinetoVerticalRel = function(y) { return new SVGPathSegLinetoVerticalRel(undefined, y); } + SVGPathElement.prototype.createSVGPathSegCurvetoCubicSmoothAbs = function(x, y, x2, y2) { return new SVGPathSegCurvetoCubicSmoothAbs(undefined, x, y, x2, y2); } + SVGPathElement.prototype.createSVGPathSegCurvetoCubicSmoothRel = function(x, y, x2, y2) { return new SVGPathSegCurvetoCubicSmoothRel(undefined, x, y, x2, y2); } + SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticSmoothAbs = function(x, y) { return new SVGPathSegCurvetoQuadraticSmoothAbs(undefined, x, y); } + SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticSmoothRel = function(x, y) { return new SVGPathSegCurvetoQuadraticSmoothRel(undefined, x, y); } + } + + if (!("SVGPathSegList" in window)) { + // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-InterfaceSVGPathSegList + window.SVGPathSegList = function(pathElement) { + this._pathElement = pathElement; + this._list = this._parsePath(this._pathElement.getAttribute("d")); + + // Use a MutationObserver to catch changes to the path's "d" attribute. + this._mutationObserverConfig = { "attributes": true, "attributeFilter": ["d"] }; + this._pathElementMutationObserver = new MutationObserver(this._updateListFromPathMutations.bind(this)); + this._pathElementMutationObserver.observe(this._pathElement, this._mutationObserverConfig); + } + + Object.defineProperty(SVGPathSegList.prototype, "numberOfItems", { + get: function() { + this._checkPathSynchronizedToList(); + return this._list.length; + }, + enumerable: true + }); + + // Add the pathSegList accessors to SVGPathElement. + // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-InterfaceSVGAnimatedPathData + Object.defineProperty(SVGPathElement.prototype, "pathSegList", { + get: function() { + if (!this._pathSegList) + this._pathSegList = new SVGPathSegList(this); + return this._pathSegList; + }, + enumerable: true + }); + // FIXME: The following are not implemented and simply return SVGPathElement.pathSegList. + Object.defineProperty(SVGPathElement.prototype, "normalizedPathSegList", { get: function() { return this.pathSegList; }, enumerable: true }); + Object.defineProperty(SVGPathElement.prototype, "animatedPathSegList", { get: function() { return this.pathSegList; }, enumerable: true }); + Object.defineProperty(SVGPathElement.prototype, "animatedNormalizedPathSegList", { get: function() { return this.pathSegList; }, enumerable: true }); + + // Process any pending mutations to the path element and update the list as needed. + // This should be the first call of all public functions and is needed because + // MutationObservers are not synchronous so we can have pending asynchronous mutations. + SVGPathSegList.prototype._checkPathSynchronizedToList = function() { + this._updateListFromPathMutations(this._pathElementMutationObserver.takeRecords()); + } + + SVGPathSegList.prototype._updateListFromPathMutations = function(mutationRecords) { + if (!this._pathElement) + return; + var hasPathMutations = false; + mutationRecords.forEach(function(record) { + if (record.attributeName == "d") + hasPathMutations = true; + }); + if (hasPathMutations) + this._list = this._parsePath(this._pathElement.getAttribute("d")); + } + + // Serialize the list and update the path's 'd' attribute. + SVGPathSegList.prototype._writeListToPath = function() { + this._pathElementMutationObserver.disconnect(); + this._pathElement.setAttribute("d", SVGPathSegList._pathSegArrayAsString(this._list)); + this._pathElementMutationObserver.observe(this._pathElement, this._mutationObserverConfig); + } + + // When a path segment changes the list needs to be synchronized back to the path element. + SVGPathSegList.prototype.segmentChanged = function(pathSeg) { + this._writeListToPath(); + } + + SVGPathSegList.prototype.clear = function() { + this._checkPathSynchronizedToList(); + + this._list.forEach(function(pathSeg) { + pathSeg._owningPathSegList = null; + }); + this._list = []; + this._writeListToPath(); + } + + SVGPathSegList.prototype.initialize = function(newItem) { + this._checkPathSynchronizedToList(); + + this._list = [newItem]; + newItem._owningPathSegList = this; + this._writeListToPath(); + return newItem; + } + + SVGPathSegList.prototype._checkValidIndex = function(index) { + if (isNaN(index) || index < 0 || index >= this.numberOfItems) + throw "INDEX_SIZE_ERR"; + } + + SVGPathSegList.prototype.getItem = function(index) { + this._checkPathSynchronizedToList(); + + this._checkValidIndex(index); + return this._list[index]; + } + + SVGPathSegList.prototype.insertItemBefore = function(newItem, index) { + this._checkPathSynchronizedToList(); + + // Spec: If the index is greater than or equal to numberOfItems, then the new item is appended to the end of the list. + if (index > this.numberOfItems) + index = this.numberOfItems; + if (newItem._owningPathSegList) { + // SVG2 spec says to make a copy. + newItem = newItem.clone(); + } + this._list.splice(index, 0, newItem); + newItem._owningPathSegList = this; + this._writeListToPath(); + return newItem; + } + + SVGPathSegList.prototype.replaceItem = function(newItem, index) { + this._checkPathSynchronizedToList(); + + if (newItem._owningPathSegList) { + // SVG2 spec says to make a copy. + newItem = newItem.clone(); + } + this._checkValidIndex(index); + this._list[index] = newItem; + newItem._owningPathSegList = this; + this._writeListToPath(); + return newItem; + } + + SVGPathSegList.prototype.removeItem = function(index) { + this._checkPathSynchronizedToList(); + + this._checkValidIndex(index); + var item = this._list[index]; + this._list.splice(index, 1); + this._writeListToPath(); + return item; + } + + SVGPathSegList.prototype.appendItem = function(newItem) { + this._checkPathSynchronizedToList(); + + if (newItem._owningPathSegList) { + // SVG2 spec says to make a copy. + newItem = newItem.clone(); + } + this._list.push(newItem); + newItem._owningPathSegList = this; + // TODO: Optimize this to just append to the existing attribute. + this._writeListToPath(); + return newItem; + } + + SVGPathSegList._pathSegArrayAsString = function(pathSegArray) { + var string = ""; + var first = true; + pathSegArray.forEach(function(pathSeg) { + if (first) { + first = false; + string += pathSeg._asPathString(); + } else { + string += " " + pathSeg._asPathString(); + } + }); + return string; + } + + // This closely follows SVGPathParser::parsePath from Source/core/svg/SVGPathParser.cpp. + SVGPathSegList.prototype._parsePath = function(string) { + if (!string || string.length == 0) + return []; + + var owningPathSegList = this; + + var Builder = function() { + this.pathSegList = []; + } + + Builder.prototype.appendSegment = function(pathSeg) { + this.pathSegList.push(pathSeg); + } + + var Source = function(string) { + this._string = string; + this._currentIndex = 0; + this._endIndex = this._string.length; + this._previousCommand = SVGPathSeg.PATHSEG_UNKNOWN; + + this._skipOptionalSpaces(); + } + + Source.prototype._isCurrentSpace = function() { + var character = this._string[this._currentIndex]; + return character <= " " && (character == " " || character == "\n" || character == "\t" || character == "\r" || character == "\f"); + } + + Source.prototype._skipOptionalSpaces = function() { + while (this._currentIndex < this._endIndex && this._isCurrentSpace()) + this._currentIndex++; + return this._currentIndex < this._endIndex; + } + + Source.prototype._skipOptionalSpacesOrDelimiter = function() { + if (this._currentIndex < this._endIndex && !this._isCurrentSpace() && this._string.charAt(this._currentIndex) != ",") + return false; + if (this._skipOptionalSpaces()) { + if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == ",") { + this._currentIndex++; + this._skipOptionalSpaces(); + } + } + return this._currentIndex < this._endIndex; + } + + Source.prototype.hasMoreData = function() { + return this._currentIndex < this._endIndex; + } + + Source.prototype.peekSegmentType = function() { + var lookahead = this._string[this._currentIndex]; + return this._pathSegTypeFromChar(lookahead); + } + + Source.prototype._pathSegTypeFromChar = function(lookahead) { + switch (lookahead) { + case "Z": + case "z": + return SVGPathSeg.PATHSEG_CLOSEPATH; + case "M": + return SVGPathSeg.PATHSEG_MOVETO_ABS; + case "m": + return SVGPathSeg.PATHSEG_MOVETO_REL; + case "L": + return SVGPathSeg.PATHSEG_LINETO_ABS; + case "l": + return SVGPathSeg.PATHSEG_LINETO_REL; + case "C": + return SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS; + case "c": + return SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL; + case "Q": + return SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS; + case "q": + return SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL; + case "A": + return SVGPathSeg.PATHSEG_ARC_ABS; + case "a": + return SVGPathSeg.PATHSEG_ARC_REL; + case "H": + return SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS; + case "h": + return SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL; + case "V": + return SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS; + case "v": + return SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL; + case "S": + return SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS; + case "s": + return SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL; + case "T": + return SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS; + case "t": + return SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL; + default: + return SVGPathSeg.PATHSEG_UNKNOWN; + } + } + + Source.prototype._nextCommandHelper = function(lookahead, previousCommand) { + // Check for remaining coordinates in the current command. + if ((lookahead == "+" || lookahead == "-" || lookahead == "." || (lookahead >= "0" && lookahead <= "9")) && previousCommand != SVGPathSeg.PATHSEG_CLOSEPATH) { + if (previousCommand == SVGPathSeg.PATHSEG_MOVETO_ABS) + return SVGPathSeg.PATHSEG_LINETO_ABS; + if (previousCommand == SVGPathSeg.PATHSEG_MOVETO_REL) + return SVGPathSeg.PATHSEG_LINETO_REL; + return previousCommand; + } + return SVGPathSeg.PATHSEG_UNKNOWN; + } + + Source.prototype.initialCommandIsMoveTo = function() { + // If the path is empty it is still valid, so return true. + if (!this.hasMoreData()) + return true; + var command = this.peekSegmentType(); + // Path must start with moveTo. + return command == SVGPathSeg.PATHSEG_MOVETO_ABS || command == SVGPathSeg.PATHSEG_MOVETO_REL; + } + + // Parse a number from an SVG path. This very closely follows genericParseNumber(...) from Source/core/svg/SVGParserUtilities.cpp. + // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-PathDataBNF + Source.prototype._parseNumber = function() { + var exponent = 0; + var integer = 0; + var frac = 1; + var decimal = 0; + var sign = 1; + var expsign = 1; + + var startIndex = this._currentIndex; + + this._skipOptionalSpaces(); + + // Read the sign. + if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == "+") + this._currentIndex++; + else if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == "-") { + this._currentIndex++; + sign = -1; + } + + if (this._currentIndex == this._endIndex || ((this._string.charAt(this._currentIndex) < "0" || this._string.charAt(this._currentIndex) > "9") && this._string.charAt(this._currentIndex) != ".")) + // The first character of a number must be one of [0-9+-.]. + return undefined; + + // Read the integer part, build right-to-left. + var startIntPartIndex = this._currentIndex; + while (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) >= "0" && this._string.charAt(this._currentIndex) <= "9") + this._currentIndex++; // Advance to first non-digit. + + if (this._currentIndex != startIntPartIndex) { + var scanIntPartIndex = this._currentIndex - 1; + var multiplier = 1; + while (scanIntPartIndex >= startIntPartIndex) { + integer += multiplier * (this._string.charAt(scanIntPartIndex--) - "0"); + multiplier *= 10; + } + } + + // Read the decimals. + if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == ".") { + this._currentIndex++; + + // There must be a least one digit following the . + if (this._currentIndex >= this._endIndex || this._string.charAt(this._currentIndex) < "0" || this._string.charAt(this._currentIndex) > "9") + return undefined; + while (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) >= "0" && this._string.charAt(this._currentIndex) <= "9") + decimal += (this._string.charAt(this._currentIndex++) - "0") * (frac *= 0.1); + } + + // Read the exponent part. + if (this._currentIndex != startIndex && this._currentIndex + 1 < this._endIndex && (this._string.charAt(this._currentIndex) == "e" || this._string.charAt(this._currentIndex) == "E") && (this._string.charAt(this._currentIndex + 1) != "x" && this._string.charAt(this._currentIndex + 1) != "m")) { + this._currentIndex++; + + // Read the sign of the exponent. + if (this._string.charAt(this._currentIndex) == "+") { + this._currentIndex++; + } else if (this._string.charAt(this._currentIndex) == "-") { + this._currentIndex++; + expsign = -1; + } + + // There must be an exponent. + if (this._currentIndex >= this._endIndex || this._string.charAt(this._currentIndex) < "0" || this._string.charAt(this._currentIndex) > "9") + return undefined; + + while (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) >= "0" && this._string.charAt(this._currentIndex) <= "9") { + exponent *= 10; + exponent += (this._string.charAt(this._currentIndex) - "0"); + this._currentIndex++; + } + } + + var number = integer + decimal; + number *= sign; + + if (exponent) + number *= Math.pow(10, expsign * exponent); + + if (startIndex == this._currentIndex) + return undefined; + + this._skipOptionalSpacesOrDelimiter(); + + return number; + } + + Source.prototype._parseArcFlag = function() { + if (this._currentIndex >= this._endIndex) + return undefined; + var flag = false; + var flagChar = this._string.charAt(this._currentIndex++); + if (flagChar == "0") + flag = false; + else if (flagChar == "1") + flag = true; + else + return undefined; + + this._skipOptionalSpacesOrDelimiter(); + return flag; + } + + Source.prototype.parseSegment = function() { + var lookahead = this._string[this._currentIndex]; + var command = this._pathSegTypeFromChar(lookahead); + if (command == SVGPathSeg.PATHSEG_UNKNOWN) { + // Possibly an implicit command. Not allowed if this is the first command. + if (this._previousCommand == SVGPathSeg.PATHSEG_UNKNOWN) + return null; + command = this._nextCommandHelper(lookahead, this._previousCommand); + if (command == SVGPathSeg.PATHSEG_UNKNOWN) + return null; + } else { + this._currentIndex++; + } + + this._previousCommand = command; + + switch (command) { + case SVGPathSeg.PATHSEG_MOVETO_REL: + return new SVGPathSegMovetoRel(owningPathSegList, this._parseNumber(), this._parseNumber()); + case SVGPathSeg.PATHSEG_MOVETO_ABS: + return new SVGPathSegMovetoAbs(owningPathSegList, this._parseNumber(), this._parseNumber()); + case SVGPathSeg.PATHSEG_LINETO_REL: + return new SVGPathSegLinetoRel(owningPathSegList, this._parseNumber(), this._parseNumber()); + case SVGPathSeg.PATHSEG_LINETO_ABS: + return new SVGPathSegLinetoAbs(owningPathSegList, this._parseNumber(), this._parseNumber()); + case SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL: + return new SVGPathSegLinetoHorizontalRel(owningPathSegList, this._parseNumber()); + case SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS: + return new SVGPathSegLinetoHorizontalAbs(owningPathSegList, this._parseNumber()); + case SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL: + return new SVGPathSegLinetoVerticalRel(owningPathSegList, this._parseNumber()); + case SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS: + return new SVGPathSegLinetoVerticalAbs(owningPathSegList, this._parseNumber()); + case SVGPathSeg.PATHSEG_CLOSEPATH: + this._skipOptionalSpaces(); + return new SVGPathSegClosePath(owningPathSegList); + case SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL: + var points = {x1: this._parseNumber(), y1: this._parseNumber(), x2: this._parseNumber(), y2: this._parseNumber(), x: this._parseNumber(), y: this._parseNumber()}; + return new SVGPathSegCurvetoCubicRel(owningPathSegList, points.x, points.y, points.x1, points.y1, points.x2, points.y2); + case SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS: + var points = {x1: this._parseNumber(), y1: this._parseNumber(), x2: this._parseNumber(), y2: this._parseNumber(), x: this._parseNumber(), y: this._parseNumber()}; + return new SVGPathSegCurvetoCubicAbs(owningPathSegList, points.x, points.y, points.x1, points.y1, points.x2, points.y2); + case SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL: + var points = {x2: this._parseNumber(), y2: this._parseNumber(), x: this._parseNumber(), y: this._parseNumber()}; + return new SVGPathSegCurvetoCubicSmoothRel(owningPathSegList, points.x, points.y, points.x2, points.y2); + case SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS: + var points = {x2: this._parseNumber(), y2: this._parseNumber(), x: this._parseNumber(), y: this._parseNumber()}; + return new SVGPathSegCurvetoCubicSmoothAbs(owningPathSegList, points.x, points.y, points.x2, points.y2); + case SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL: + var points = {x1: this._parseNumber(), y1: this._parseNumber(), x: this._parseNumber(), y: this._parseNumber()}; + return new SVGPathSegCurvetoQuadraticRel(owningPathSegList, points.x, points.y, points.x1, points.y1); + case SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS: + var points = {x1: this._parseNumber(), y1: this._parseNumber(), x: this._parseNumber(), y: this._parseNumber()}; + return new SVGPathSegCurvetoQuadraticAbs(owningPathSegList, points.x, points.y, points.x1, points.y1); + case SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL: + return new SVGPathSegCurvetoQuadraticSmoothRel(owningPathSegList, this._parseNumber(), this._parseNumber()); + case SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS: + return new SVGPathSegCurvetoQuadraticSmoothAbs(owningPathSegList, this._parseNumber(), this._parseNumber()); + case SVGPathSeg.PATHSEG_ARC_REL: + var points = {x1: this._parseNumber(), y1: this._parseNumber(), arcAngle: this._parseNumber(), arcLarge: this._parseArcFlag(), arcSweep: this._parseArcFlag(), x: this._parseNumber(), y: this._parseNumber()}; + return new SVGPathSegArcRel(owningPathSegList, points.x, points.y, points.x1, points.y1, points.arcAngle, points.arcLarge, points.arcSweep); + case SVGPathSeg.PATHSEG_ARC_ABS: + var points = {x1: this._parseNumber(), y1: this._parseNumber(), arcAngle: this._parseNumber(), arcLarge: this._parseArcFlag(), arcSweep: this._parseArcFlag(), x: this._parseNumber(), y: this._parseNumber()}; + return new SVGPathSegArcAbs(owningPathSegList, points.x, points.y, points.x1, points.y1, points.arcAngle, points.arcLarge, points.arcSweep); + default: + throw "Unknown path seg type." + } + } + + var builder = new Builder(); + var source = new Source(string); + + if (!source.initialCommandIsMoveTo()) + return []; + while (source.hasMoreData()) { + var pathSeg = source.parseSegment(); + if (!pathSeg) + return []; + builder.appendSegment(pathSeg); + } + + return builder.pathSegList; + } + } + }()); + + /* jshint ignore:end */ + if (typeof define === 'function' && define.amd) { - define("c3", ["d3"], c3); + define("c3", ["d3"], function () { return c3; }); } else if ('undefined' !== typeof exports && 'undefined' !== typeof module) { module.exports = c3; } else { @@ -34831,40 +35894,50 @@ module.exports = C3Wrapper; })(window); -},{"d3":256}],256:[function(require,module,exports){ +},{"d3":238}],238:[function(_dereq_,module,exports){ !function() { var d3 = { - version: "3.5.0" - }; - if (!Date.now) Date.now = function() { - return +new Date(); + version: "3.5.17" }; var d3_arraySlice = [].slice, d3_array = function(list) { return d3_arraySlice.call(list); }; - var d3_document = document, d3_documentElement = d3_document.documentElement, d3_window = window; - try { - d3_array(d3_documentElement.childNodes)[0].nodeType; - } catch (e) { - d3_array = function(list) { - var i = list.length, array = new Array(i); - while (i--) array[i] = list[i]; - return array; - }; + var d3_document = this.document; + function d3_documentElement(node) { + return node && (node.ownerDocument || node.document || node).documentElement; } - try { - d3_document.createElement("div").style.setProperty("opacity", 0, ""); - } catch (error) { - var d3_element_prototype = d3_window.Element.prototype, d3_element_setAttribute = d3_element_prototype.setAttribute, d3_element_setAttributeNS = d3_element_prototype.setAttributeNS, d3_style_prototype = d3_window.CSSStyleDeclaration.prototype, d3_style_setProperty = d3_style_prototype.setProperty; - d3_element_prototype.setAttribute = function(name, value) { - d3_element_setAttribute.call(this, name, value + ""); - }; - d3_element_prototype.setAttributeNS = function(space, local, value) { - d3_element_setAttributeNS.call(this, space, local, value + ""); - }; - d3_style_prototype.setProperty = function(name, value, priority) { - d3_style_setProperty.call(this, name, value + "", priority); - }; + function d3_window(node) { + return node && (node.ownerDocument && node.ownerDocument.defaultView || node.document && node || node.defaultView); + } + if (d3_document) { + try { + d3_array(d3_document.documentElement.childNodes)[0].nodeType; + } catch (e) { + d3_array = function(list) { + var i = list.length, array = new Array(i); + while (i--) array[i] = list[i]; + return array; + }; + } + } + if (!Date.now) Date.now = function() { + return +new Date(); + }; + if (d3_document) { + try { + d3_document.createElement("DIV").style.setProperty("opacity", 0, ""); + } catch (error) { + var d3_element_prototype = this.Element.prototype, d3_element_setAttribute = d3_element_prototype.setAttribute, d3_element_setAttributeNS = d3_element_prototype.setAttributeNS, d3_style_prototype = this.CSSStyleDeclaration.prototype, d3_style_setProperty = d3_style_prototype.setProperty; + d3_element_prototype.setAttribute = function(name, value) { + d3_element_setAttribute.call(this, name, value + ""); + }; + d3_element_prototype.setAttributeNS = function(space, local, value) { + d3_element_setAttributeNS.call(this, space, local, value + ""); + }; + d3_style_prototype.setProperty = function(name, value, priority) { + d3_style_setProperty.call(this, name, value + "", priority); + }; + } } d3.ascending = d3_ascending; function d3_ascending(a, b) { @@ -34967,6 +36040,31 @@ module.exports = C3Wrapper; } if (numbers.length) return d3.quantile(numbers.sort(d3_ascending), .5); }; + d3.variance = function(array, f) { + var n = array.length, m = 0, a, d, s = 0, i = -1, j = 0; + if (arguments.length === 1) { + while (++i < n) { + if (d3_numeric(a = d3_number(array[i]))) { + d = a - m; + m += d / ++j; + s += d * (a - m); + } + } + } else { + while (++i < n) { + if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) { + d = a - m; + m += d / ++j; + s += d * (a - m); + } + } + } + if (j > 1) return s / (j - 1); + }; + d3.deviation = function() { + var v = d3.variance.apply(this, arguments); + return v ? Math.sqrt(v) : v; + }; function d3_bisector(compare) { return { left: function(a, x, lo, hi) { @@ -35019,20 +36117,20 @@ module.exports = C3Wrapper; while (i < n) pairs[i] = [ p0 = p1, p1 = array[++i] ]; return pairs; }; - d3.zip = function() { - if (!(n = arguments.length)) return []; - for (var i = -1, m = d3.min(arguments, d3_zipLength), zips = new Array(m); ++i < m; ) { - for (var j = -1, n, zip = zips[i] = new Array(n); ++j < n; ) { - zip[j] = arguments[j][i]; + d3.transpose = function(matrix) { + if (!(n = matrix.length)) return []; + for (var i = -1, m = d3.min(matrix, d3_transposeLength), transpose = new Array(m); ++i < m; ) { + for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n; ) { + row[j] = matrix[j][i]; } } - return zips; + return transpose; }; - function d3_zipLength(d) { + function d3_transposeLength(d) { return d.length; } - d3.transpose = function(matrix) { - return d3.zip.apply(d3, matrix); + d3.zip = function() { + return d3.transpose(arguments); }; d3.keys = function(map) { var keys = []; @@ -35252,6 +36350,9 @@ module.exports = C3Wrapper; } }); d3.behavior = {}; + function d3_identity(d) { + return d; + } d3.rebind = function(target, source) { var i = 1, n = arguments.length, method; while (++i < n) target[method = arguments[i]] = d3_rebind(target, source, source[method]); @@ -35358,8 +36459,12 @@ module.exports = C3Wrapper; return n.querySelector(s); }, d3_selectAll = function(s, n) { return n.querySelectorAll(s); - }, d3_selectMatcher = d3_documentElement.matches || d3_documentElement[d3_vendorSymbol(d3_documentElement, "matchesSelector")], d3_selectMatches = function(n, s) { - return d3_selectMatcher.call(n, s); + }, d3_selectMatches = function(n, s) { + var d3_selectMatcher = n.matches || n[d3_vendorSymbol(n, "matchesSelector")]; + d3_selectMatches = function(n, s) { + return d3_selectMatcher.call(n, s); + }; + return d3_selectMatches(n, s); }; if (typeof Sizzle === "function") { d3_select = function(s, n) { @@ -35369,7 +36474,7 @@ module.exports = C3Wrapper; d3_selectMatches = Sizzle.matchesSelector; } d3.selection = function() { - return d3_selectionRoot; + return d3.select(d3_document.documentElement); }; var d3_selectionPrototype = d3.selection.prototype = []; d3_selectionPrototype.select = function(selector) { @@ -35412,9 +36517,10 @@ module.exports = C3Wrapper; return d3_selectAll(selector, this); }; } + var d3_nsXhtml = "http://www.w3.org/1999/xhtml"; var d3_nsPrefix = { svg: "http://www.w3.org/2000/svg", - xhtml: "http://www.w3.org/1999/xhtml", + xhtml: d3_nsXhtml, xlink: "http://www.w3.org/1999/xlink", xml: "http://www.w3.org/XML/1998/namespace", xmlns: "http://www.w3.org/2000/xmlns/" @@ -35423,10 +36529,7 @@ module.exports = C3Wrapper; prefix: d3_nsPrefix, qualify: function(name) { var i = name.indexOf(":"), prefix = name; - if (i >= 0) { - prefix = name.slice(0, i); - name = name.slice(i + 1); - } + if (i >= 0 && (prefix = name.slice(0, i)) !== "xmlns") name = name.slice(i + 1); return d3_nsPrefix.hasOwnProperty(prefix) ? { space: d3_nsPrefix[prefix], local: name @@ -35529,7 +36632,10 @@ module.exports = C3Wrapper; for (priority in name) this.each(d3_selection_style(priority, name[priority], value)); return this; } - if (n < 2) return d3_window.getComputedStyle(this.node(), null).getPropertyValue(name); + if (n < 2) { + var node = this.node(); + return d3_window(node).getComputedStyle(node, null).getPropertyValue(name); + } priority = ""; } return this.each(d3_selection_style(name, value, priority)); @@ -35595,11 +36701,14 @@ module.exports = C3Wrapper; }); }; function d3_selection_creator(name) { - return typeof name === "function" ? name : (name = d3.ns.qualify(name)).local ? function() { + function create() { + var document = this.ownerDocument, namespace = this.namespaceURI; + return namespace === d3_nsXhtml && document.documentElement.namespaceURI === d3_nsXhtml ? document.createElement(name) : document.createElementNS(namespace, name); + } + function createNS() { return this.ownerDocument.createElementNS(name.space, name.local); - } : function() { - return this.ownerDocument.createElementNS(this.namespaceURI, name); - }; + } + return typeof name === "function" ? name : (name = d3.ns.qualify(name)).local ? createNS : create; } d3_selectionPrototype.insert = function(name, before) { name = d3_selection_creator(name); @@ -35631,12 +36740,14 @@ module.exports = C3Wrapper; if (key) { var nodeByKeyValue = new d3_Map(), keyValues = new Array(n), keyValue; for (i = -1; ++i < n; ) { - if (nodeByKeyValue.has(keyValue = key.call(node = group[i], node.__data__, i))) { - exitNodes[i] = node; - } else { - nodeByKeyValue.set(keyValue, node); + if (node = group[i]) { + if (nodeByKeyValue.has(keyValue = key.call(node, node.__data__, i))) { + exitNodes[i] = node; + } else { + nodeByKeyValue.set(keyValue, node); + } + keyValues[i] = keyValue; } - keyValues[i] = keyValue; } for (i = -1; ++i < m; ) { if (!(node = nodeByKeyValue.get(keyValue = key.call(groupData, nodeData = groupData[i], i)))) { @@ -35648,7 +36759,7 @@ module.exports = C3Wrapper; nodeByKeyValue.set(keyValue, true); } for (i = -1; ++i < n; ) { - if (nodeByKeyValue.get(keyValues[i]) !== true) { + if (i in keyValues && nodeByKeyValue.get(keyValues[i]) !== true) { exitNodes[i] = group[i]; } } @@ -35823,44 +36934,28 @@ module.exports = C3Wrapper; return node; }; } - d3_selectionPrototype.transition = function(name) { - var id = d3_transitionInheritId || ++d3_transitionId, ns = d3_transitionNamespace(name), subgroups = [], subgroup, node, transition = d3_transitionInherit || { - time: Date.now(), - ease: d3_ease_cubicInOut, - delay: 0, - duration: 250 - }; - for (var j = -1, m = this.length; ++j < m; ) { - subgroups.push(subgroup = []); - for (var group = this[j], i = -1, n = group.length; ++i < n; ) { - if (node = group[i]) d3_transitionNode(node, i, ns, id, transition); - subgroup.push(node); - } - } - return d3_transition(subgroups, ns, id); - }; - d3_selectionPrototype.interrupt = function(name) { - var ns = d3_transitionNamespace(name); - return this.each(function() { - var lock = this[ns]; - if (lock) ++lock.active; - }); - }; - function d3_selection_interrupt(that) { - var lock = that.__transition__; - if (lock) ++lock.active; - } d3.select = function(node) { - var group = [ typeof node === "string" ? d3_select(node, d3_document) : node ]; - group.parentNode = d3_documentElement; + var group; + if (typeof node === "string") { + group = [ d3_select(node, d3_document) ]; + group.parentNode = d3_document.documentElement; + } else { + group = [ node ]; + group.parentNode = d3_documentElement(node); + } return d3_selection([ group ]); }; d3.selectAll = function(nodes) { - var group = d3_array(typeof nodes === "string" ? d3_selectAll(nodes, d3_document) : nodes); - group.parentNode = d3_documentElement; + var group; + if (typeof nodes === "string") { + group = d3_array(d3_selectAll(nodes, d3_document)); + group.parentNode = d3_document.documentElement; + } else { + group = d3_array(nodes); + group.parentNode = null; + } return d3_selection([ group ]); }; - var d3_selectionRoot = d3.select(d3_documentElement); d3_selectionPrototype.on = function(type, listener, capture) { var n = arguments.length; if (n < 3) { @@ -35908,9 +37003,11 @@ module.exports = C3Wrapper; mouseenter: "mouseover", mouseleave: "mouseout" }); - d3_selection_onFilters.forEach(function(k) { - if ("on" + k in d3_document) d3_selection_onFilters.remove(k); - }); + if (d3_document) { + d3_selection_onFilters.forEach(function(k) { + if ("on" + k in d3_document) d3_selection_onFilters.remove(k); + }); + } function d3_selection_onListener(listener, argumentz) { return function(e) { var o = d3.event; @@ -35932,11 +37029,14 @@ module.exports = C3Wrapper; } }; } - var d3_event_dragSelect = "onselectstart" in d3_document ? null : d3_vendorSymbol(d3_documentElement.style, "userSelect"), d3_event_dragId = 0; - function d3_event_dragSuppress() { - var name = ".dragsuppress-" + ++d3_event_dragId, click = "click" + name, w = d3.select(d3_window).on("touchmove" + name, d3_eventPreventDefault).on("dragstart" + name, d3_eventPreventDefault).on("selectstart" + name, d3_eventPreventDefault); + var d3_event_dragSelect, d3_event_dragId = 0; + function d3_event_dragSuppress(node) { + var name = ".dragsuppress-" + ++d3_event_dragId, click = "click" + name, w = d3.select(d3_window(node)).on("touchmove" + name, d3_eventPreventDefault).on("dragstart" + name, d3_eventPreventDefault).on("selectstart" + name, d3_eventPreventDefault); + if (d3_event_dragSelect == null) { + d3_event_dragSelect = "onselectstart" in node ? false : d3_vendorSymbol(node.style, "userSelect"); + } if (d3_event_dragSelect) { - var style = d3_documentElement.style, select = style[d3_event_dragSelect]; + var style = d3_documentElement(node).style, select = style[d3_event_dragSelect]; style[d3_event_dragSelect] = "none"; } return function(suppressClick) { @@ -35957,24 +37057,27 @@ module.exports = C3Wrapper; d3.mouse = function(container) { return d3_mousePoint(container, d3_eventSource()); }; - var d3_mouse_bug44083 = /WebKit/.test(d3_window.navigator.userAgent) ? -1 : 0; + var d3_mouse_bug44083 = this.navigator && /WebKit/.test(this.navigator.userAgent) ? -1 : 0; function d3_mousePoint(container, e) { if (e.changedTouches) e = e.changedTouches[0]; var svg = container.ownerSVGElement || container; if (svg.createSVGPoint) { var point = svg.createSVGPoint(); - if (d3_mouse_bug44083 < 0 && (d3_window.scrollX || d3_window.scrollY)) { - svg = d3.select("body").append("svg").style({ - position: "absolute", - top: 0, - left: 0, - margin: 0, - padding: 0, - border: "none" - }, "important"); - var ctm = svg[0][0].getScreenCTM(); - d3_mouse_bug44083 = !(ctm.f || ctm.e); - svg.remove(); + if (d3_mouse_bug44083 < 0) { + var window = d3_window(container); + if (window.scrollX || window.scrollY) { + svg = d3.select("body").append("svg").style({ + position: "absolute", + top: 0, + left: 0, + margin: 0, + padding: 0, + border: "none" + }, "important"); + var ctm = svg[0][0].getScreenCTM(); + d3_mouse_bug44083 = !(ctm.f || ctm.e); + svg.remove(); + } } if (d3_mouse_bug44083) point.x = e.pageX, point.y = e.pageY; else point.x = e.clientX, point.y = e.clientY; @@ -35993,13 +37096,13 @@ module.exports = C3Wrapper; } }; d3.behavior.drag = function() { - var event = d3_eventDispatch(drag, "drag", "dragstart", "dragend"), origin = null, mousedown = dragstart(d3_noop, d3.mouse, d3_behavior_dragMouseSubject, "mousemove", "mouseup"), touchstart = dragstart(d3_behavior_dragTouchId, d3.touch, d3_behavior_dragTouchSubject, "touchmove", "touchend"); + var event = d3_eventDispatch(drag, "drag", "dragstart", "dragend"), origin = null, mousedown = dragstart(d3_noop, d3.mouse, d3_window, "mousemove", "mouseup"), touchstart = dragstart(d3_behavior_dragTouchId, d3.touch, d3_identity, "touchmove", "touchend"); function drag() { this.on("mousedown.drag", mousedown).on("touchstart.drag", touchstart); } function dragstart(id, position, subject, move, end) { return function() { - var that = this, target = d3.event.target, parent = that.parentNode, dispatch = event.of(that, arguments), dragged = 0, dragId = id(), dragName = ".drag" + (dragId == null ? "" : "-" + dragId), dragOffset, dragSubject = d3.select(subject()).on(move + dragName, moved).on(end + dragName, ended), dragRestore = d3_event_dragSuppress(), position0 = position(parent, dragId); + var that = this, target = d3.event.target.correspondingElement || d3.event.target, parent = that.parentNode, dispatch = event.of(that, arguments), dragged = 0, dragId = id(), dragName = ".drag" + (dragId == null ? "" : "-" + dragId), dragOffset, dragSubject = d3.select(subject(target)).on(move + dragName, moved).on(end + dragName, ended), dragRestore = d3_event_dragSuppress(target), position0 = position(parent, dragId); if (origin) { dragOffset = origin.apply(that, arguments); dragOffset = [ dragOffset.x - position0[0], dragOffset.y - position0[1] ]; @@ -36027,7 +37130,7 @@ module.exports = C3Wrapper; function ended() { if (!position(parent, dragId)) return; dragSubject.on(move + dragName, null).on(end + dragName, null); - dragRestore(dragged && d3.event.target === target); + dragRestore(dragged); dispatch({ type: "dragend" }); @@ -36044,12 +37147,6 @@ module.exports = C3Wrapper; function d3_behavior_dragTouchId() { return d3.event.changedTouches[0].identifier; } - function d3_behavior_dragTouchSubject() { - return d3.event.target; - } - function d3_behavior_dragMouseSubject() { - return d3_window; - } d3.touches = function(container, touches) { if (arguments.length < 2) touches = d3_eventSource().touches; return touches ? d3_array(touches).map(function(touch) { @@ -36085,18 +37182,22 @@ module.exports = C3Wrapper; } var ρ = Math.SQRT2, ρ2 = 2, ρ4 = 4; d3.interpolateZoom = function(p0, p1) { - var ux0 = p0[0], uy0 = p0[1], w0 = p0[2], ux1 = p1[0], uy1 = p1[1], w1 = p1[2]; - var dx = ux1 - ux0, dy = uy1 - uy0, d2 = dx * dx + dy * dy, d1 = Math.sqrt(d2), b0 = (w1 * w1 - w0 * w0 + ρ4 * d2) / (2 * w0 * ρ2 * d1), b1 = (w1 * w1 - w0 * w0 - ρ4 * d2) / (2 * w1 * ρ2 * d1), r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0), r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1), dr = r1 - r0, S = (dr || Math.log(w1 / w0)) / ρ; - function interpolate(t) { - var s = t * S; - if (dr) { - var coshr0 = d3_cosh(r0), u = w0 / (ρ2 * d1) * (coshr0 * d3_tanh(ρ * s + r0) - d3_sinh(r0)); + var ux0 = p0[0], uy0 = p0[1], w0 = p0[2], ux1 = p1[0], uy1 = p1[1], w1 = p1[2], dx = ux1 - ux0, dy = uy1 - uy0, d2 = dx * dx + dy * dy, i, S; + if (d2 < ε2) { + S = Math.log(w1 / w0) / ρ; + i = function(t) { + return [ ux0 + t * dx, uy0 + t * dy, w0 * Math.exp(ρ * t * S) ]; + }; + } else { + var d1 = Math.sqrt(d2), b0 = (w1 * w1 - w0 * w0 + ρ4 * d2) / (2 * w0 * ρ2 * d1), b1 = (w1 * w1 - w0 * w0 - ρ4 * d2) / (2 * w1 * ρ2 * d1), r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0), r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1); + S = (r1 - r0) / ρ; + i = function(t) { + var s = t * S, coshr0 = d3_cosh(r0), u = w0 / (ρ2 * d1) * (coshr0 * d3_tanh(ρ * s + r0) - d3_sinh(r0)); return [ ux0 + u * dx, uy0 + u * dy, w0 * coshr0 / d3_cosh(ρ * s + r0) ]; - } - return [ ux0 + t * dx, uy0 + t * dy, w0 * Math.exp(ρ * s) ]; + }; } - interpolate.duration = S * 1e3; - return interpolate; + i.duration = S * 1e3; + return i; }; d3.behavior.zoom = function() { var view = { @@ -36104,6 +37205,15 @@ module.exports = C3Wrapper; y: 0, k: 1 }, translate0, center0, center, size = [ 960, 500 ], scaleExtent = d3_behavior_zoomInfinity, duration = 250, zooming = 0, mousedown = "mousedown.zoom", mousemove = "mousemove.zoom", mouseup = "mouseup.zoom", mousewheelTimer, touchstart = "touchstart.zoom", touchtime, event = d3_eventDispatch(zoom, "zoomstart", "zoom", "zoomend"), x0, x1, y0, y1; + if (!d3_behavior_zoomWheel) { + d3_behavior_zoomWheel = "onwheel" in d3_document ? (d3_behavior_zoomDelta = function() { + return -d3.event.deltaY * (d3.event.deltaMode ? 120 : 1); + }, "wheel") : "onmousewheel" in d3_document ? (d3_behavior_zoomDelta = function() { + return d3.event.wheelDelta; + }, "mousewheel") : (d3_behavior_zoomDelta = function() { + return -d3.event.detail; + }, "MozMousePixelScroll"); + } function zoom(g) { g.on(mousedown, mousedowned).on(d3_behavior_zoomWheel + ".zoom", mousewheeled).on("dblclick.zoom", dblclicked).on(touchstart, touchstarted); } @@ -36157,8 +37267,9 @@ module.exports = C3Wrapper; view = { x: view.x, y: view.y, - k: +_ + k: null }; + scaleTo(+_); rescale(); return zoom; }; @@ -36254,12 +37365,11 @@ module.exports = C3Wrapper; function zoomended(dispatch) { if (!--zooming) dispatch({ type: "zoomend" - }); - center0 = null; + }), center0 = null; } function mousedowned() { - var that = this, target = d3.event.target, dispatch = event.of(that, arguments), dragged = 0, subject = d3.select(d3_window).on(mousemove, moved).on(mouseup, ended), location0 = location(d3.mouse(that)), dragRestore = d3_event_dragSuppress(); - d3_selection_interrupt(that); + var that = this, dispatch = event.of(that, arguments), dragged = 0, subject = d3.select(d3_window(that)).on(mousemove, moved).on(mouseup, ended), location0 = location(d3.mouse(that)), dragRestore = d3_event_dragSuppress(that); + d3_selection_interrupt.call(that); zoomstarted(dispatch); function moved() { dragged = 1; @@ -36268,12 +37378,12 @@ module.exports = C3Wrapper; } function ended() { subject.on(mousemove, null).on(mouseup, null); - dragRestore(dragged && d3.event.target === target); + dragRestore(dragged); zoomended(dispatch); } } function touchstarted() { - var that = this, dispatch = event.of(that, arguments), locations0 = {}, distance0 = 0, scale0, zoomName = ".zoom-" + d3.event.changedTouches[0].identifier, touchmove = "touchmove" + zoomName, touchend = "touchend" + zoomName, targets = [], subject = d3.select(that), dragRestore = d3_event_dragSuppress(); + var that = this, dispatch = event.of(that, arguments), locations0 = {}, distance0 = 0, scale0, zoomName = ".zoom-" + d3.event.changedTouches[0].identifier, touchmove = "touchmove" + zoomName, touchend = "touchend" + zoomName, targets = [], subject = d3.select(that), dragRestore = d3_event_dragSuppress(that); started(); zoomstarted(dispatch); subject.on(mousedown, null).on(touchstart, started); @@ -36308,7 +37418,7 @@ module.exports = C3Wrapper; } function moved() { var touches = d3.touches(that), p0, l0, p1, l1; - d3_selection_interrupt(that); + d3_selection_interrupt.call(that); for (var i = 0, n = touches.length; i < n; ++i, l1 = null) { p1 = touches[i]; if (l1 = locations0[p1.identifier]) { @@ -36344,8 +37454,8 @@ module.exports = C3Wrapper; } function mousewheeled() { var dispatch = event.of(this, arguments); - if (mousewheelTimer) clearTimeout(mousewheelTimer); else translate0 = location(center0 = center || d3.mouse(this)), - d3_selection_interrupt(this), zoomstarted(dispatch); + if (mousewheelTimer) clearTimeout(mousewheelTimer); else d3_selection_interrupt.call(this), + translate0 = location(center0 = center || d3.mouse(this)), zoomstarted(dispatch); mousewheelTimer = setTimeout(function() { mousewheelTimer = null; zoomended(dispatch); @@ -36361,14 +37471,7 @@ module.exports = C3Wrapper; } return d3.rebind(zoom, event, "on"); }; - var d3_behavior_zoomInfinity = [ 0, Infinity ]; - var d3_behavior_zoomDelta, d3_behavior_zoomWheel = "onwheel" in d3_document ? (d3_behavior_zoomDelta = function() { - return -d3.event.deltaY * (d3.event.deltaMode ? 120 : 1); - }, "wheel") : "onmousewheel" in d3_document ? (d3_behavior_zoomDelta = function() { - return d3.event.wheelDelta; - }, "mousewheel") : (d3_behavior_zoomDelta = function() { - return -d3.event.detail; - }, "MozMousePixelScroll"); + var d3_behavior_zoomInfinity = [ 0, Infinity ], d3_behavior_zoomDelta, d3_behavior_zoomWheel; d3.color = d3_color; function d3_color() {} d3_color.prototype.toString = function() { @@ -36498,7 +37601,7 @@ module.exports = C3Wrapper; } function d3_rgb_parse(format, rgb, hsl) { var r = 0, g = 0, b = 0, m1, m2, color; - m1 = /([a-z]+)\((.*)\)/i.exec(format); + m1 = /([a-z]+)\((.*)\)/.exec(format = format.toLowerCase()); if (m1) { m2 = m1[2].split(","); switch (m1[1]) { @@ -36513,7 +37616,9 @@ module.exports = C3Wrapper; } } } - if (color = d3_rgb_names.get(format)) return rgb(color.r, color.g, color.b); + if (color = d3_rgb_names.get(format)) { + return rgb(color.r, color.g, color.b); + } if (format != null && format.charAt(0) === "#" && !isNaN(color = parseInt(format.slice(1), 16))) { if (format.length === 4) { r = (color & 3840) >> 4; @@ -36676,6 +37781,7 @@ module.exports = C3Wrapper; plum: 14524637, powderblue: 11591910, purple: 8388736, + rebeccapurple: 6697881, red: 16711680, rosybrown: 12357519, royalblue: 4286945, @@ -36714,9 +37820,6 @@ module.exports = C3Wrapper; }; } d3.functor = d3_functor; - function d3_identity(d) { - return d; - } d3.xhr = d3_xhrType(d3_identity); function d3_xhrType(response) { return function(url, mimeType, callback) { @@ -36727,7 +37830,7 @@ module.exports = C3Wrapper; } function d3_xhr(url, mimeType, response, callback) { var xhr = {}, dispatch = d3.dispatch("beforesend", "progress", "load", "error"), headers = {}, request = new XMLHttpRequest(), responseType = null; - if (d3_window.XDomainRequest && !("withCredentials" in request) && /^(http(s)?:)?\/\//.test(url)) request = new XDomainRequest(); + if (this.XDomainRequest && !("withCredentials" in request) && /^(http(s)?:)?\/\//.test(url)) request = new XDomainRequest(); "onload" in request ? request.onload = request.onerror = respond : request.onreadystatechange = function() { request.readyState > 3 && respond(); }; @@ -36913,17 +38016,19 @@ module.exports = C3Wrapper; }; d3.csv = d3.dsv(",", "text/csv"); d3.tsv = d3.dsv(" ", "text/tab-separated-values"); - var d3_timer_queueHead, d3_timer_queueTail, d3_timer_interval, d3_timer_timeout, d3_timer_active, d3_timer_frame = d3_window[d3_vendorSymbol(d3_window, "requestAnimationFrame")] || function(callback) { + var d3_timer_queueHead, d3_timer_queueTail, d3_timer_interval, d3_timer_timeout, d3_timer_frame = this[d3_vendorSymbol(this, "requestAnimationFrame")] || function(callback) { setTimeout(callback, 17); }; - d3.timer = function(callback, delay, then) { + d3.timer = function() { + d3_timer.apply(this, arguments); + }; + function d3_timer(callback, delay, then) { var n = arguments.length; if (n < 2) delay = 0; if (n < 3) then = Date.now(); var time = then + delay, timer = { c: callback, t: time, - f: false, n: null }; if (d3_timer_queueTail) d3_timer_queueTail.n = timer; else d3_timer_queueHead = timer; @@ -36933,7 +38038,8 @@ module.exports = C3Wrapper; d3_timer_interval = 1; d3_timer_frame(d3_timer_step); } - }; + return timer; + } function d3_timer_step() { var now = d3_timer_mark(), delay = d3_timer_sweep() - now; if (delay > 24) { @@ -36952,22 +38058,21 @@ module.exports = C3Wrapper; d3_timer_sweep(); }; function d3_timer_mark() { - var now = Date.now(); - d3_timer_active = d3_timer_queueHead; - while (d3_timer_active) { - if (now >= d3_timer_active.t) d3_timer_active.f = d3_timer_active.c(now - d3_timer_active.t); - d3_timer_active = d3_timer_active.n; + var now = Date.now(), timer = d3_timer_queueHead; + while (timer) { + if (now >= timer.t && timer.c(now - timer.t)) timer.c = null; + timer = timer.n; } return now; } function d3_timer_sweep() { var t0, t1 = d3_timer_queueHead, time = Infinity; while (t1) { - if (t1.f) { - t1 = t0 ? t0.n = t1.n : d3_timer_queueHead = t1.n; - } else { + if (t1.c) { if (t1.t < time) time = t1.t; t1 = (t0 = t1).n; + } else { + t1 = t0 ? t0.n = t1.n : d3_timer_queueHead = t1.n; } } d3_timer_queueTail = t0; @@ -36982,7 +38087,7 @@ module.exports = C3Wrapper; var d3_formatPrefixes = [ "y", "z", "a", "f", "p", "n", "µ", "m", "", "k", "M", "G", "T", "P", "E", "Z", "Y" ].map(d3_formatPrefix); d3.formatPrefix = function(value, precision) { var i = 0; - if (value) { + if (value = +value) { if (value < 0) value *= -1; if (precision) value = d3.round(value, d3_format_precision(value, precision)); i = 1 + Math.floor(1e-12 + Math.log(value) / Math.LN10); @@ -37332,7 +38437,8 @@ module.exports = C3Wrapper; if (i != string.length) return null; if ("p" in d) d.H = d.H % 12 + d.p * 12; var localZ = d.Z != null && d3_date !== d3_date_utc, date = new (localZ ? d3_date_utc : d3_date)(); - if ("j" in d) date.setFullYear(d.y, 0, d.j); else if ("w" in d && ("W" in d || "U" in d)) { + if ("j" in d) date.setFullYear(d.y, 0, d.j); else if ("W" in d || "U" in d) { + if (!("w" in d)) d.w = "W" in d ? 1 : 0; date.setFullYear(d.y, 0, 1); date.setFullYear(d.y, 0, "W" in d ? (d.w + 6) % 7 + d.W * 7 - (date.getDay() + 5) % 7 : d.w + d.U * 7 - (date.getDay() + 6) % 7); } else date.setFullYear(d.y, d.m, d.d); @@ -38316,7 +39422,7 @@ module.exports = C3Wrapper; λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ, point0 = point; } } - return (polarAngle < -ε || polarAngle < ε && d3_geo_areaRingSum < 0) ^ winding & 1; + return (polarAngle < -ε || polarAngle < ε && d3_geo_areaRingSum < -ε) ^ winding & 1; } function d3_geo_clipCircle(radius) { var cr = Math.cos(radius), smallRadius = cr > 0, notHemisphere = abs(cr) > ε, interpolate = d3_geo_circleInterpolate(radius, 6 * d3_radians); @@ -40474,7 +41580,7 @@ module.exports = C3Wrapper; (function find(node, x1, y1, x2, y2) { if (x1 > x3 || y1 > y3 || x2 < x0 || y2 < y0) return; if (point = node.point) { - var point, dx = x - point[0], dy = y - point[1], distance2 = dx * dx + dy * dy; + var point, dx = x - node.x, dy = y - node.y, distance2 = dx * dx + dy * dy; if (distance2 < minDistance2) { var distance = Math.sqrt(minDistance2 = distance2); x0 = x - distance, y0 = y - distance; @@ -40583,7 +41689,7 @@ module.exports = C3Wrapper; } d3.interpolators = [ function(a, b) { var t = typeof b; - return (t === "string" ? d3_rgb_names.has(b) || /^(#|rgb\(|hsl\()/.test(b) ? d3_interpolateRgb : d3_interpolateString : b instanceof d3_color ? d3_interpolateRgb : Array.isArray(b) ? d3_interpolateArray : t === "object" && isNaN(b) ? d3_interpolateObject : d3_interpolateNumber)(a, b); + return (t === "string" ? d3_rgb_names.has(b.toLowerCase()) || /^(#|rgb\(|hsl\()/i.test(b) ? d3_interpolateRgb : d3_interpolateString : b instanceof d3_color ? d3_interpolateRgb : Array.isArray(b) ? d3_interpolateArray : t === "object" && isNaN(b) ? d3_interpolateObject : d3_interpolateNumber)(a, b); } ]; d3.interpolateArray = d3_interpolateArray; function d3_interpolateArray(a, b) { @@ -40784,54 +41890,68 @@ module.exports = C3Wrapper; f: 0 }; d3.interpolateTransform = d3_interpolateTransform; - function d3_interpolateTransform(a, b) { - var s = [], q = [], n, A = d3.transform(a), B = d3.transform(b), ta = A.translate, tb = B.translate, ra = A.rotate, rb = B.rotate, wa = A.skew, wb = B.skew, ka = A.scale, kb = B.scale; - if (ta[0] != tb[0] || ta[1] != tb[1]) { - s.push("translate(", null, ",", null, ")"); + function d3_interpolateTransformPop(s) { + return s.length ? s.pop() + "," : ""; + } + function d3_interpolateTranslate(ta, tb, s, q) { + if (ta[0] !== tb[0] || ta[1] !== tb[1]) { + var i = s.push("translate(", null, ",", null, ")"); q.push({ - i: 1, + i: i - 4, x: d3_interpolateNumber(ta[0], tb[0]) }, { - i: 3, + i: i - 2, x: d3_interpolateNumber(ta[1], tb[1]) }); } else if (tb[0] || tb[1]) { s.push("translate(" + tb + ")"); - } else { - s.push(""); } - if (ra != rb) { + } + function d3_interpolateRotate(ra, rb, s, q) { + if (ra !== rb) { if (ra - rb > 180) rb += 360; else if (rb - ra > 180) ra += 360; q.push({ - i: s.push(s.pop() + "rotate(", null, ")") - 2, + i: s.push(d3_interpolateTransformPop(s) + "rotate(", null, ")") - 2, x: d3_interpolateNumber(ra, rb) }); } else if (rb) { - s.push(s.pop() + "rotate(" + rb + ")"); + s.push(d3_interpolateTransformPop(s) + "rotate(" + rb + ")"); } - if (wa != wb) { + } + function d3_interpolateSkew(wa, wb, s, q) { + if (wa !== wb) { q.push({ - i: s.push(s.pop() + "skewX(", null, ")") - 2, + i: s.push(d3_interpolateTransformPop(s) + "skewX(", null, ")") - 2, x: d3_interpolateNumber(wa, wb) }); } else if (wb) { - s.push(s.pop() + "skewX(" + wb + ")"); + s.push(d3_interpolateTransformPop(s) + "skewX(" + wb + ")"); } - if (ka[0] != kb[0] || ka[1] != kb[1]) { - n = s.push(s.pop() + "scale(", null, ",", null, ")"); + } + function d3_interpolateScale(ka, kb, s, q) { + if (ka[0] !== kb[0] || ka[1] !== kb[1]) { + var i = s.push(d3_interpolateTransformPop(s) + "scale(", null, ",", null, ")"); q.push({ - i: n - 4, + i: i - 4, x: d3_interpolateNumber(ka[0], kb[0]) }, { - i: n - 2, + i: i - 2, x: d3_interpolateNumber(ka[1], kb[1]) }); - } else if (kb[0] != 1 || kb[1] != 1) { - s.push(s.pop() + "scale(" + kb + ")"); + } else if (kb[0] !== 1 || kb[1] !== 1) { + s.push(d3_interpolateTransformPop(s) + "scale(" + kb + ")"); } - n = q.length; + } + function d3_interpolateTransform(a, b) { + var s = [], q = []; + a = d3.transform(a), b = d3.transform(b); + d3_interpolateTranslate(a.translate, b.translate, s, q); + d3_interpolateRotate(a.rotate, b.rotate, s, q); + d3_interpolateSkew(a.skew, b.skew, s, q); + d3_interpolateScale(a.scale, b.scale, s, q); + a = b = null; return function(t) { - var i = -1, o; + var i = -1, n = q.length, o; while (++i < n) s[(o = q[i]).i] = o.x(t); return s.join(""); }; @@ -40935,7 +42055,7 @@ module.exports = C3Wrapper; index: di, startAngle: x0, endAngle: x, - value: (x - x0) / k + value: groupSums[di] }; x += padding; } @@ -41003,7 +42123,7 @@ module.exports = C3Wrapper; return chord; }; d3.layout.force = function() { - var force = {}, event = d3.dispatch("start", "tick", "end"), size = [ 1, 1 ], drag, alpha, friction = .9, linkDistance = d3_layout_forceLinkDistance, linkStrength = d3_layout_forceLinkStrength, charge = -30, chargeDistance2 = d3_layout_forceChargeDistance2, gravity = .1, theta2 = .64, nodes = [], links = [], distances, strengths, charges; + var force = {}, event = d3.dispatch("start", "tick", "end"), timer, size = [ 1, 1 ], drag, alpha, friction = .9, linkDistance = d3_layout_forceLinkDistance, linkStrength = d3_layout_forceLinkStrength, charge = -30, chargeDistance2 = d3_layout_forceChargeDistance2, gravity = .1, theta2 = .64, nodes = [], links = [], distances, strengths, charges; function repulse(node) { return function(quad, x1, _, x2) { if (quad.point !== node) { @@ -41027,6 +42147,7 @@ module.exports = C3Wrapper; } force.tick = function() { if ((alpha *= .99) < .005) { + timer = null; event.end({ type: "end", alpha: alpha = 0 @@ -41044,7 +42165,7 @@ module.exports = C3Wrapper; l = alpha * strengths[i] * ((l = Math.sqrt(l)) - distances[i]) / l; x *= l; y *= l; - t.x -= x * (k = s.weight / (t.weight + s.weight)); + t.x -= x * (k = s.weight + t.weight ? s.weight / (s.weight + t.weight) : .5); t.y -= y * k; s.x += x * (k = 1 - k); s.y += y * k; @@ -41140,13 +42261,21 @@ module.exports = C3Wrapper; if (!arguments.length) return alpha; x = +x; if (alpha) { - if (x > 0) alpha = x; else alpha = 0; + if (x > 0) { + alpha = x; + } else { + timer.c = null, timer.t = NaN, timer = null; + event.end({ + type: "end", + alpha: alpha = 0 + }); + } } else if (x > 0) { event.start({ type: "start", alpha: alpha = x }); - d3.timer(force.tick); + timer = d3_timer(force.tick); } return force; }; @@ -41188,8 +42317,8 @@ module.exports = C3Wrapper; neighbors[o.target.index].push(o.source); } } - var candidates = neighbors[i], j = -1, m = candidates.length, x; - while (++j < m) if (!isNaN(x = candidates[j][dimension])) return x; + var candidates = neighbors[i], j = -1, l = candidates.length, x; + while (++j < l) if (!isNaN(x = candidates[j][dimension])) return x; return Math.random() * size; } return force.resume(); @@ -41400,7 +42529,7 @@ module.exports = C3Wrapper; function pie(data) { var n = data.length, values = data.map(function(d, i) { return +value.call(pie, d, i); - }), a = +(typeof startAngle === "function" ? startAngle.apply(this, arguments) : startAngle), da = (typeof endAngle === "function" ? endAngle.apply(this, arguments) : endAngle) - a, p = Math.min(Math.abs(da) / n, +(typeof padAngle === "function" ? padAngle.apply(this, arguments) : padAngle)), pa = p * (da < 0 ? -1 : 1), k = (da - n * pa) / d3.sum(values), index = d3.range(n), arcs = [], v; + }), a = +(typeof startAngle === "function" ? startAngle.apply(this, arguments) : startAngle), da = (typeof endAngle === "function" ? endAngle.apply(this, arguments) : endAngle) - a, p = Math.min(Math.abs(da) / n, +(typeof padAngle === "function" ? padAngle.apply(this, arguments) : padAngle)), pa = p * (da < 0 ? -1 : 1), sum = d3.sum(values), k = sum ? (da - n * pa) / sum : 0, index = d3.range(n), arcs = [], v; if (sort != null) index.sort(sort === d3_layout_pieSortByValue ? function(i, j) { return values[j] - values[i]; } : function(i, j) { @@ -42113,10 +43242,8 @@ module.exports = C3Wrapper; } function treemap(d) { var nodes = stickies || hierarchy(d), root = nodes[0]; - root.x = 0; - root.y = 0; - root.dx = size[0]; - root.dy = size[1]; + root.x = root.y = 0; + if (root.value) root.dx = size[0], root.dy = size[1]; else root.dx = root.dy = 0; if (stickies) hierarchy.revalue(root); scale([ root ], root.dx * root.dy / root.value); (stickies ? stickify : squarify)(root); @@ -42336,7 +43463,9 @@ module.exports = C3Wrapper; return d3.rebind(scale, linear, "range", "rangeRound", "interpolate", "clamp"); } function d3_scale_linearNice(domain, m) { - return d3_scale_nice(domain, d3_scale_niceStep(d3_scale_linearTickRange(domain, m)[2])); + d3_scale_nice(domain, d3_scale_niceStep(d3_scale_linearTickRange(domain, m)[2])); + d3_scale_nice(domain, d3_scale_niceStep(d3_scale_linearTickRange(domain, m)[2])); + return domain; } function d3_scale_linearTickRange(domain, m) { if (m == null) m = 10; @@ -42438,10 +43567,11 @@ module.exports = C3Wrapper; scale.tickFormat = function(n, format) { if (!arguments.length) return d3_scale_logFormat; if (arguments.length < 2) format = d3_scale_logFormat; else if (typeof format !== "function") format = d3.format(format); - var k = Math.max(.1, n / scale.ticks().length), f = positive ? (e = 1e-12, Math.ceil) : (e = -1e-12, - Math.floor), e; + var k = Math.max(1, base * n / scale.ticks().length); return function(d) { - return d / pow(f(log(d) + e)) <= k ? format(d) : ""; + var i = d / pow(Math.round(log(d))); + if (i * base < base - .5) i *= base; + return i <= k ? format(d) : ""; }; }; scale.copy = function() { @@ -42780,11 +43910,16 @@ module.exports = C3Wrapper; } else { x2 = y2 = 0; } - if ((rc = Math.min(Math.abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments))) > .001) { + if (da > ε && (rc = Math.min(Math.abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments))) > .001) { cr = r0 < r1 ^ cw ? 0 : 1; - var oc = x3 == null ? [ x2, y2 ] : x1 == null ? [ x0, y0 ] : d3_geom_polygonIntersect([ x0, y0 ], [ x3, y3 ], [ x1, y1 ], [ x2, y2 ]), ax = x0 - oc[0], ay = y0 - oc[1], bx = x1 - oc[0], by = y1 - oc[1], kc = 1 / Math.sin(Math.acos((ax * bx + ay * by) / (Math.sqrt(ax * ax + ay * ay) * Math.sqrt(bx * bx + by * by))) / 2), lc = Math.sqrt(oc[0] * oc[0] + oc[1] * oc[1]); + var rc1 = rc, rc0 = rc; + if (da < π) { + var oc = x3 == null ? [ x2, y2 ] : x1 == null ? [ x0, y0 ] : d3_geom_polygonIntersect([ x0, y0 ], [ x3, y3 ], [ x1, y1 ], [ x2, y2 ]), ax = x0 - oc[0], ay = y0 - oc[1], bx = x1 - oc[0], by = y1 - oc[1], kc = 1 / Math.sin(Math.acos((ax * bx + ay * by) / (Math.sqrt(ax * ax + ay * ay) * Math.sqrt(bx * bx + by * by))) / 2), lc = Math.sqrt(oc[0] * oc[0] + oc[1] * oc[1]); + rc0 = Math.min(rc, (r0 - lc) / (kc - 1)); + rc1 = Math.min(rc, (r1 - lc) / (kc + 1)); + } if (x1 != null) { - var rc1 = Math.min(rc, (r1 - lc) / (kc + 1)), t30 = d3_svg_arcCornerTangents(x3 == null ? [ x2, y2 ] : [ x3, y3 ], [ x0, y0 ], r1, rc1, cw), t12 = d3_svg_arcCornerTangents([ x1, y1 ], [ x2, y2 ], r1, rc1, cw); + var t30 = d3_svg_arcCornerTangents(x3 == null ? [ x2, y2 ] : [ x3, y3 ], [ x0, y0 ], r1, rc1, cw), t12 = d3_svg_arcCornerTangents([ x1, y1 ], [ x2, y2 ], r1, rc1, cw); if (rc === rc1) { path.push("M", t30[0], "A", rc1, ",", rc1, " 0 0,", cr, " ", t30[1], "A", r1, ",", r1, " 0 ", 1 - cw ^ d3_svg_arcSweep(t30[1][0], t30[1][1], t12[1][0], t12[1][1]), ",", cw, " ", t12[1], "A", rc1, ",", rc1, " 0 0,", cr, " ", t12[0]); } else { @@ -42794,7 +43929,7 @@ module.exports = C3Wrapper; path.push("M", x0, ",", y0); } if (x3 != null) { - var rc0 = Math.min(rc, (r0 - lc) / (kc - 1)), t03 = d3_svg_arcCornerTangents([ x0, y0 ], [ x3, y3 ], r0, -rc0, cw), t21 = d3_svg_arcCornerTangents([ x2, y2 ], x1 == null ? [ x0, y0 ] : [ x1, y1 ], r0, -rc0, cw); + var t03 = d3_svg_arcCornerTangents([ x0, y0 ], [ x3, y3 ], r0, -rc0, cw), t21 = d3_svg_arcCornerTangents([ x2, y2 ], x1 == null ? [ x0, y0 ] : [ x1, y1 ], r0, -rc0, cw); if (rc === rc0) { path.push("L", t21[0], "A", rc0, ",", rc0, " 0 0,", cr, " ", t21[1], "A", r0, ",", r0, " 0 ", cw ^ d3_svg_arcSweep(t21[1][0], t21[1][1], t03[1][0], t03[1][1]), ",", 1 - cw, " ", t03[1], "A", rc0, ",", rc0, " 0 0,", cr, " ", t03[0]); } else { @@ -42876,7 +44011,7 @@ module.exports = C3Wrapper; return (x0 - x1) * y0 - (y0 - y1) * x0 > 0 ? 0 : 1; } function d3_svg_arcCornerTangents(p0, p1, r1, rc, cw) { - var x01 = p0[0] - p1[0], y01 = p0[1] - p1[1], lo = (cw ? rc : -rc) / Math.sqrt(x01 * x01 + y01 * y01), ox = lo * y01, oy = -lo * x01, x1 = p0[0] + ox, y1 = p0[1] + oy, x2 = p1[0] + ox, y2 = p1[1] + oy, x3 = (x1 + x2) / 2, y3 = (y1 + y2) / 2, dx = x2 - x1, dy = y2 - y1, d2 = dx * dx + dy * dy, r = r1 - rc, D = x1 * y2 - x2 * y1, d = (dy < 0 ? -1 : 1) * Math.sqrt(r * r * d2 - D * D), cx0 = (D * dy - dx * d) / d2, cy0 = (-D * dx - dy * d) / d2, cx1 = (D * dy + dx * d) / d2, cy1 = (-D * dx + dy * d) / d2, dx0 = cx0 - x3, dy0 = cy0 - y3, dx1 = cx1 - x3, dy1 = cy1 - y3; + var x01 = p0[0] - p1[0], y01 = p0[1] - p1[1], lo = (cw ? rc : -rc) / Math.sqrt(x01 * x01 + y01 * y01), ox = lo * y01, oy = -lo * x01, x1 = p0[0] + ox, y1 = p0[1] + oy, x2 = p1[0] + ox, y2 = p1[1] + oy, x3 = (x1 + x2) / 2, y3 = (y1 + y2) / 2, dx = x2 - x1, dy = y2 - y1, d2 = dx * dx + dy * dy, r = r1 - rc, D = x1 * y2 - x2 * y1, d = (dy < 0 ? -1 : 1) * Math.sqrt(Math.max(0, r * r * d2 - D * D)), cx0 = (D * dy - dx * d) / d2, cy0 = (-D * dx - dy * d) / d2, cx1 = (D * dy + dx * d) / d2, cy1 = (-D * dx + dy * d) / d2, dx0 = cx0 - x3, dy0 = cy0 - y3, dx1 = cx1 - x3, dy1 = cy1 - y3; if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1; return [ [ cx0 - ox, cy0 - oy ], [ cx0 * r1 / r, cy0 * r1 / r ] ]; } @@ -42948,10 +44083,10 @@ module.exports = C3Wrapper; value.closed = /-closed$/.test(key); }); function d3_svg_lineLinear(points) { - return points.join("L"); + return points.length > 1 ? points.join("L") : points + "Z"; } function d3_svg_lineLinearClosed(points) { - return d3_svg_lineLinear(points) + "Z"; + return points.join("L") + "Z"; } function d3_svg_lineStep(points) { var i = 0, n = points.length, p = points[0], path = [ p[0], ",", p[1] ]; @@ -42973,7 +44108,7 @@ module.exports = C3Wrapper; return points.length < 4 ? d3_svg_lineLinear(points) : points[1] + d3_svg_lineHermite(points.slice(1, -1), d3_svg_lineCardinalTangents(points, tension)); } function d3_svg_lineCardinalClosed(points, tension) { - return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite((points.push(points[0]), + return points.length < 3 ? d3_svg_lineLinearClosed(points) : points[0] + d3_svg_lineHermite((points.push(points[0]), points), d3_svg_lineCardinalTangents([ points[points.length - 2] ].concat(points, [ points[1] ]), tension)); } function d3_svg_lineCardinal(points, tension) { @@ -43387,9 +44522,41 @@ module.exports = C3Wrapper; }); d3.svg.symbolTypes = d3_svg_symbols.keys(); var d3_svg_symbolSqrt3 = Math.sqrt(3), d3_svg_symbolTan30 = Math.tan(30 * d3_radians); - function d3_transition(groups, namespace, id) { + d3_selectionPrototype.transition = function(name) { + var id = d3_transitionInheritId || ++d3_transitionId, ns = d3_transitionNamespace(name), subgroups = [], subgroup, node, transition = d3_transitionInherit || { + time: Date.now(), + ease: d3_ease_cubicInOut, + delay: 0, + duration: 250 + }; + for (var j = -1, m = this.length; ++j < m; ) { + subgroups.push(subgroup = []); + for (var group = this[j], i = -1, n = group.length; ++i < n; ) { + if (node = group[i]) d3_transitionNode(node, i, ns, id, transition); + subgroup.push(node); + } + } + return d3_transition(subgroups, ns, id); + }; + d3_selectionPrototype.interrupt = function(name) { + return this.each(name == null ? d3_selection_interrupt : d3_selection_interruptNS(d3_transitionNamespace(name))); + }; + var d3_selection_interrupt = d3_selection_interruptNS(d3_transitionNamespace()); + function d3_selection_interruptNS(ns) { + return function() { + var lock, activeId, active; + if ((lock = this[ns]) && (active = lock[activeId = lock.active])) { + active.timer.c = null; + active.timer.t = NaN; + if (--lock.count) delete lock[activeId]; else delete this[ns]; + lock.active += .5; + active.event && active.event.interrupt.call(this, this.__data__, active.index); + } + }; + } + function d3_transition(groups, ns, id) { d3_subclass(groups, d3_transitionPrototype); - groups.namespace = namespace; + groups.namespace = ns; groups.id = id; return groups; } @@ -43398,8 +44565,8 @@ module.exports = C3Wrapper; d3_transitionPrototype.empty = d3_selectionPrototype.empty; d3_transitionPrototype.node = d3_selectionPrototype.node; d3_transitionPrototype.size = d3_selectionPrototype.size; - d3.transition = function(selection) { - return arguments.length ? d3_transitionInheritId ? selection.transition() : selection : d3_selectionRoot.transition(); + d3.transition = function(selection, name) { + return selection && selection.transition ? d3_transitionInheritId ? selection.transition(name) : selection : d3.selection().transition(selection); }; d3.transition.prototype = d3_transitionPrototype; d3_transitionPrototype.select = function(selector) { @@ -43528,7 +44695,7 @@ module.exports = C3Wrapper; } function styleString(b) { return b == null ? styleNull : (b += "", function() { - var a = d3_window.getComputedStyle(this, null).getPropertyValue(name), i; + var a = d3_window(this).getComputedStyle(this, null).getPropertyValue(name), i; return a !== b && (i = d3_interpolate(a, b), function(t) { this.style.setProperty(name, i(t), priority); }); @@ -43539,7 +44706,7 @@ module.exports = C3Wrapper; d3_transitionPrototype.styleTween = function(name, tween, priority) { if (arguments.length < 3) priority = ""; function styleTween(d, i) { - var f = tween.call(this, d, i, d3_window.getComputedStyle(this, null).getPropertyValue(name)); + var f = tween.call(this, d, i, d3_window(this).getComputedStyle(this, null).getPropertyValue(name)); return f && function(t) { this.style.setProperty(name, f(t), priority); }; @@ -43592,13 +44759,16 @@ module.exports = C3Wrapper; var id = this.id, ns = this.namespace; if (arguments.length < 2) { var inherit = d3_transitionInherit, inheritId = d3_transitionInheritId; - d3_transitionInheritId = id; - d3_selection_each(this, function(node, i, j) { - d3_transitionInherit = node[ns][id]; - type.call(node, node.__data__, i, j); - }); - d3_transitionInherit = inherit; - d3_transitionInheritId = inheritId; + try { + d3_transitionInheritId = id; + d3_selection_each(this, function(node, i, j) { + d3_transitionInherit = node[ns][id]; + type.call(node, node.__data__, i, j); + }); + } finally { + d3_transitionInherit = inherit; + d3_transitionInheritId = inheritId; + } } else { d3_selection_each(this, function(node) { var transition = node[ns][id]; @@ -43629,57 +44799,79 @@ module.exports = C3Wrapper; function d3_transitionNamespace(name) { return name == null ? "__transition__" : "__transition_" + name + "__"; } - function d3_transitionNode(node, i, namespace, id, inherit) { - var lock = node[namespace] || (node[namespace] = { + function d3_transitionNode(node, i, ns, id, inherit) { + var lock = node[ns] || (node[ns] = { active: 0, count: 0 - }), transition = lock[id]; + }), transition = lock[id], time, timer, duration, ease, tweens; + function schedule(elapsed) { + var delay = transition.delay; + timer.t = delay + time; + if (delay <= elapsed) return start(elapsed - delay); + timer.c = start; + } + function start(elapsed) { + var activeId = lock.active, active = lock[activeId]; + if (active) { + active.timer.c = null; + active.timer.t = NaN; + --lock.count; + delete lock[activeId]; + active.event && active.event.interrupt.call(node, node.__data__, active.index); + } + for (var cancelId in lock) { + if (+cancelId < id) { + var cancel = lock[cancelId]; + cancel.timer.c = null; + cancel.timer.t = NaN; + --lock.count; + delete lock[cancelId]; + } + } + timer.c = tick; + d3_timer(function() { + if (timer.c && tick(elapsed || 1)) { + timer.c = null; + timer.t = NaN; + } + return 1; + }, 0, time); + lock.active = id; + transition.event && transition.event.start.call(node, node.__data__, i); + tweens = []; + transition.tween.forEach(function(key, value) { + if (value = value.call(node, node.__data__, i)) { + tweens.push(value); + } + }); + ease = transition.ease; + duration = transition.duration; + } + function tick(elapsed) { + var t = elapsed / duration, e = ease(t), n = tweens.length; + while (n > 0) { + tweens[--n].call(node, e); + } + if (t >= 1) { + transition.event && transition.event.end.call(node, node.__data__, i); + if (--lock.count) delete lock[id]; else delete node[ns]; + return 1; + } + } if (!transition) { - var time = inherit.time; + time = inherit.time; + timer = d3_timer(schedule, 0, time); transition = lock[id] = { tween: new d3_Map(), time: time, + timer: timer, delay: inherit.delay, duration: inherit.duration, - ease: inherit.ease + ease: inherit.ease, + index: i }; inherit = null; ++lock.count; - d3.timer(function(elapsed) { - var d = node.__data__, delay = transition.delay, duration, ease, timer = d3_timer_active, tweened = []; - timer.t = delay + time; - if (delay <= elapsed) return start(elapsed - delay); - timer.c = start; - function start(elapsed) { - if (lock.active > id) return stop(false); - lock.active = id; - transition.event && transition.event.start.call(node, d, i); - transition.tween.forEach(function(key, value) { - if (value = value.call(node, d, i)) { - tweened.push(value); - } - }); - ease = transition.ease; - duration = transition.duration; - d3.timer(function() { - timer.c = tick(elapsed || 1) ? d3_true : tick; - return 1; - }, 0, time); - } - function tick(elapsed) { - if (lock.active !== id) return stop(false); - var t = elapsed / duration, e = ease(t), n = tweened.length; - while (n > 0) { - tweened[--n].call(node, e); - } - if (t >= 1) return stop(true); - } - function stop(end) { - if (transition.event) transition.event[end ? "end" : "interrupt"].call(node, d, i); - if (--lock.count) delete lock[id]; else delete node[namespace]; - return 1; - } - }, 0, time); } } d3.svg.axis = function() { @@ -43733,7 +44925,7 @@ module.exports = C3Wrapper; }; axis.ticks = function() { if (!arguments.length) return tickArguments_; - tickArguments_ = arguments; + tickArguments_ = d3_array(arguments); return axis; }; axis.tickValues = function(x) { @@ -43893,8 +45085,8 @@ module.exports = C3Wrapper; g.selectAll(".extent,.e>rect,.w>rect").attr("height", yExtent[1] - yExtent[0]); } function brushstart() { - var target = this, eventTarget = d3.select(d3.event.target), event_ = event.of(target, arguments), g = d3.select(target), resizing = eventTarget.datum(), resizingX = !/^(n|s)$/.test(resizing) && x, resizingY = !/^(e|w)$/.test(resizing) && y, dragging = eventTarget.classed("extent"), dragRestore = d3_event_dragSuppress(), center, origin = d3.mouse(target), offset; - var w = d3.select(d3_window).on("keydown.brush", keydown).on("keyup.brush", keyup); + var target = this, eventTarget = d3.select(d3.event.target), event_ = event.of(target, arguments), g = d3.select(target), resizing = eventTarget.datum(), resizingX = !/^(n|s)$/.test(resizing) && x, resizingY = !/^(e|w)$/.test(resizing) && y, dragging = eventTarget.classed("extent"), dragRestore = d3_event_dragSuppress(target), center, origin = d3.mouse(target), offset; + var w = d3.select(d3_window(target)).on("keydown.brush", keydown).on("keyup.brush", keyup); if (d3.event.changedTouches) { w.on("touchmove.brush", brushmove).on("touchend.brush", brushend); } else { @@ -44255,920 +45447,1099 @@ module.exports = C3Wrapper; d3.xml = d3_xhrType(function(request) { return request.responseXML; }); - if (typeof define === "function" && define.amd) define(d3); else if (typeof module === "object" && module.exports) module.exports = d3; - this.d3 = d3; + if (typeof define === "function" && define.amd) this.d3 = d3, define(d3); else if (typeof module === "object" && module.exports) module.exports = d3; else this.d3 = d3; }(); -},{}],257:[function(require,module,exports){ +},{}],239:[function(_dereq_,module,exports){ 'use strict'; -module.exports = require('react/lib/ReactDOM'); - -},{"react/lib/ReactDOM":368}],258:[function(require,module,exports){ -arguments[4][66][0].apply(exports,arguments) -},{"./GatewayRegistry":261,"dup":66,"react":493}],259:[function(require,module,exports){ -arguments[4][67][0].apply(exports,arguments) -},{"./GatewayRegistry":261,"dup":67,"react":493}],260:[function(require,module,exports){ -arguments[4][68][0].apply(exports,arguments) -},{"./GatewayRegistry":261,"dup":68,"react":493}],261:[function(require,module,exports){ -arguments[4][69][0].apply(exports,arguments) -},{"dup":69}],262:[function(require,module,exports){ -arguments[4][70][0].apply(exports,arguments) -},{"./Gateway":258,"./GatewayDest":259,"./GatewayProvider":260,"dup":70}],263:[function(require,module,exports){ -/* - * Copyright 2015, Yahoo Inc. - * Copyrights licensed under the New BSD License. - * See the accompanying LICENSE file for terms. - */ +module.exports = _dereq_('react/lib/ReactDOM'); +},{"react/lib/ReactDOM":350}],240:[function(_dereq_,module,exports){ 'use strict'; exports.__esModule = true; -var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; +var _react = _dereq_('react'); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } +var _react2 = _interopRequireDefault(_react); -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } +var _GatewayRegistry = _dereq_('./GatewayRegistry'); -function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } +var _GatewayRegistry2 = _interopRequireDefault(_GatewayRegistry); -var _react = require('react'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -var _react2 = _interopRequireDefault(_react); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } -var _types = require('../types'); +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } -var _utils = require('../utils'); +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var FormattedDate = (function (_Component) { - _inherits(FormattedDate, _Component); +var Gateway = (function (_React$Component) { + _inherits(Gateway, _React$Component); - function FormattedDate(props, context) { - _classCallCheck(this, FormattedDate); + function Gateway(props, context) { + _classCallCheck(this, Gateway); - _Component.call(this, props, context); - _utils.assertIntlContext(context); - } + var _this = _possibleConstructorReturn(this, _React$Component.call(this, props, context)); - FormattedDate.prototype.shouldComponentUpdate = function shouldComponentUpdate() { - for (var _len = arguments.length, next = Array(_len), _key = 0; _key < _len; _key++) { - next[_key] = arguments[_key]; - } + _this.gatewayRegistry = context.gatewayRegistry; + return _this; + } - return _utils.shouldIntlComponentUpdate.apply(undefined, [this].concat(next)); - }; + Gateway.prototype.componentWillMount = function componentWillMount() { + this.renderIntoGatewayNode(this.props); + }; - FormattedDate.prototype.render = function render() { - var formatDate = this.context.intl.formatDate; + Gateway.prototype.componentWillReceiveProps = function componentWillReceiveProps(props) { + this.gatewayRegistry.clearChild(this.props.into); + this.renderIntoGatewayNode(props); + }; - var props = this.props; + Gateway.prototype.componentWillUnmount = function componentWillUnmount() { + this.gatewayRegistry.removeChild(this.props.into); + }; - var formattedDate = formatDate(props.value, props); + Gateway.prototype.renderIntoGatewayNode = function renderIntoGatewayNode(props) { + delete props.ref; + this.gatewayRegistry.addChild(this.props.into, props.children); + }; - if (typeof props.children === 'function') { - return props.children(formattedDate); - } + Gateway.prototype.render = function render() { + return null; + }; - return _react2['default'].createElement( - 'span', - null, - formattedDate - ); - }; + return Gateway; +})(_react2.default.Component); - return FormattedDate; -})(_react.Component); +Gateway.contextTypes = { + gatewayRegistry: _react2.default.PropTypes.instanceOf(_GatewayRegistry2.default).isRequired +}; +Gateway.propTypes = { + into: _react2.default.PropTypes.string.isRequired, + children: _react2.default.PropTypes.oneOfType([_react2.default.PropTypes.element, _react2.default.PropTypes.string]) +}; +exports.default = Gateway; +},{"./GatewayRegistry":243,"react":475}],241:[function(_dereq_,module,exports){ +'use strict'; -exports['default'] = FormattedDate; +exports.__esModule = true; -FormattedDate.propTypes = _extends({}, _types.dateTimeFormatPropTypes, { - format: _react.PropTypes.string, - value: _react.PropTypes.any.isRequired -}); +var _react = _dereq_('react'); -FormattedDate.contextTypes = { - intl: _types.intlShape -}; -module.exports = exports['default']; -},{"../types":277,"../utils":278,"react":493}],264:[function(require,module,exports){ -/* - * Copyright 2015, Yahoo Inc. - * Copyrights licensed under the New BSD License. - * See the accompanying LICENSE file for terms. - */ +var _react2 = _interopRequireDefault(_react); -'use strict'; +var _GatewayRegistry = _dereq_('./GatewayRegistry'); -exports.__esModule = true; +var _GatewayRegistry2 = _interopRequireDefault(_GatewayRegistry); -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } +var _reactPropTypes = _dereq_('react-prop-types'); -function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -var _react = require('react'); +function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; } -var Group = (function (_Component) { - _inherits(Group, _Component); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - function Group() { - _classCallCheck(this, Group); +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - _Component.apply(this, arguments); - } +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - Group.prototype.render = function render() { - var props = this.props; +var GatewayDest = (function (_React$Component) { + _inherits(GatewayDest, _React$Component); - var renderDelegate = Object.keys(props).filter(function (prop) { - return _react.isValidElement(props[prop]); - }).reduceRight(function (renderDelegate, prop) { - return function () { - var nodes = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; + function GatewayDest(props, context) { + _classCallCheck(this, GatewayDest); - return _react.cloneElement(props[prop], null, function (node) { - nodes[prop] = node; - return renderDelegate(nodes); - }); - }; - }, props.children); + var _this = _possibleConstructorReturn(this, _React$Component.call(this, props, context)); - return renderDelegate(); + _this.state = { + child: null }; - return Group; -})(_react.Component); + _this.gatewayRegistry = context.gatewayRegistry; + return _this; + } -exports['default'] = Group; + GatewayDest.prototype.componentWillMount = function componentWillMount() { + this.gatewayRegistry.addContainer(this.props.name, this); + }; -Group.propTypes = { - children: _react.PropTypes.func.isRequired -}; -module.exports = exports['default']; -},{"react":493}],265:[function(require,module,exports){ -/* - * Copyright 2015, Yahoo Inc. - * Copyrights licensed under the New BSD License. - * See the accompanying LICENSE file for terms. - */ + GatewayDest.prototype.componentWillUnmount = function componentWillUnmount() { + this.gatewayRegistry.removeContainer(this.props.name, this); + }; + + GatewayDest.prototype.render = function render() { + var _props = this.props; + var component = _props.component; + var tagName = _props.tagName; + + var attrs = _objectWithoutProperties(_props, ['component', 'tagName']); + + delete attrs.name; + return _react2.default.createElement(component || tagName || 'div', attrs, this.state.child); + }; + + return GatewayDest; +})(_react2.default.Component); +GatewayDest.contextTypes = { + gatewayRegistry: _react2.default.PropTypes.instanceOf(_GatewayRegistry2.default).isRequired +}; +GatewayDest.propTypes = { + name: _react2.default.PropTypes.string.isRequired, + tagName: (0, _reactPropTypes.deprecated)(_react2.default.PropTypes.string, 'Use "component" instead.'), + component: _react2.default.PropTypes.oneOfType([_react2.default.PropTypes.string, _react2.default.PropTypes.func]) +}; +exports.default = GatewayDest; +},{"./GatewayRegistry":243,"react":475,"react-prop-types":249}],242:[function(_dereq_,module,exports){ 'use strict'; exports.__esModule = true; -var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; +var _react = _dereq_('react'); -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } +var _react2 = _interopRequireDefault(_react); -function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } +var _GatewayRegistry = _dereq_('./GatewayRegistry'); -var _react = require('react'); +var _GatewayRegistry2 = _interopRequireDefault(_GatewayRegistry); -var _types = require('../types'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -var _utils = require('../utils'); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } -var FormattedHTMLMessage = (function (_Component) { - _inherits(FormattedHTMLMessage, _Component); +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - function FormattedHTMLMessage(props, context) { - _classCallCheck(this, FormattedHTMLMessage); +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - _Component.call(this, props, context); - _utils.assertIntlContext(context); - } +var GatewayProvider = (function (_React$Component) { + _inherits(GatewayProvider, _React$Component); - FormattedHTMLMessage.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps) { - var values = this.props.values; - var nextValues = nextProps.values; + GatewayProvider.prototype.getChildContext = function getChildContext() { + return { + gatewayRegistry: this.gatewayRegistry + }; + }; - if (!_utils.shallowEquals(nextValues, values)) { - return true; - } + function GatewayProvider(props, context) { + _classCallCheck(this, GatewayProvider); - var nextPropsToCheck = _extends({}, nextProps, { - values: null - }); + var _this = _possibleConstructorReturn(this, _React$Component.call(this, props, context)); - for (var _len = arguments.length, next = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - next[_key - 1] = arguments[_key]; - } + _this.gatewayRegistry = new _GatewayRegistry2.default(); + return _this; + } - return _utils.shouldIntlComponentUpdate.apply(undefined, [this, nextPropsToCheck].concat(next)); - }; + GatewayProvider.prototype.render = function render() { + return this.props.children; + }; - FormattedHTMLMessage.prototype.render = function render() { - var formatHTMLMessage = this.context.intl.formatHTMLMessage; + return GatewayProvider; +})(_react2.default.Component); - var props = this.props; +GatewayProvider.childContextTypes = { + gatewayRegistry: _react2.default.PropTypes.instanceOf(_GatewayRegistry2.default).isRequired +}; +GatewayProvider.propTypes = { + children: _react2.default.PropTypes.element +}; +exports.default = GatewayProvider; +},{"./GatewayRegistry":243,"react":475}],243:[function(_dereq_,module,exports){ +'use strict'; - var id = props.id; - var description = props.description; - var defaultMessage = props.defaultMessage; - var values = props.values; - var tagName = props.tagName; +exports.__esModule = true; - var descriptor = { id: id, description: description, defaultMessage: defaultMessage }; - var formattedHTMLMessage = formatHTMLMessage(descriptor, values); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - if (typeof props.children === 'function') { - return props.children(formattedHTMLMessage); - } +var GatewayRegistry = (function () { + function GatewayRegistry() { + _classCallCheck(this, GatewayRegistry); - // Since the message presumably has HTML in it, we need to set - // `innerHTML` in order for it to be rendered and not escaped by React. - // To be safe, all string prop values were escaped before formatting the - // message. It is assumed that the message is not UGC, and came from the - // developer making it more like a template. - // - // Note: There's a perf impact of using this component since there's no - // way for React to do its virtual DOM diffing. - return _react.createElement(tagName, { - dangerouslySetInnerHTML: { - __html: formattedHTMLMessage - } - }); - }; + this._containers = {}; + this._children = {}; + } - return FormattedHTMLMessage; -})(_react.Component); + GatewayRegistry.prototype._renderContainer = function _renderContainer(name) { + if (!this._containers[name]) { + return; + } -exports['default'] = FormattedHTMLMessage; + this._containers[name].setState({ + child: this._children[name] + }); + }; -FormattedHTMLMessage.propTypes = { - id: _react.PropTypes.string, - description: _react.PropTypes.string, - defaultMessage: _react.PropTypes.string, + GatewayRegistry.prototype.addContainer = function addContainer(name, container) { + this._containers[name] = container; + this._renderContainer(name); + }; - values: _react.PropTypes.object, - tagName: _react.PropTypes.string -}; + GatewayRegistry.prototype.removeContainer = function removeContainer(name) { + this._containers[name] = null; + }; -FormattedHTMLMessage.contextTypes = { - intl: _types.intlShape -}; + GatewayRegistry.prototype.addChild = function addChild(name, child) { + if (this._children[name]) { + console.warn('Only a single Gateway can be rendered at a time into a GatewayDest.' + ('You rendered multiple into "' + name + '"')); + } + this._children[name] = child; + this._renderContainer(name); + }; -FormattedHTMLMessage.defaultProps = { - tagName: 'span', - values: {} -}; -module.exports = exports['default']; -},{"../types":277,"../utils":278,"react":493}],266:[function(require,module,exports){ -/* - * Copyright 2015, Yahoo Inc. - * Copyrights licensed under the New BSD License. - * See the accompanying LICENSE file for terms. - */ + GatewayRegistry.prototype.clearChild = function clearChild(name) { + this._children[name] = null; + }; + + GatewayRegistry.prototype.removeChild = function removeChild(name) { + this.clearChild(name); + this._renderContainer(name); + }; + return GatewayRegistry; +})(); + +exports.default = GatewayRegistry; +},{}],244:[function(_dereq_,module,exports){ 'use strict'; exports.__esModule = true; +exports.GatewayProvider = exports.GatewayDest = exports.Gateway = undefined; -var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } } +var _Gateway2 = _dereq_('./Gateway'); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } +var _Gateway3 = _interopRequireDefault(_Gateway2); -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } +var _GatewayDest2 = _dereq_('./GatewayDest'); -function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } +var _GatewayDest3 = _interopRequireDefault(_GatewayDest2); -var _react = require('react'); +var _GatewayProvider2 = _dereq_('./GatewayProvider'); -var _intlMessageformat = require('intl-messageformat'); +var _GatewayProvider3 = _interopRequireDefault(_GatewayProvider2); -var _intlMessageformat2 = _interopRequireDefault(_intlMessageformat); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -var _intlRelativeformat = require('intl-relativeformat'); +exports.Gateway = _Gateway3.default; +exports.GatewayDest = _GatewayDest3.default; +exports.GatewayProvider = _GatewayProvider3.default; +},{"./Gateway":240,"./GatewayDest":241,"./GatewayProvider":242}],245:[function(_dereq_,module,exports){ +'use strict'; -var _intlRelativeformat2 = _interopRequireDefault(_intlRelativeformat); +exports.__esModule = true; +exports['default'] = all; -var _plural = require('../plural'); +var _common = _dereq_('./common'); -var _plural2 = _interopRequireDefault(_plural); +function all() { + for (var _len = arguments.length, propTypes = Array(_len), _key = 0; _key < _len; _key++) { + propTypes[_key] = arguments[_key]; + } -var _intlFormatCache = require('intl-format-cache'); + if (propTypes === undefined) { + throw new Error('No validations provided'); + } -var _intlFormatCache2 = _interopRequireDefault(_intlFormatCache); + if (propTypes.some(function (propType) { + return typeof propType !== 'function'; + })) { + throw new Error('Invalid arguments, must be functions'); + } -var _utils = require('../utils'); + if (propTypes.length === 0) { + throw new Error('No validations provided'); + } -var _types = require('../types'); + function validate(props, propName, componentName) { + for (var i = 0; i < propTypes.length; i++) { + var result = propTypes[i](props, propName, componentName); -var _format = require('../format'); + if (result !== undefined && result !== null) { + return result; + } + } + } -var format = _interopRequireWildcard(_format); + return _common.createChainableTypeChecker(validate); +} -var intlPropNames = Object.keys(_types.intlPropTypes); -var intlFormatPropNames = Object.keys(_types.intlFormatPropTypes); +module.exports = exports['default']; +},{"./common":246}],246:[function(_dereq_,module,exports){ +'use strict'; -var IntlProvider = (function (_Component) { - _inherits(IntlProvider, _Component); +exports.__esModule = true; +exports.errMsg = errMsg; +exports.createChainableTypeChecker = createChainableTypeChecker; - function IntlProvider(props) { - _classCallCheck(this, IntlProvider); +function errMsg(props, propName, componentName, msgContinuation) { + return 'Invalid prop \'' + propName + '\' of value \'' + props[propName] + '\'' + (' supplied to \'' + componentName + '\'' + msgContinuation); +} - _Component.call(this, props); +/** + * Create chain-able isRequired validator + * + * Largely copied directly from: + * https://github.com/facebook/react/blob/0.11-stable/src/core/ReactPropTypes.js#L94 + */ - // Creating `Intl*` formatters is expensive so these format caches - // memoize the `Intl*` constructors and have the same lifecycle as this - // IntlProvider instance. - this.state = { - getDateTimeFormat: _intlFormatCache2['default'](Intl.DateTimeFormat), - getNumberFormat: _intlFormatCache2['default'](Intl.NumberFormat), - getMessageFormat: _intlFormatCache2['default'](_intlMessageformat2['default']), - getRelativeFormat: _intlFormatCache2['default'](_intlRelativeformat2['default']), - getPluralFormat: _intlFormatCache2['default'](_plural2['default']) - }; +function createChainableTypeChecker(validate) { + function checkType(isRequired, props, propName, componentName) { + componentName = componentName || '<>'; + if (props[propName] == null) { + if (isRequired) { + return new Error('Required prop \'' + propName + '\' was not specified in \'' + componentName + '\'.'); + } + } else { + return validate(props, propName, componentName); } + } - IntlProvider.prototype.getConfig = function getConfig() { - var props = arguments.length <= 0 || arguments[0] === undefined ? this.props : arguments[0]; + var chainedCheckType = checkType.bind(null, false); + chainedCheckType.isRequired = checkType.bind(null, true); - return intlPropNames.reduce(function (config, name) { - config[name] = props[name]; - return config; - }, {}); - }; + return chainedCheckType; +} +},{}],247:[function(_dereq_,module,exports){ +'use strict'; - IntlProvider.prototype.getBoundFormatFns = function getBoundFormatFns(intl, config) { - return intlFormatPropNames.reduce(function (boundFormatFns, name) { - boundFormatFns[name] = format[name].bind(null, intl, config); - return boundFormatFns; - }, {}); - }; +exports.__esModule = true; +exports['default'] = deprecated; - IntlProvider.prototype.getChildContext = function getChildContext() { - var intl = this.state; - var config = this.getConfig(); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } - // Bind intl factories and current config to the format functions. - var boundFormatFns = this.getBoundFormatFns(intl, config); +var _warning = _dereq_('warning'); - return { - intl: _extends({}, config, boundFormatFns) - }; - }; +var _warning2 = _interopRequireDefault(_warning); - IntlProvider.prototype.shouldComponentUpdate = function shouldComponentUpdate() { - for (var _len = arguments.length, next = Array(_len), _key = 0; _key < _len; _key++) { - next[_key] = arguments[_key]; - } +var warned = {}; - return _utils.shouldIntlComponentUpdate.apply(undefined, [this].concat(next)); - }; +function deprecated(propType, explanation) { + return function validate(props, propName, componentName) { + if (props[propName] != null) { + var message = '"' + propName + '" property of "' + componentName + '" has been deprecated.\n' + explanation; + if (!warned[message]) { + _warning2['default'](false, message); + warned[message] = true; + } + } - IntlProvider.prototype.render = function render() { - var children = this.props.children; + return propType(props, propName, componentName); + }; +} - if (typeof children === 'function') { - // TODO: Pass the result of `this.getChildContext()` to the child fn? - // Or just `{...this.props, ...this.state}`? Or nothing!? Passing - // stuff would expose the underlying info and make it part of the - // public API. - return children(); - } +function _resetWarned() { + warned = {}; +} - return children; - }; +deprecated._resetWarned = _resetWarned; +module.exports = exports['default']; +},{"warning":254}],248:[function(_dereq_,module,exports){ +'use strict'; - return IntlProvider; -})(_react.Component); +exports.__esModule = true; -exports['default'] = IntlProvider; +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -IntlProvider.propTypes = _types.intlPropTypes; +var _react = _dereq_('react'); -IntlProvider.defaultProps = { - // TODO: Should `locale` default to 'en'? Or would that cause issues with - // the meaning of no-locale, which means the user's default. - formats: {}, - messages: {}, +var _react2 = _interopRequireDefault(_react); - defaultLocale: 'en', - defaultFormats: {} -}; +var _common = _dereq_('./common'); -IntlProvider.childContextTypes = { - intl: _types.intlShape.isRequired -}; -module.exports = exports['default']; -},{"../format":273,"../plural":275,"../types":277,"../utils":278,"intl-format-cache":279,"intl-messageformat":282,"intl-relativeformat":291,"react":493}],267:[function(require,module,exports){ -/* - * Copyright 2015, Yahoo Inc. - * Copyrights licensed under the New BSD License. - * See the accompanying LICENSE file for terms. +/** + * Checks whether a prop provides a type of element. + * + * The type of element can be provided in two forms: + * - tag name (string) + * - a return value of React.createClass(...) + * + * @param props + * @param propName + * @param componentName + * @returns {Error|undefined} */ +function validate(props, propName, componentName) { + var errBeginning = _common.errMsg(props, propName, componentName, '. Expected an Element `type`'); + + if (typeof props[propName] !== 'function') { + if (_react2['default'].isValidElement(props[propName])) { + return new Error(errBeginning + ', not an actual Element'); + } + + if (typeof props[propName] !== 'string') { + return new Error(errBeginning + ' such as a tag name or return value of React.createClass(...)'); + } + } +} + +exports['default'] = _common.createChainableTypeChecker(validate); +module.exports = exports['default']; +},{"./common":246,"react":475}],249:[function(_dereq_,module,exports){ 'use strict'; exports.__esModule = true; -var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } else { return Array.from(arr); } } +var _isRequiredForA11y2 = _dereq_('./isRequiredForA11y'); -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } +var _isRequiredForA11y3 = _interopRequireDefault(_isRequiredForA11y2); -function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } +exports.isRequiredForA11y = _isRequiredForA11y3['default']; -var _react = require('react'); +var _mountable2 = _dereq_('./mountable'); -var _types = require('../types'); +var _mountable3 = _interopRequireDefault(_mountable2); -var _utils = require('../utils'); +exports.mountable = _mountable3['default']; -var FormattedMessage = (function (_Component) { - _inherits(FormattedMessage, _Component); +var _elementType2 = _dereq_('./elementType'); - function FormattedMessage(props, context) { - _classCallCheck(this, FormattedMessage); +var _elementType3 = _interopRequireDefault(_elementType2); - _Component.call(this, props, context); - _utils.assertIntlContext(context); - } +exports.elementType = _elementType3['default']; - FormattedMessage.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps) { - var values = this.props.values; - var nextValues = nextProps.values; +var _keyOf2 = _dereq_('./keyOf'); - if (!_utils.shallowEquals(nextValues, values)) { - return true; - } +var _keyOf3 = _interopRequireDefault(_keyOf2); - var nextPropsToCheck = _extends({}, nextProps, { - values: null - }); +exports.keyOf = _keyOf3['default']; - for (var _len = arguments.length, next = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - next[_key - 1] = arguments[_key]; - } +var _singlePropFrom2 = _dereq_('./singlePropFrom'); - return _utils.shouldIntlComponentUpdate.apply(undefined, [this, nextPropsToCheck].concat(next)); - }; +var _singlePropFrom3 = _interopRequireDefault(_singlePropFrom2); - FormattedMessage.prototype.render = function render() { - var formatMessage = this.context.intl.formatMessage; +exports.singlePropFrom = _singlePropFrom3['default']; - var props = this.props; +var _all2 = _dereq_('./all'); - var id = props.id; - var description = props.description; - var defaultMessage = props.defaultMessage; - var values = props.values; - var tagName = props.tagName; +var _all3 = _interopRequireDefault(_all2); - // Creates a token with a random UID that should not be guessable or - // conflict with other parts of the `message` string. - var uid = Math.floor(Math.random() * 0x10000000000).toString(16); - var tokenRegexp = new RegExp('(@__ELEMENT-' + uid + '-\\d+__@)', 'g'); +exports.all = _all3['default']; - var generateToken = (function () { - var counter = 0; - return function () { - return '@__ELEMENT-' + uid + '-' + (counter += 1) + '__@'; - }; - })(); - - var tokenizedValues = {}; - var elements = {}; - - // Iterates over the `props` to keep track of any React Element values - // so they can be represented by the `token` as a placeholder when the - // `message` is formatted. This allows the formatted message to then be - // broken-up into parts with references to the React Elements inserted - // back in. - Object.keys(values).forEach(function (name) { - var value = values[name]; - - if (_react.isValidElement(value)) { - var token = generateToken(); - tokenizedValues[name] = token; - elements[token] = value; - } else { - tokenizedValues[name] = value; - } - }); +var _deprecated2 = _dereq_('./deprecated'); - var descriptor = { id: id, description: description, defaultMessage: defaultMessage }; - var formattedMessage = formatMessage(descriptor, tokenizedValues); - - // Split the message into parts so the React Element values captured - // above can be inserted back into the rendered message. This approach - // allows messages to render with React Elements while keeping React's - // virtual diffing working properly. - var nodes = formattedMessage.split(tokenRegexp).filter(function (part) { - return !!part; - }).map(function (part) { - return elements[part] || part; - }); +var _deprecated3 = _interopRequireDefault(_deprecated2); - if (typeof props.children === 'function') { - return props.children.apply(props, _toConsumableArray(nodes)); - } +exports.deprecated = _deprecated3['default']; +},{"./all":245,"./deprecated":247,"./elementType":248,"./isRequiredForA11y":250,"./keyOf":251,"./mountable":252,"./singlePropFrom":253}],250:[function(_dereq_,module,exports){ +"use strict"; - return _react.createElement.apply(undefined, [tagName, null].concat(_toConsumableArray(nodes))); - }; +exports.__esModule = true; +exports["default"] = isRequiredForA11y; - return FormattedMessage; -})(_react.Component); +function isRequiredForA11y(propType) { + return function validate(props, propName, componentName) { + if (props[propName] == null) { + return new Error("The prop '" + propName + "' is required to make '" + componentName + "' accessible" + " for users using assistive technologies such as screen readers"); + } -exports['default'] = FormattedMessage; + return propType(props, propName, componentName); + }; +} -FormattedMessage.propTypes = { - id: _react.PropTypes.string.isRequired, - description: _react.PropTypes.string, - defaultMessage: _react.PropTypes.string, +module.exports = exports["default"]; +},{}],251:[function(_dereq_,module,exports){ +'use strict'; - values: _react.PropTypes.object, - tagName: _react.PropTypes.string -}; +exports.__esModule = true; +exports['default'] = keyOf; -FormattedMessage.contextTypes = { - intl: _types.intlShape -}; +var _common = _dereq_('./common'); -FormattedMessage.defaultProps = { - tagName: 'span', - values: {} -}; -module.exports = exports['default']; -},{"../types":277,"../utils":278,"react":493}],268:[function(require,module,exports){ -/* - * Copyright 2015, Yahoo Inc. - * Copyrights licensed under the New BSD License. - * See the accompanying LICENSE file for terms. +/** + * Checks whether a prop matches a key of an associated object + * + * @param props + * @param propName + * @param componentName + * @returns {Error|undefined} */ +function keyOf(obj) { + function validate(props, propName, componentName) { + var propValue = props[propName]; + if (!obj.hasOwnProperty(propValue)) { + var valuesString = JSON.stringify(Object.keys(obj)); + return new Error(_common.errMsg(props, propName, componentName, ', expected one of ' + valuesString + '.')); + } + } + return _common.createChainableTypeChecker(validate); +} + +module.exports = exports['default']; +},{"./common":246}],252:[function(_dereq_,module,exports){ 'use strict'; exports.__esModule = true; -var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } +var _common = _dereq_('./common'); -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - -function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } +/** + * Checks whether a prop provides a DOM element + * + * The element can be provided in two forms: + * - Directly passed + * - Or passed an object that has a `render` method + * + * @param props + * @param propName + * @param componentName + * @returns {Error|undefined} + */ -var _react = require('react'); +function validate(props, propName, componentName) { + if (typeof props[propName] !== 'object' || typeof props[propName].render !== 'function' && props[propName].nodeType !== 1) { + return new Error(_common.errMsg(props, propName, componentName, ', expected a DOM element or an object that has a `render` method')); + } +} -var _react2 = _interopRequireDefault(_react); +exports['default'] = _common.createChainableTypeChecker(validate); +module.exports = exports['default']; +},{"./common":246}],253:[function(_dereq_,module,exports){ +/** + * Checks if only one of the listed properties is in use. An error is given + * if multiple have a value + * + * @param props + * @param propName + * @param componentName + * @returns {Error|undefined} + */ +'use strict'; -var _types = require('../types'); +exports.__esModule = true; +exports['default'] = createSinglePropFromChecker; -var _utils = require('../utils'); +function createSinglePropFromChecker() { + for (var _len = arguments.length, arrOfProps = Array(_len), _key = 0; _key < _len; _key++) { + arrOfProps[_key] = arguments[_key]; + } -var FormattedNumber = (function (_Component) { - _inherits(FormattedNumber, _Component); + function validate(props, propName) { + var usedPropCount = arrOfProps.map(function (listedProp) { + return props[listedProp]; + }).reduce(function (acc, curr) { + return acc + (curr !== undefined ? 1 : 0); + }, 0); - function FormattedNumber(props, context) { - _classCallCheck(this, FormattedNumber); + if (usedPropCount > 1) { + var first = arrOfProps[0]; + var others = arrOfProps.slice(1); - _Component.call(this, props, context); - _utils.assertIntlContext(context); + var message = others.join(', ') + ' and ' + first; + return new Error('Invalid prop \'' + propName + '\', only one of the following ' + ('may be provided: ' + message)); } + } + return validate; +} - FormattedNumber.prototype.shouldComponentUpdate = function shouldComponentUpdate() { - for (var _len = arguments.length, next = Array(_len), _key = 0; _key < _len; _key++) { - next[_key] = arguments[_key]; - } - - return _utils.shouldIntlComponentUpdate.apply(undefined, [this].concat(next)); - }; +module.exports = exports['default']; +},{}],254:[function(_dereq_,module,exports){ +(function (process){ +/** + * Copyright 2014-2015, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ - FormattedNumber.prototype.render = function render() { - var formatNumber = this.context.intl.formatNumber; +'use strict'; - var props = this.props; +/** + * Similar to invariant but only logs a warning if the condition is not met. + * This can be used to log issues in development environments in critical + * paths. Removing the logging code for production environments will keep the + * same logic and follow the same code paths. + */ - var formattedNumber = formatNumber(props.value, props); +var warning = function() {}; - if (typeof props.children === 'function') { - return props.children(formattedNumber); - } +if (process.env.NODE_ENV !== 'production') { + warning = function(condition, format, args) { + var len = arguments.length; + args = new Array(len > 2 ? len - 2 : 0); + for (var key = 2; key < len; key++) { + args[key - 2] = arguments[key]; + } + if (format === undefined) { + throw new Error( + '`warning(condition, format, ...args)` requires a warning ' + + 'message argument' + ); + } - return _react2['default'].createElement( - 'span', - null, - formattedNumber - ); - }; + if (format.length < 10 || (/^[s\W]*$/).test(format)) { + throw new Error( + 'The warning format should be able to uniquely identify this ' + + 'warning. Please, use a more descriptive format than: ' + format + ); + } - return FormattedNumber; -})(_react.Component); + if (!condition) { + var argIndex = 0; + var message = 'Warning: ' + + format.replace(/%s/g, function() { + return args[argIndex++]; + }); + if (typeof console !== 'undefined') { + console.error(message); + } + try { + // This error was thrown as a convenience so that you can use this stack + // to find the callsite that caused this warning to fire. + throw new Error(message); + } catch(x) {} + } + }; +} -exports['default'] = FormattedNumber; +module.exports = warning; -FormattedNumber.propTypes = _extends({}, _types.numberFormatPropTypes, { - format: _react.PropTypes.string, - value: _react.PropTypes.any.isRequired -}); +}).call(this,_dereq_('_process')) -FormattedNumber.contextTypes = { - intl: _types.intlShape -}; -module.exports = exports['default']; -},{"../types":277,"../utils":278,"react":493}],269:[function(require,module,exports){ +},{"_process":2}],255:[function(_dereq_,module,exports){ +(function (process){ /* - * Copyright 2015, Yahoo Inc. + * Copyright 2016, Yahoo Inc. * Copyrights licensed under the New BSD License. * See the accompanying LICENSE file for terms. */ 'use strict'; -exports.__esModule = true; - -var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; +function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } + +var allLocaleData = _interopDefault(_dereq_('../locale-data/index.js')); +var IntlMessageFormat = _interopDefault(_dereq_('intl-messageformat')); +var IntlRelativeFormat = _interopDefault(_dereq_('intl-relativeformat')); +var React = _dereq_('react'); +var React__default = _interopDefault(React); +var invariant = _interopDefault(_dereq_('invariant')); +var memoizeIntlConstructor = _interopDefault(_dereq_('intl-format-cache')); + +var babelHelpers = {}; +babelHelpers.typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { + return typeof obj; +} : function (obj) { + return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; +}; -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } +babelHelpers.classCallCheck = function (instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } +}; -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } +babelHelpers.createClass = function () { + function defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } -function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + return function (Constructor, protoProps, staticProps) { + if (protoProps) defineProperties(Constructor.prototype, protoProps); + if (staticProps) defineProperties(Constructor, staticProps); + return Constructor; + }; +}(); -var _react = require('react'); +babelHelpers.defineProperty = function (obj, key, value) { + if (key in obj) { + Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + } else { + obj[key] = value; + } -var _react2 = _interopRequireDefault(_react); + return obj; +}; -var _types = require('../types'); +babelHelpers.extends = Object.assign || function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; -var _utils = require('../utils'); + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } -var FormattedPlural = (function (_Component) { - _inherits(FormattedPlural, _Component); + return target; +}; - function FormattedPlural(props, context) { - _classCallCheck(this, FormattedPlural); +babelHelpers.inherits = function (subClass, superClass) { + if (typeof superClass !== "function" && superClass !== null) { + throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); + } - _Component.call(this, props, context); - _utils.assertIntlContext(context); + subClass.prototype = Object.create(superClass && superClass.prototype, { + constructor: { + value: subClass, + enumerable: false, + writable: true, + configurable: true } + }); + if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; +}; - FormattedPlural.prototype.shouldComponentUpdate = function shouldComponentUpdate() { - for (var _len = arguments.length, next = Array(_len), _key = 0; _key < _len; _key++) { - next[_key] = arguments[_key]; - } - - return _utils.shouldIntlComponentUpdate.apply(undefined, [this].concat(next)); - }; - - FormattedPlural.prototype.render = function render() { - var formatPlural = this.context.intl.formatPlural; +babelHelpers.objectWithoutProperties = function (obj, keys) { + var target = {}; - var props = this.props; + for (var i in obj) { + if (keys.indexOf(i) >= 0) continue; + if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; + target[i] = obj[i]; + } - var pluralCategory = formatPlural(props.value, props); - var formattedPlural = props[pluralCategory] || props.other; + return target; +}; - if (typeof props.children === 'function') { - return props.children(formattedPlural); - } +babelHelpers.possibleConstructorReturn = function (self, call) { + if (!self) { + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + } - return _react2['default'].createElement( - 'span', - null, - formattedPlural - ); - }; + return call && (typeof call === "object" || typeof call === "function") ? call : self; +}; - return FormattedPlural; -})(_react.Component); +babelHelpers.toConsumableArray = function (arr) { + if (Array.isArray(arr)) { + for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; -exports['default'] = FormattedPlural; + return arr2; + } else { + return Array.from(arr); + } +}; -FormattedPlural.propTypes = _extends({}, _types.pluralFormatPropTypes, { - value: _react.PropTypes.any.isRequired, +babelHelpers; - // TODO: Should these be functions instead nodes (or?), so that complex - // nested elements don't have to incur the cost of rendering when they are - // not used? - other: _react.PropTypes.node.isRequired, - zero: _react.PropTypes.node, - one: _react.PropTypes.node, - two: _react.PropTypes.node, - few: _react.PropTypes.node, - many: _react.PropTypes.node -}); +// GENERATED FILE +var defaultLocaleData = { "locale": "en", "pluralRuleFunction": function pluralRuleFunction(n, ord) { + var s = String(n).split("."), + v0 = !s[1], + t0 = Number(s[0]) == n, + n10 = t0 && s[0].slice(-1), + n100 = t0 && s[0].slice(-2);if (ord) return n10 == 1 && n100 != 11 ? "one" : n10 == 2 && n100 != 12 ? "two" : n10 == 3 && n100 != 13 ? "few" : "other";return n == 1 && v0 ? "one" : "other"; + }, "fields": { "year": { "displayName": "year", "relative": { "0": "this year", "1": "next year", "-1": "last year" }, "relativeTime": { "future": { "one": "in {0} year", "other": "in {0} years" }, "past": { "one": "{0} year ago", "other": "{0} years ago" } } }, "month": { "displayName": "month", "relative": { "0": "this month", "1": "next month", "-1": "last month" }, "relativeTime": { "future": { "one": "in {0} month", "other": "in {0} months" }, "past": { "one": "{0} month ago", "other": "{0} months ago" } } }, "day": { "displayName": "day", "relative": { "0": "today", "1": "tomorrow", "-1": "yesterday" }, "relativeTime": { "future": { "one": "in {0} day", "other": "in {0} days" }, "past": { "one": "{0} day ago", "other": "{0} days ago" } } }, "hour": { "displayName": "hour", "relativeTime": { "future": { "one": "in {0} hour", "other": "in {0} hours" }, "past": { "one": "{0} hour ago", "other": "{0} hours ago" } } }, "minute": { "displayName": "minute", "relativeTime": { "future": { "one": "in {0} minute", "other": "in {0} minutes" }, "past": { "one": "{0} minute ago", "other": "{0} minutes ago" } } }, "second": { "displayName": "second", "relative": { "0": "now" }, "relativeTime": { "future": { "one": "in {0} second", "other": "in {0} seconds" }, "past": { "one": "{0} second ago", "other": "{0} seconds ago" } } } } }; -FormattedPlural.defaultProps = { - style: 'cardinal' -}; +function addLocaleData() { + var data = arguments.length <= 0 || arguments[0] === undefined ? [] : arguments[0]; -FormattedPlural.contextTypes = { - intl: _types.intlShape -}; -module.exports = exports['default']; -},{"../types":277,"../utils":278,"react":493}],270:[function(require,module,exports){ -/* - * Copyright 2015, Yahoo Inc. - * Copyrights licensed under the New BSD License. - * See the accompanying LICENSE file for terms. - */ + var locales = Array.isArray(data) ? data : [data]; -'use strict'; + locales.forEach(function (localeData) { + if (localeData && localeData.locale) { + IntlMessageFormat.__addLocaleData(localeData); + IntlRelativeFormat.__addLocaleData(localeData); + } + }); +} -exports.__esModule = true; +function hasLocaleData(locale) { + var localeParts = (locale || '').split('-'); -var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + while (localeParts.length > 0) { + if (hasIMFAndIRFLocaleData(localeParts.join('-'))) { + return true; + } -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + localeParts.pop(); + } -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + return false; +} -function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } +function hasIMFAndIRFLocaleData(locale) { + var normalizedLocale = locale && locale.toLowerCase(); -var _react = require('react'); + return !!(IntlMessageFormat.__localeData__[normalizedLocale] && IntlRelativeFormat.__localeData__[normalizedLocale]); +} -var _react2 = _interopRequireDefault(_react); +var bool = React.PropTypes.bool; +var number = React.PropTypes.number; +var string = React.PropTypes.string; +var func = React.PropTypes.func; +var object = React.PropTypes.object; +var oneOf = React.PropTypes.oneOf; +var shape = React.PropTypes.shape; -var _types = require('../types'); -var _utils = require('../utils'); +var intlConfigPropTypes = { + locale: string, + formats: object, + messages: object, -var FormattedRelative = (function (_Component) { - _inherits(FormattedRelative, _Component); + defaultLocale: string, + defaultFormats: object +}; - function FormattedRelative(props, context) { - _classCallCheck(this, FormattedRelative); +var intlFormatPropTypes = { + formatDate: func.isRequired, + formatTime: func.isRequired, + formatRelative: func.isRequired, + formatNumber: func.isRequired, + formatPlural: func.isRequired, + formatMessage: func.isRequired, + formatHTMLMessage: func.isRequired +}; - _Component.call(this, props, context); - _utils.assertIntlContext(context); - } +var intlShape = shape(babelHelpers['extends']({}, intlConfigPropTypes, intlFormatPropTypes, { + formatters: object, + now: func.isRequired +})); - FormattedRelative.prototype.shouldComponentUpdate = function shouldComponentUpdate() { - for (var _len = arguments.length, next = Array(_len), _key = 0; _key < _len; _key++) { - next[_key] = arguments[_key]; - } +var messageDescriptorPropTypes = { + id: string.isRequired, + description: string, + defaultMessage: string +}; - return _utils.shouldIntlComponentUpdate.apply(undefined, [this].concat(next)); - }; +var dateTimeFormatPropTypes = { + localeMatcher: oneOf(['best fit', 'lookup']), + formatMatcher: oneOf(['basic', 'best fit']), - FormattedRelative.prototype.render = function render() { - var formatRelative = this.context.intl.formatRelative; + timeZone: string, + hour12: bool, - var props = this.props; + weekday: oneOf(['narrow', 'short', 'long']), + era: oneOf(['narrow', 'short', 'long']), + year: oneOf(['numeric', '2-digit']), + month: oneOf(['numeric', '2-digit', 'narrow', 'short', 'long']), + day: oneOf(['numeric', '2-digit']), + hour: oneOf(['numeric', '2-digit']), + minute: oneOf(['numeric', '2-digit']), + second: oneOf(['numeric', '2-digit']), + timeZoneName: oneOf(['short', 'long']) +}; - var formattedRelative = formatRelative(props.value, props); +var numberFormatPropTypes = { + localeMatcher: oneOf(['best fit', 'lookup']), - if (typeof props.children === 'function') { - return props.children(formattedRelative); - } + style: oneOf(['decimal', 'currency', 'percent']), + currency: string, + currencyDisplay: oneOf(['symbol', 'code', 'name']), + useGrouping: bool, - return _react2['default'].createElement( - 'span', - null, - formattedRelative - ); - }; + minimumIntegerDigits: number, + minimumFractionDigits: number, + maximumFractionDigits: number, + minimumSignificantDigits: number, + maximumSignificantDigits: number +}; - return FormattedRelative; -})(_react.Component); +var relativeFormatPropTypes = { + style: oneOf(['best fit', 'numeric']), + units: oneOf(['second', 'minute', 'hour', 'day', 'month', 'year']) +}; -exports['default'] = FormattedRelative; +var pluralFormatPropTypes = { + style: oneOf(['cardinal', 'ordinal']) +}; -FormattedRelative.propTypes = _extends({}, _types.relativeFormatPropTypes, { - format: _react.PropTypes.string, - value: _react.PropTypes.any.isRequired, - now: _react.PropTypes.any -}); +var intlConfigPropNames = Object.keys(intlConfigPropTypes); -FormattedRelative.contextTypes = { - intl: _types.intlShape +var ESCAPED_CHARS = { + '&': '&', + '>': '>', + '<': '<', + '"': '"', + '\'': ''' }; -module.exports = exports['default']; -},{"../types":277,"../utils":278,"react":493}],271:[function(require,module,exports){ -/* - * Copyright 2015, Yahoo Inc. - * Copyrights licensed under the New BSD License. - * See the accompanying LICENSE file for terms. - */ -'use strict'; - -exports.__esModule = true; +var UNSAFE_CHARS_REGEX = /[&><"']/g; -var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; +function escape(str) { + return ('' + str).replace(UNSAFE_CHARS_REGEX, function (match) { + return ESCAPED_CHARS[match]; + }); +} -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } +function filterProps(props, whitelist) { + var defaults = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2]; -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + return whitelist.reduce(function (filtered, name) { + if (props.hasOwnProperty(name)) { + filtered[name] = props[name]; + } else if (defaults.hasOwnProperty(name)) { + filtered[name] = defaults[name]; + } -function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + return filtered; + }, {}); +} -var _react = require('react'); +function invariantIntlContext() { + var _ref = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; -var _react2 = _interopRequireDefault(_react); + var intl = _ref.intl; -var _types = require('../types'); + invariant(intl, '[React Intl] Could not find required `intl` object. ' + ' needs to exist in the component ancestry.'); +} -var _utils = require('../utils'); +function shallowEquals(objA, objB) { + if (objA === objB) { + return true; + } -var FormattedTime = (function (_Component) { - _inherits(FormattedTime, _Component); + if ((typeof objA === 'undefined' ? 'undefined' : babelHelpers['typeof'](objA)) !== 'object' || objA === null || (typeof objB === 'undefined' ? 'undefined' : babelHelpers['typeof'](objB)) !== 'object' || objB === null) { + return false; + } - function FormattedTime(props, context) { - _classCallCheck(this, FormattedTime); + var keysA = Object.keys(objA); + var keysB = Object.keys(objB); - _Component.call(this, props, context); - _utils.assertIntlContext(context); + if (keysA.length !== keysB.length) { + return false; } - FormattedTime.prototype.shouldComponentUpdate = function shouldComponentUpdate() { - for (var _len = arguments.length, next = Array(_len), _key = 0; _key < _len; _key++) { - next[_key] = arguments[_key]; + // Test for A's keys different from B. + var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB); + for (var i = 0; i < keysA.length; i++) { + if (!bHasOwnProperty(keysA[i]) || objA[keysA[i]] !== objB[keysA[i]]) { + return false; } + } + + return true; +} + +function shouldIntlComponentUpdate(_ref2, nextProps, nextState) { + var props = _ref2.props; + var state = _ref2.state; + var _ref2$context = _ref2.context; + var context = _ref2$context === undefined ? {} : _ref2$context; + var nextContext = arguments.length <= 3 || arguments[3] === undefined ? {} : arguments[3]; + var _context$intl = context.intl; + var intl = _context$intl === undefined ? {} : _context$intl; + var _nextContext$intl = nextContext.intl; + var nextIntl = _nextContext$intl === undefined ? {} : _nextContext$intl; - return _utils.shouldIntlComponentUpdate.apply(undefined, [this].concat(next)); - }; - FormattedTime.prototype.render = function render() { - var formatTime = this.context.intl.formatTime; + return !shallowEquals(nextProps, props) || !shallowEquals(nextState, state) || !(nextIntl === intl || shallowEquals(filterProps(nextIntl, intlConfigPropNames), filterProps(intl, intlConfigPropNames))); +} - var props = this.props; +function getDisplayName(Component) { + return Component.displayName || Component.name || 'Component'; +} - var formattedTime = formatTime(props.value, props); +function injectIntl(WrappedComponent) { + var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; + var _options$intlPropName = options.intlPropName; + var intlPropName = _options$intlPropName === undefined ? 'intl' : _options$intlPropName; + var _options$withRef = options.withRef; + var withRef = _options$withRef === undefined ? false : _options$withRef; - if (typeof props.children === 'function') { - return props.children(formattedTime); + var InjectIntl = function (_Component) { + babelHelpers.inherits(InjectIntl, _Component); + + function InjectIntl(props, context) { + babelHelpers.classCallCheck(this, InjectIntl); + + var _this = babelHelpers.possibleConstructorReturn(this, Object.getPrototypeOf(InjectIntl).call(this, props, context)); + + invariantIntlContext(context); + return _this; } - return _react2['default'].createElement( - 'span', - null, - formattedTime - ); - }; + babelHelpers.createClass(InjectIntl, [{ + key: 'getWrappedInstance', + value: function getWrappedInstance() { + invariant(withRef, '[React Intl] To access the wrapped instance, ' + 'the `{withRef: true}` option must be set when calling: ' + '`injectIntl()`'); - return FormattedTime; -})(_react.Component); + return this.refs.wrappedInstance; + } + }, { + key: 'render', + value: function render() { + return React__default.createElement(WrappedComponent, babelHelpers['extends']({}, this.props, babelHelpers.defineProperty({}, intlPropName, this.context.intl), { + ref: withRef ? 'wrappedInstance' : null + })); + } + }]); + return InjectIntl; + }(React.Component); -exports['default'] = FormattedTime; + InjectIntl.displayName = 'InjectIntl(' + getDisplayName(WrappedComponent) + ')'; -FormattedTime.propTypes = _extends({}, _types.dateTimeFormatPropTypes, { - format: _react.PropTypes.string, - value: _react.PropTypes.any.isRequired -}); + InjectIntl.contextTypes = { + intl: intlShape + }; -FormattedTime.contextTypes = { - intl: _types.intlShape -}; -module.exports = exports['default']; -},{"../types":277,"../utils":278,"react":493}],272:[function(require,module,exports){ -// GENERATED FILE -"use strict"; + InjectIntl.WrappedComponent = WrappedComponent; + + return InjectIntl; +} -exports.__esModule = true; -exports["default"] = { "locale": "en", "pluralRuleFunction": function pluralRuleFunction(n, ord) { - var s = String(n).split("."), - v0 = !s[1], - t0 = Number(s[0]) == n, - n10 = t0 && s[0].slice(-1), - n100 = t0 && s[0].slice(-2);if (ord) return n10 == 1 && n100 != 11 ? "one" : n10 == 2 && n100 != 12 ? "two" : n10 == 3 && n100 != 13 ? "few" : "other";return n == 1 && v0 ? "one" : "other"; - }, "fields": { "year": { "displayName": "Year", "relative": { "0": "this year", "1": "next year", "-1": "last year" }, "relativeTime": { "future": { "one": "in {0} year", "other": "in {0} years" }, "past": { "one": "{0} year ago", "other": "{0} years ago" } } }, "month": { "displayName": "Month", "relative": { "0": "this month", "1": "next month", "-1": "last month" }, "relativeTime": { "future": { "one": "in {0} month", "other": "in {0} months" }, "past": { "one": "{0} month ago", "other": "{0} months ago" } } }, "day": { "displayName": "Day", "relative": { "0": "today", "1": "tomorrow", "-1": "yesterday" }, "relativeTime": { "future": { "one": "in {0} day", "other": "in {0} days" }, "past": { "one": "{0} day ago", "other": "{0} days ago" } } }, "hour": { "displayName": "Hour", "relativeTime": { "future": { "one": "in {0} hour", "other": "in {0} hours" }, "past": { "one": "{0} hour ago", "other": "{0} hours ago" } } }, "minute": { "displayName": "Minute", "relativeTime": { "future": { "one": "in {0} minute", "other": "in {0} minutes" }, "past": { "one": "{0} minute ago", "other": "{0} minutes ago" } } }, "second": { "displayName": "Second", "relative": { "0": "now" }, "relativeTime": { "future": { "one": "in {0} second", "other": "in {0} seconds" }, "past": { "one": "{0} second ago", "other": "{0} seconds ago" } } } } }; -module.exports = exports["default"]; -},{}],273:[function(require,module,exports){ -(function (process){ /* * Copyright 2015, Yahoo Inc. * Copyrights licensed under the New BSD License. * See the accompanying LICENSE file for terms. */ -'use strict'; +function defineMessages(messageDescriptors) { + // This simply returns what's passed-in because it's meant to be a hook for + // babel-plugin-react-intl. + return messageDescriptors; +} -exports.__esModule = true; -exports.formatDate = formatDate; -exports.formatTime = formatTime; -exports.formatRelative = formatRelative; -exports.formatNumber = formatNumber; -exports.formatPlural = formatPlural; -exports.formatMessage = formatMessage; -exports.formatHTMLMessage = formatHTMLMessage; +function resolveLocale(locales) { + // IntlMessageFormat#_resolveLocale() does not depend on `this`. + return IntlMessageFormat.prototype._resolveLocale(locales); +} -var _types = require('./types'); +function findPluralFunction(locale) { + // IntlMessageFormat#_findPluralFunction() does not depend on `this`. + return IntlMessageFormat.prototype._findPluralRuleFunction(locale); +} + +var IntlPluralFormat = function IntlPluralFormat(locales) { + var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; + babelHelpers.classCallCheck(this, IntlPluralFormat); -var _utils = require('./utils'); + var useOrdinal = options.style === 'ordinal'; + var pluralFn = findPluralFunction(resolveLocale(locales)); -var DATE_TIME_FORMAT_OPTIONS = Object.keys(_types.dateTimeFormatPropTypes); -var NUMBER_FORMAT_OPTIONS = Object.keys(_types.numberFormatPropTypes); -var RELATIVE_FORMAT_OPTIONS = Object.keys(_types.relativeFormatPropTypes); -var PLURAL_FORMAT_OPTIONS = Object.keys(_types.pluralFormatPropTypes); + this.format = function (value) { + return pluralFn(value, useOrdinal); + }; +}; -function filterFormatOptions(whitelist, obj) { - var defaults = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2]; +var DATE_TIME_FORMAT_OPTIONS = Object.keys(dateTimeFormatPropTypes); +var NUMBER_FORMAT_OPTIONS = Object.keys(numberFormatPropTypes); +var RELATIVE_FORMAT_OPTIONS = Object.keys(relativeFormatPropTypes); +var PLURAL_FORMAT_OPTIONS = Object.keys(pluralFormatPropTypes); - return whitelist.reduce(function (opts, name) { - if (obj.hasOwnProperty(name)) { - opts[name] = obj[name]; - } else if (defaults.hasOwnProperty(name)) { - opts[name] = defaults[name]; - } +var RELATIVE_FORMAT_THRESHOLDS = { + second: 60, // seconds to minute + minute: 60, // minutes to hour + hour: 24, // hours to day + day: 30, // days to month + month: 12 }; - return opts; - }, {}); +// months to year +function updateRelativeFormatThresholds(newThresholds) { + var thresholds = IntlRelativeFormat.thresholds; + thresholds.second = newThresholds.second; + thresholds.minute = newThresholds.minute; + thresholds.hour = newThresholds.hour; + thresholds.day = newThresholds.day; + thresholds.month = newThresholds.month; } function getNamedFormat(formats, type, name) { @@ -45182,71 +46553,132 @@ function getNamedFormat(formats, type, name) { } } -function formatDate(intl, config, value) { +function formatDate(config, state, value) { var options = arguments.length <= 3 || arguments[3] === undefined ? {} : arguments[3]; var locale = config.locale; var formats = config.formats; var format = options.format; + var date = new Date(value); var defaults = format && getNamedFormat(formats, 'date', format); + var filteredOptions = filterProps(options, DATE_TIME_FORMAT_OPTIONS, defaults); - var filteredOptions = filterFormatOptions(DATE_TIME_FORMAT_OPTIONS, options, defaults); + try { + return state.getDateTimeFormat(locale, filteredOptions).format(date); + } catch (e) { + if (process.env.NODE_ENV !== 'production') { + console.error('[React Intl] Error formatting date.\n' + e); + } + } - return intl.getDateTimeFormat(locale, filteredOptions).format(date); + return String(date); } -function formatTime(intl, config, value) { +function formatTime(config, state, value) { var options = arguments.length <= 3 || arguments[3] === undefined ? {} : arguments[3]; var locale = config.locale; var formats = config.formats; var format = options.format; + var date = new Date(value); var defaults = format && getNamedFormat(formats, 'time', format); + var filteredOptions = filterProps(options, DATE_TIME_FORMAT_OPTIONS, defaults); + + // When no formatting options have been specified, default to outputting a + // time; e.g.: "9:42 AM". + if (Object.keys(filteredOptions).length === 0) { + filteredOptions = { + hour: 'numeric', + minute: 'numeric' + }; + } - var filteredOptions = filterFormatOptions(DATE_TIME_FORMAT_OPTIONS, options, defaults); + try { + return state.getDateTimeFormat(locale, filteredOptions).format(date); + } catch (e) { + if (process.env.NODE_ENV !== 'production') { + console.error('[React Intl] Error formatting time.\n' + e); + } + } - return intl.getDateTimeFormat(locale, filteredOptions).format(date); + return String(date); } -function formatRelative(intl, config, value) { +function formatRelative(config, state, value) { var options = arguments.length <= 3 || arguments[3] === undefined ? {} : arguments[3]; var locale = config.locale; var formats = config.formats; - var now = options.now; var format = options.format; + var date = new Date(value); + var now = new Date(options.now); var defaults = format && getNamedFormat(formats, 'relative', format); + var filteredOptions = filterProps(options, RELATIVE_FORMAT_OPTIONS, defaults); - var filteredOptions = filterFormatOptions(RELATIVE_FORMAT_OPTIONS, options, defaults); + // Capture the current threshold values, then temporarily override them with + // specific values just for this render. + var oldThresholds = babelHelpers['extends']({}, IntlRelativeFormat.thresholds); + updateRelativeFormatThresholds(RELATIVE_FORMAT_THRESHOLDS); - return intl.getRelativeFormat(locale, filteredOptions).format(date, { now: now }); + try { + return state.getRelativeFormat(locale, filteredOptions).format(date, { + now: isFinite(now) ? now : state.now() + }); + } catch (e) { + if (process.env.NODE_ENV !== 'production') { + console.error('[React Intl] Error formatting relative time.\n' + e); + } + } finally { + updateRelativeFormatThresholds(oldThresholds); + } + + return String(date); } -function formatNumber(intl, config, value) { +function formatNumber(config, state, value) { var options = arguments.length <= 3 || arguments[3] === undefined ? {} : arguments[3]; var locale = config.locale; var formats = config.formats; var format = options.format; + var defaults = format && getNamedFormat(formats, 'number', format); + var filteredOptions = filterProps(options, NUMBER_FORMAT_OPTIONS, defaults); - var filteredOptions = filterFormatOptions(NUMBER_FORMAT_OPTIONS, options, defaults); + try { + return state.getNumberFormat(locale, filteredOptions).format(value); + } catch (e) { + if (process.env.NODE_ENV !== 'production') { + console.error('[React Intl] Error formatting number.\n' + e); + } + } - return intl.getNumberFormat(locale, filteredOptions).format(value); + return String(value); } -function formatPlural(intl, config, value) { +function formatPlural(config, state, value) { var options = arguments.length <= 3 || arguments[3] === undefined ? {} : arguments[3]; var locale = config.locale; - var filteredOptions = filterFormatOptions(PLURAL_FORMAT_OPTIONS, options); - return intl.getPluralFormat(locale, filteredOptions).format(value); + + var filteredOptions = filterProps(options, PLURAL_FORMAT_OPTIONS); + + try { + return state.getPluralFormat(locale, filteredOptions).format(value); + } catch (e) { + if (process.env.NODE_ENV !== 'production') { + console.error('[React Intl] Error formatting plural.\n' + e); + } + } + + return 'other'; } -function formatMessage(intl, config, messageDescriptor) { +function formatMessage(config, state) { + var messageDescriptor = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2]; var values = arguments.length <= 3 || arguments[3] === undefined ? {} : arguments[3]; var locale = config.locale; var formats = config.formats; @@ -45256,57 +46688,65 @@ function formatMessage(intl, config, messageDescriptor) { var id = messageDescriptor.id; var defaultMessage = messageDescriptor.defaultMessage; - // TODO: What should we do when the message descriptor doesn't have an `id`? - // Should we return some placeholder value, not care, or throw? + // `id` is a required field of a Message Descriptor. - var message = messages && messages[id]; + invariant(id, '[React Intl] An `id` must be provided to format a message.'); - if (!(message || defaultMessage)) { - if (process.env.NODE_ENV !== 'production') { - console.error('[React Intl] Cannot format message. ' + ('Missing message: "' + id + '" for locale: "' + locale + '", ') + 'and no default message was provided.'); - } + var message = messages && messages[id]; + var hasValues = Object.keys(values).length > 0; - return id; + // Avoid expensive message formatting for simple messages without values. In + // development messages will always be formatted in case of missing values. + if (!hasValues && process.env.NODE_ENV === 'production') { + return message || defaultMessage || id; } - var formattedMessage = undefined; + var formattedMessage = void 0; if (message) { try { - var formatter = intl.getMessageFormat(message, locale, formats); + var formatter = state.getMessageFormat(message, locale, formats); formattedMessage = formatter.format(values); } catch (e) { if (process.env.NODE_ENV !== 'production') { - console.error('[React Intl] Error formatting message: "' + id + '"\n' + e); + console.error('[React Intl] Error formatting message: "' + id + '" for locale: "' + locale + '"' + (defaultMessage ? ', using default message as fallback.' : '') + ('\n' + e)); + } + } + } else { + if (process.env.NODE_ENV !== 'production') { + // This prevents warnings from littering the console in development + // when no `messages` are passed into the for the + // default locale, and a default message is in the source. + if (!defaultMessage || locale && locale.toLowerCase() !== defaultLocale.toLowerCase()) { + + console.error('[React Intl] Missing message: "' + id + '" for locale: "' + locale + '"' + (defaultMessage ? ', using default message as fallback.' : '')); } } } if (!formattedMessage && defaultMessage) { try { - var formatter = intl.getMessageFormat(defaultMessage, defaultLocale, defaultFormats); + var _formatter = state.getMessageFormat(defaultMessage, defaultLocale, defaultFormats); - formattedMessage = formatter.format(values); + formattedMessage = _formatter.format(values); } catch (e) { if (process.env.NODE_ENV !== 'production') { - console.error('[React Intl] Error formatting the default message for: ' + ('"' + id + '"\n' + e)); + console.error('[React Intl] Error formatting the default message for: "' + id + '"' + ('\n' + e)); } } } if (!formattedMessage) { if (process.env.NODE_ENV !== 'production') { - console.warn('[React Intl] Using source fallback for message: "' + id + '"'); + console.error('[React Intl] Cannot format message: "' + id + '", ' + ('using message ' + (message || defaultMessage ? 'source' : 'id') + ' as fallback.')); } } - // TODO: Should the string first be trimmed? This will support strings - // defined using template literals.
 rendering would be the counter.
     return formattedMessage || message || defaultMessage || id;
 }
 
-function formatHTMLMessage(intl, config, messageDescriptor) {
+function formatHTMLMessage(config, state, messageDescriptor) {
     var rawValues = arguments.length <= 3 || arguments[3] === undefined ? {} : arguments[3];
 
     // Process all the values before they are used when formatting the ICU
@@ -45314,400 +46754,898 @@ function formatHTMLMessage(intl, config, messageDescriptor) {
     // `innerHTML`, all String-based values need to be HTML-escaped.
     var escapedValues = Object.keys(rawValues).reduce(function (escaped, name) {
         var value = rawValues[name];
-        escaped[name] = typeof value === 'string' ? _utils.escape(value) : value;
+        escaped[name] = typeof value === 'string' ? escape(value) : value;
         return escaped;
     }, {});
 
-    return formatMessage(intl, config, messageDescriptor, escapedValues);
+    return formatMessage(config, state, messageDescriptor, escapedValues);
 }
-}).call(this,require('_process'))
 
-},{"./types":277,"./utils":278,"_process":2}],274:[function(require,module,exports){
-/*
- * Copyright 2015, Yahoo Inc.
- * Copyrights licensed under the New BSD License.
- * See the accompanying LICENSE file for terms.
- */
+var format = Object.freeze({
+    formatDate: formatDate,
+    formatTime: formatTime,
+    formatRelative: formatRelative,
+    formatNumber: formatNumber,
+    formatPlural: formatPlural,
+    formatMessage: formatMessage,
+    formatHTMLMessage: formatHTMLMessage
+});
 
-'use strict';
+var intlConfigPropNames$1 = Object.keys(intlConfigPropTypes);
+var intlFormatPropNames = Object.keys(intlFormatPropTypes);
 
-exports.__esModule = true;
+// These are not a static property on the `IntlProvider` class so the intl
+// config values can be inherited from an  ancestor.
+var defaultProps = {
+    formats: {},
+    messages: {},
 
-var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
+    defaultLocale: 'en',
+    defaultFormats: {}
+};
 
-exports['default'] = injectIntl;
+var IntlProvider = function (_Component) {
+    babelHelpers.inherits(IntlProvider, _Component);
 
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
+    function IntlProvider(props, context) {
+        babelHelpers.classCallCheck(this, IntlProvider);
+
+        var _this = babelHelpers.possibleConstructorReturn(this, Object.getPrototypeOf(IntlProvider).call(this, props, context));
+
+        invariant(typeof Intl !== 'undefined', '[React Intl] The `Intl` APIs must be available in the runtime, ' + 'and do not appear to be built-in. An `Intl` polyfill should be loaded.\n' + 'See: http://formatjs.io/guides/runtime-environments/');
+
+        var intlContext = context.intl;
+
+        // Used to stabilize time when performing an initial rendering so that
+        // all relative times use the same reference "now" time.
+
+        var initialNow = void 0;
+        if (isFinite(props.initialNow)) {
+            initialNow = Number(props.initialNow);
+        } else {
+            // When an `initialNow` isn't provided via `props`, look to see an
+            //  exists in the ancestry and call its `now()`
+            // function to propagate its value for "now".
+            initialNow = intlContext ? intlContext.now() : Date.now();
+        }
+
+        // Creating `Intl*` formatters is expensive. If there's a parent
+        // ``, then its formatters will be used. Otherwise, this
+        // memoize the `Intl*` constructors and cache them for the lifecycle of
+        // this IntlProvider instance.
+
+        var _ref = intlContext || {};
+
+        var _ref$formatters = _ref.formatters;
+        var formatters = _ref$formatters === undefined ? {
+            getDateTimeFormat: memoizeIntlConstructor(Intl.DateTimeFormat),
+            getNumberFormat: memoizeIntlConstructor(Intl.NumberFormat),
+            getMessageFormat: memoizeIntlConstructor(IntlMessageFormat),
+            getRelativeFormat: memoizeIntlConstructor(IntlRelativeFormat),
+            getPluralFormat: memoizeIntlConstructor(IntlPluralFormat)
+        } : _ref$formatters;
+
+
+        _this.state = babelHelpers['extends']({}, formatters, {
+
+            // Wrapper to provide stable "now" time for initial render.
+            now: function now() {
+                return _this._didDisplay ? Date.now() : initialNow;
+            }
+        });
+        return _this;
+    }
+
+    babelHelpers.createClass(IntlProvider, [{
+        key: 'getConfig',
+        value: function getConfig() {
+            var intlContext = this.context.intl;
+
+            // Build a whitelisted config object from `props`, defaults, and
+            // `context.intl`, if an  exists in the ancestry.
+
+            var config = filterProps(this.props, intlConfigPropNames$1, intlContext);
+
+            // Apply default props. This must be applied last after the props have
+            // been resolved and inherited from any  in the ancestry.
+            // This matches how React resolves `defaultProps`.
+            for (var propName in defaultProps) {
+                if (config[propName] === undefined) {
+                    config[propName] = defaultProps[propName];
+                }
+            }
+
+            if (!hasLocaleData(config.locale)) {
+                var _config = config;
+                var locale = _config.locale;
+                var defaultLocale = _config.defaultLocale;
+                var defaultFormats = _config.defaultFormats;
+
+
+                if (process.env.NODE_ENV !== 'production') {
+                    console.error('[React Intl] Missing locale data for locale: "' + locale + '". ' + ('Using default locale: "' + defaultLocale + '" as fallback.'));
+                }
+
+                // Since there's no registered locale data for `locale`, this will
+                // fallback to the `defaultLocale` to make sure things can render.
+                // The `messages` are overridden to the `defaultProps` empty object
+                // to maintain referential equality across re-renders. It's assumed
+                // each  contains a `defaultMessage` prop.
+                config = babelHelpers['extends']({}, config, {
+                    locale: defaultLocale,
+                    formats: defaultFormats,
+                    messages: defaultProps.messages
+                });
+            }
+
+            return config;
+        }
+    }, {
+        key: 'getBoundFormatFns',
+        value: function getBoundFormatFns(config, state) {
+            return intlFormatPropNames.reduce(function (boundFormatFns, name) {
+                boundFormatFns[name] = format[name].bind(null, config, state);
+                return boundFormatFns;
+            }, {});
+        }
+    }, {
+        key: 'getChildContext',
+        value: function getChildContext() {
+            var config = this.getConfig();
+
+            // Bind intl factories and current config to the format functions.
+            var boundFormatFns = this.getBoundFormatFns(config, this.state);
+
+            var _state = this.state;
+            var now = _state.now;
+            var formatters = babelHelpers.objectWithoutProperties(_state, ['now']);
+
+
+            return {
+                intl: babelHelpers['extends']({}, config, boundFormatFns, {
+                    formatters: formatters,
+                    now: now
+                })
+            };
+        }
+    }, {
+        key: 'shouldComponentUpdate',
+        value: function shouldComponentUpdate() {
+            for (var _len = arguments.length, next = Array(_len), _key = 0; _key < _len; _key++) {
+                next[_key] = arguments[_key];
+            }
+
+            return shouldIntlComponentUpdate.apply(undefined, [this].concat(next));
+        }
+    }, {
+        key: 'componentDidMount',
+        value: function componentDidMount() {
+            this._didDisplay = true;
+        }
+    }, {
+        key: 'render',
+        value: function render() {
+            return React.Children.only(this.props.children);
+        }
+    }]);
+    return IntlProvider;
+}(React.Component);
+
+IntlProvider.displayName = 'IntlProvider';
+
+IntlProvider.contextTypes = {
+    intl: intlShape
+};
+
+IntlProvider.childContextTypes = {
+    intl: intlShape.isRequired
+};
+
+IntlProvider.propTypes = babelHelpers['extends']({}, intlConfigPropTypes, {
+    children: React.PropTypes.element.isRequired,
+    initialNow: React.PropTypes.any
+});
+
+var FormattedDate = function (_Component) {
+    babelHelpers.inherits(FormattedDate, _Component);
+
+    function FormattedDate(props, context) {
+        babelHelpers.classCallCheck(this, FormattedDate);
+
+        var _this = babelHelpers.possibleConstructorReturn(this, Object.getPrototypeOf(FormattedDate).call(this, props, context));
+
+        invariantIntlContext(context);
+        return _this;
+    }
+
+    babelHelpers.createClass(FormattedDate, [{
+        key: 'shouldComponentUpdate',
+        value: function shouldComponentUpdate() {
+            for (var _len = arguments.length, next = Array(_len), _key = 0; _key < _len; _key++) {
+                next[_key] = arguments[_key];
+            }
+
+            return shouldIntlComponentUpdate.apply(undefined, [this].concat(next));
+        }
+    }, {
+        key: 'render',
+        value: function render() {
+            var formatDate = this.context.intl.formatDate;
+            var _props = this.props;
+            var value = _props.value;
+            var children = _props.children;
+
+
+            var formattedDate = formatDate(value, this.props);
+
+            if (typeof children === 'function') {
+                return children(formattedDate);
+            }
+
+            return React__default.createElement(
+                'span',
+                null,
+                formattedDate
+            );
+        }
+    }]);
+    return FormattedDate;
+}(React.Component);
+
+FormattedDate.displayName = 'FormattedDate';
+
+FormattedDate.contextTypes = {
+    intl: intlShape
+};
+
+FormattedDate.propTypes = babelHelpers['extends']({}, dateTimeFormatPropTypes, {
+    value: React.PropTypes.any.isRequired,
+    format: React.PropTypes.string,
+    children: React.PropTypes.func
+});
+
+var FormattedTime = function (_Component) {
+    babelHelpers.inherits(FormattedTime, _Component);
+
+    function FormattedTime(props, context) {
+        babelHelpers.classCallCheck(this, FormattedTime);
+
+        var _this = babelHelpers.possibleConstructorReturn(this, Object.getPrototypeOf(FormattedTime).call(this, props, context));
+
+        invariantIntlContext(context);
+        return _this;
+    }
+
+    babelHelpers.createClass(FormattedTime, [{
+        key: 'shouldComponentUpdate',
+        value: function shouldComponentUpdate() {
+            for (var _len = arguments.length, next = Array(_len), _key = 0; _key < _len; _key++) {
+                next[_key] = arguments[_key];
+            }
+
+            return shouldIntlComponentUpdate.apply(undefined, [this].concat(next));
+        }
+    }, {
+        key: 'render',
+        value: function render() {
+            var formatTime = this.context.intl.formatTime;
+            var _props = this.props;
+            var value = _props.value;
+            var children = _props.children;
+
+
+            var formattedTime = formatTime(value, this.props);
+
+            if (typeof children === 'function') {
+                return children(formattedTime);
+            }
+
+            return React__default.createElement(
+                'span',
+                null,
+                formattedTime
+            );
+        }
+    }]);
+    return FormattedTime;
+}(React.Component);
+
+FormattedTime.displayName = 'FormattedTime';
+
+FormattedTime.contextTypes = {
+    intl: intlShape
+};
 
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
+FormattedTime.propTypes = babelHelpers['extends']({}, dateTimeFormatPropTypes, {
+    value: React.PropTypes.any.isRequired,
+    format: React.PropTypes.string,
+    children: React.PropTypes.func
+});
 
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
+var SECOND = 1000;
+var MINUTE = 1000 * 60;
+var HOUR = 1000 * 60 * 60;
+var DAY = 1000 * 60 * 60 * 24;
 
-function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+// The maximum timer delay value is a 32-bit signed integer.
+// See: https://mdn.io/setTimeout
+var MAX_TIMER_DELAY = 2147483647;
 
-var _react = require('react');
+function selectUnits(delta) {
+    var absDelta = Math.abs(delta);
 
-var _react2 = _interopRequireDefault(_react);
+    if (absDelta < MINUTE) {
+        return 'second';
+    }
 
-var _types = require('./types');
+    if (absDelta < HOUR) {
+        return 'minute';
+    }
 
-var _utils = require('./utils');
+    if (absDelta < DAY) {
+        return 'hour';
+    }
 
-function getDisplayName(Component) {
-    return Component.displayName || Component.name || 'Component';
+    // The maximum scheduled delay will be measured in days since the maximum
+    // timer delay is less than the number of milliseconds in 25 days.
+    return 'day';
 }
 
-function injectIntl(WrappedComponent) {
-    var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];
-    var _options$intlPropName = options.intlPropName;
-    var intlPropName = _options$intlPropName === undefined ? 'intl' : _options$intlPropName;
+function getUnitDelay(units) {
+    switch (units) {
+        case 'second':
+            return SECOND;
+        case 'minute':
+            return MINUTE;
+        case 'hour':
+            return HOUR;
+        case 'day':
+            return DAY;
+        default:
+            return MAX_TIMER_DELAY;
+    }
+}
 
-    var InjectIntl = (function (_Component) {
-        _inherits(InjectIntl, _Component);
+var FormattedRelative = function (_Component) {
+    babelHelpers.inherits(FormattedRelative, _Component);
 
-        function InjectIntl(props, context) {
-            _classCallCheck(this, InjectIntl);
+    function FormattedRelative(props, context) {
+        babelHelpers.classCallCheck(this, FormattedRelative);
 
-            _Component.call(this, props, context);
-            _utils.assertIntlContext(context);
-        }
+        var _this = babelHelpers.possibleConstructorReturn(this, Object.getPrototypeOf(FormattedRelative).call(this, props, context));
 
-        InjectIntl.prototype.render = function render() {
-            return _react2['default'].createElement(WrappedComponent, _extends({}, this.props, _defineProperty({}, intlPropName, this.context.intl), {
-                ref: 'wrappedElement'
-            }));
-        };
+        invariantIntlContext(context);
 
-        return InjectIntl;
-    })(_react.Component);
+        var now = isFinite(props.initialNow) ? Number(props.initialNow) : context.intl.now();
 
-    InjectIntl.displayName = 'IntjectIntl(' + getDisplayName(WrappedComponent) + ')';
+        // `now` is stored as state so that `render()` remains a function of
+        // props + state, instead of accessing `Date.now()` inside `render()`.
+        _this.state = { now: now };
+        return _this;
+    }
 
-    InjectIntl.contextTypes = {
-        intl: _types.intlShape
-    };
+    babelHelpers.createClass(FormattedRelative, [{
+        key: 'scheduleNextUpdate',
+        value: function scheduleNextUpdate(props, state) {
+            var _this2 = this;
 
-    return InjectIntl;
-}
+            var updateInterval = props.updateInterval;
 
-module.exports = exports['default'];
-},{"./types":277,"./utils":278,"react":493}],275:[function(require,module,exports){
-/*
- * Copyright 2015, Yahoo Inc.
- * Copyrights licensed under the New BSD License.
- * See the accompanying LICENSE file for terms.
- */
+            // If the `updateInterval` is falsy, including `0`, then auto updates
+            // have been turned off, so we bail and skip scheduling an update.
 
-// This is a "hack" until a proper `intl-pluralformat` package is created.
+            if (!updateInterval) {
+                return;
+            }
 
-'use strict';
+            var time = new Date(props.value).getTime();
+            var delta = time - state.now;
+            var units = props.units || selectUnits(delta);
 
-exports.__esModule = true;
+            var unitDelay = getUnitDelay(units);
+            var unitRemainder = Math.abs(delta % unitDelay);
 
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
+            // We want the largest possible timer delay which will still display
+            // accurate information while reducing unnecessary re-renders. The delay
+            // should be until the next "interesting" moment, like a tick from
+            // "1 minute ago" to "2 minutes ago" when the delta is 120,000ms.
+            var delay = delta < 0 ? Math.max(updateInterval, unitDelay - unitRemainder) : Math.max(updateInterval, unitRemainder);
 
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
+            clearTimeout(this._timer);
 
-var _intlMessageformat = require('intl-messageformat');
+            this._timer = setTimeout(function () {
+                _this2.setState({ now: _this2.context.intl.now() });
+            }, delay);
+        }
+    }, {
+        key: 'shouldComponentUpdate',
+        value: function shouldComponentUpdate() {
+            for (var _len = arguments.length, next = Array(_len), _key = 0; _key < _len; _key++) {
+                next[_key] = arguments[_key];
+            }
 
-var _intlMessageformat2 = _interopRequireDefault(_intlMessageformat);
+            return shouldIntlComponentUpdate.apply(undefined, [this].concat(next));
+        }
+    }, {
+        key: 'componentWillUpdate',
+        value: function componentWillUpdate(nextProps, nextState) {
+            this.scheduleNextUpdate(nextProps, nextState);
+        }
+    }, {
+        key: 'componentDidMount',
+        value: function componentDidMount() {
+            this.scheduleNextUpdate(this.props, this.state);
+        }
+    }, {
+        key: 'componentWillUnmount',
+        value: function componentWillUnmount() {
+            clearTimeout(this._timer);
+        }
+    }, {
+        key: 'render',
+        value: function render() {
+            var formatRelative = this.context.intl.formatRelative;
+            var _props = this.props;
+            var value = _props.value;
+            var children = _props.children;
 
-function resolveLocale(locales) {
-    // IntlMessageFormat#_resolveLocale() does not depend on `this`.
-    return _intlMessageformat2['default'].prototype._resolveLocale(locales);
-}
 
-function findPluralFunction(locale) {
-    // IntlMessageFormat#_findPluralFunction() does not depend on `this`.
-    return _intlMessageformat2['default'].prototype._findPluralRuleFunction(locale);
-}
+            var formattedRelative = formatRelative(value, babelHelpers['extends']({}, this.props, this.state));
 
-var IntlPluralFormat = function IntlPluralFormat(locales) {
-    var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];
+            if (typeof children === 'function') {
+                return children(formattedRelative);
+            }
 
-    _classCallCheck(this, IntlPluralFormat);
+            return React__default.createElement(
+                'span',
+                null,
+                formattedRelative
+            );
+        }
+    }]);
+    return FormattedRelative;
+}(React.Component);
 
-    var useOrdinal = options.style === 'ordinal';
-    var pluralFn = findPluralFunction(resolveLocale(locales));
+FormattedRelative.displayName = 'FormattedRelative';
 
-    this.format = function (value) {
-        return pluralFn(value, useOrdinal);
-    };
+FormattedRelative.contextTypes = {
+    intl: intlShape
 };
 
-exports['default'] = IntlPluralFormat;
-module.exports = exports['default'];
-},{"intl-messageformat":282}],276:[function(require,module,exports){
-/*
- * Copyright 2015, Yahoo Inc.
- * Copyrights licensed under the New BSD License.
- * See the accompanying LICENSE file for terms.
- */
-
-'use strict';
+FormattedRelative.propTypes = babelHelpers['extends']({}, relativeFormatPropTypes, {
+    value: React.PropTypes.any.isRequired,
+    format: React.PropTypes.string,
+    updateInterval: React.PropTypes.number,
+    initialNow: React.PropTypes.any,
+    children: React.PropTypes.func
+});
 
-exports.__esModule = true;
-exports.defineMessages = defineMessages;
-exports.addLocaleData = addLocaleData;
+FormattedRelative.defaultProps = {
+    updateInterval: 1000 * 10
+};
 
-function _interopRequire(obj) { return obj && obj.__esModule ? obj['default'] : obj; }
+var FormattedNumber = function (_Component) {
+    babelHelpers.inherits(FormattedNumber, _Component);
 
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
+    function FormattedNumber(props, context) {
+        babelHelpers.classCallCheck(this, FormattedNumber);
 
-var _intlMessageformat = require('intl-messageformat');
+        var _this = babelHelpers.possibleConstructorReturn(this, Object.getPrototypeOf(FormattedNumber).call(this, props, context));
 
-var _intlRelativeformat = require('intl-relativeformat');
+        invariantIntlContext(context);
+        return _this;
+    }
 
-var _en = require('./en');
+    babelHelpers.createClass(FormattedNumber, [{
+        key: 'shouldComponentUpdate',
+        value: function shouldComponentUpdate() {
+            for (var _len = arguments.length, next = Array(_len), _key = 0; _key < _len; _key++) {
+                next[_key] = arguments[_key];
+            }
 
-var _en2 = _interopRequireDefault(_en);
+            return shouldIntlComponentUpdate.apply(undefined, [this].concat(next));
+        }
+    }, {
+        key: 'render',
+        value: function render() {
+            var formatNumber = this.context.intl.formatNumber;
+            var _props = this.props;
+            var value = _props.value;
+            var children = _props.children;
 
-var _componentsIntl = require('./components/intl');
 
-exports.IntlProvider = _interopRequire(_componentsIntl);
+            var formattedNumber = formatNumber(value, this.props);
 
-var _componentsGroup = require('./components/group');
+            if (typeof children === 'function') {
+                return children(formattedNumber);
+            }
 
-exports.FormattedGroup = _interopRequire(_componentsGroup);
+            return React__default.createElement(
+                'span',
+                null,
+                formattedNumber
+            );
+        }
+    }]);
+    return FormattedNumber;
+}(React.Component);
 
-var _componentsDate = require('./components/date');
+FormattedNumber.displayName = 'FormattedNumber';
 
-exports.FormattedDate = _interopRequire(_componentsDate);
+FormattedNumber.contextTypes = {
+    intl: intlShape
+};
 
-var _componentsTime = require('./components/time');
+FormattedNumber.propTypes = babelHelpers['extends']({}, numberFormatPropTypes, {
+    value: React.PropTypes.any.isRequired,
+    format: React.PropTypes.string,
+    children: React.PropTypes.func
+});
 
-exports.FormattedTime = _interopRequire(_componentsTime);
+var FormattedPlural = function (_Component) {
+    babelHelpers.inherits(FormattedPlural, _Component);
 
-var _componentsRelative = require('./components/relative');
+    function FormattedPlural(props, context) {
+        babelHelpers.classCallCheck(this, FormattedPlural);
 
-exports.FormattedRelative = _interopRequire(_componentsRelative);
+        var _this = babelHelpers.possibleConstructorReturn(this, Object.getPrototypeOf(FormattedPlural).call(this, props, context));
 
-var _componentsNumber = require('./components/number');
+        invariantIntlContext(context);
+        return _this;
+    }
 
-exports.FormattedNumber = _interopRequire(_componentsNumber);
+    babelHelpers.createClass(FormattedPlural, [{
+        key: 'shouldComponentUpdate',
+        value: function shouldComponentUpdate() {
+            for (var _len = arguments.length, next = Array(_len), _key = 0; _key < _len; _key++) {
+                next[_key] = arguments[_key];
+            }
 
-var _componentsPlural = require('./components/plural');
+            return shouldIntlComponentUpdate.apply(undefined, [this].concat(next));
+        }
+    }, {
+        key: 'render',
+        value: function render() {
+            var formatPlural = this.context.intl.formatPlural;
+            var _props = this.props;
+            var value = _props.value;
+            var other = _props.other;
+            var children = _props.children;
 
-exports.FormattedPlural = _interopRequire(_componentsPlural);
 
-var _componentsMessage = require('./components/message');
+            var pluralCategory = formatPlural(value, this.props);
+            var formattedPlural = this.props[pluralCategory] || other;
 
-exports.FormattedMessage = _interopRequire(_componentsMessage);
+            if (typeof children === 'function') {
+                return children(formattedPlural);
+            }
 
-var _componentsHtmlMessage = require('./components/html-message');
+            return React__default.createElement(
+                'span',
+                null,
+                formattedPlural
+            );
+        }
+    }]);
+    return FormattedPlural;
+}(React.Component);
 
-exports.FormattedHTMLMessage = _interopRequire(_componentsHtmlMessage);
+FormattedPlural.displayName = 'FormattedPlural';
 
-var _inject = require('./inject');
+FormattedPlural.contextTypes = {
+    intl: intlShape
+};
 
-exports.injectIntl = _interopRequire(_inject);
+FormattedPlural.propTypes = babelHelpers['extends']({}, pluralFormatPropTypes, {
+    value: React.PropTypes.any.isRequired,
 
-var _types = require('./types');
+    other: React.PropTypes.node.isRequired,
+    zero: React.PropTypes.node,
+    one: React.PropTypes.node,
+    two: React.PropTypes.node,
+    few: React.PropTypes.node,
+    many: React.PropTypes.node,
 
-exports.intlShape = _types.intlShape;
+    children: React.PropTypes.func
+});
 
-function defineMessages(messageDescriptors) {
-    // TODO: Type check in dev? Return something different?
-    return messageDescriptors;
-}
+FormattedPlural.defaultProps = {
+    style: 'cardinal'
+};
 
-function addLocaleData() {
-    var data = arguments.length <= 0 || arguments[0] === undefined ? [] : arguments[0];
+var FormattedMessage = function (_Component) {
+    babelHelpers.inherits(FormattedMessage, _Component);
 
-    var locales = Array.isArray(data) ? data : [data];
+    function FormattedMessage(props, context) {
+        babelHelpers.classCallCheck(this, FormattedMessage);
 
-    locales.forEach(function (localeData) {
-        _intlMessageformat.__addLocaleData(localeData);
-        _intlRelativeformat.__addLocaleData(localeData);
-    });
-}
+        var _this = babelHelpers.possibleConstructorReturn(this, Object.getPrototypeOf(FormattedMessage).call(this, props, context));
 
-addLocaleData(_en2['default']);
-},{"./components/date":263,"./components/group":264,"./components/html-message":265,"./components/intl":266,"./components/message":267,"./components/number":268,"./components/plural":269,"./components/relative":270,"./components/time":271,"./en":272,"./inject":274,"./types":277,"intl-messageformat":282,"intl-relativeformat":291}],277:[function(require,module,exports){
-/*
- * Copyright 2015, Yahoo Inc.
- * Copyrights licensed under the New BSD License.
- * See the accompanying LICENSE file for terms.
- */
+        invariantIntlContext(context);
+        return _this;
+    }
 
-'use strict';
+    babelHelpers.createClass(FormattedMessage, [{
+        key: 'shouldComponentUpdate',
+        value: function shouldComponentUpdate(nextProps) {
+            var values = this.props.values;
+            var nextValues = nextProps.values;
 
-exports.__esModule = true;
 
-var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
+            if (!shallowEquals(nextValues, values)) {
+                return true;
+            }
 
-var _react = require('react');
+            // Since `values` has already been checked, we know they're not
+            // different, so the current `values` are carried over so the shallow
+            // equals comparison on the other props isn't affected by the `values`.
+            var nextPropsToCheck = babelHelpers['extends']({}, nextProps, {
+                values: values
+            });
 
-var bool = _react.PropTypes.bool;
-var number = _react.PropTypes.number;
-var string = _react.PropTypes.string;
-var func = _react.PropTypes.func;
-var object = _react.PropTypes.object;
-var oneOf = _react.PropTypes.oneOf;
-var shape = _react.PropTypes.shape;
-var intlPropTypes = {
-    locale: string,
-    formats: object,
-    messages: object,
+            for (var _len = arguments.length, next = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
+                next[_key - 1] = arguments[_key];
+            }
 
-    defaultLocale: string,
-    defaultFormats: object
-};
+            return shouldIntlComponentUpdate.apply(undefined, [this, nextPropsToCheck].concat(next));
+        }
+    }, {
+        key: 'render',
+        value: function render() {
+            var formatMessage = this.context.intl.formatMessage;
+            var _props = this.props;
+            var id = _props.id;
+            var description = _props.description;
+            var defaultMessage = _props.defaultMessage;
+            var values = _props.values;
+            var tagName = _props.tagName;
+            var children = _props.children;
+
+
+            var tokenDelimiter = void 0;
+            var tokenizedValues = void 0;
+            var elements = void 0;
+
+            var hasValues = values && Object.keys(values).length > 0;
+            if (hasValues) {
+                (function () {
+                    // Creates a token with a random UID that should not be guessable or
+                    // conflict with other parts of the `message` string.
+                    var uid = Math.floor(Math.random() * 0x10000000000).toString(16);
+
+                    var generateToken = function () {
+                        var counter = 0;
+                        return function () {
+                            return 'ELEMENT-' + uid + '-' + (counter += 1);
+                        };
+                    }();
+
+                    // Splitting with a delimiter to support IE8. When using a regex
+                    // with a capture group IE8 does not include the capture group in
+                    // the resulting array.
+                    tokenDelimiter = '@__' + uid + '__@';
+                    tokenizedValues = {};
+                    elements = {};
+
+                    // Iterates over the `props` to keep track of any React Element
+                    // values so they can be represented by the `token` as a placeholder
+                    // when the `message` is formatted. This allows the formatted
+                    // message to then be broken-up into parts with references to the
+                    // React Elements inserted back in.
+                    Object.keys(values).forEach(function (name) {
+                        var value = values[name];
+
+                        if (React.isValidElement(value)) {
+                            var token = generateToken();
+                            tokenizedValues[name] = tokenDelimiter + token + tokenDelimiter;
+                            elements[token] = value;
+                        } else {
+                            tokenizedValues[name] = value;
+                        }
+                    });
+                })();
+            }
 
-exports.intlPropTypes = intlPropTypes;
-var intlFormatPropTypes = {
-    formatDate: func.isRequired,
-    formatTime: func.isRequired,
-    formatRelative: func.isRequired,
-    formatNumber: func.isRequired,
-    formatPlural: func.isRequired,
-    formatMessage: func.isRequired,
-    formatHTMLMessage: func.isRequired
-};
+            var descriptor = { id: id, description: description, defaultMessage: defaultMessage };
+            var formattedMessage = formatMessage(descriptor, tokenizedValues || values);
+
+            var nodes = void 0;
+
+            var hasElements = elements && Object.keys(elements).length > 0;
+            if (hasElements) {
+                // Split the message into parts so the React Element values captured
+                // above can be inserted back into the rendered message. This
+                // approach allows messages to render with React Elements while
+                // keeping React's virtual diffing working properly.
+                nodes = formattedMessage.split(tokenDelimiter).filter(function (part) {
+                    return !!part;
+                }).map(function (part) {
+                    return elements[part] || part;
+                });
+            } else {
+                nodes = [formattedMessage];
+            }
 
-exports.intlFormatPropTypes = intlFormatPropTypes;
-var intlShape = shape(_extends({}, intlPropTypes, intlFormatPropTypes));
+            if (typeof children === 'function') {
+                return children.apply(undefined, babelHelpers.toConsumableArray(nodes));
+            }
 
-exports.intlShape = intlShape;
-var dateTimeFormatPropTypes = {
-    localeMatcher: oneOf(['best fit', 'lookup']),
-    formatMatcher: oneOf(['basic', 'best fit']),
+            return React.createElement.apply(undefined, [tagName, null].concat(babelHelpers.toConsumableArray(nodes)));
+        }
+    }]);
+    return FormattedMessage;
+}(React.Component);
 
-    timeZone: string,
-    hour12: bool,
+FormattedMessage.displayName = 'FormattedMessage';
 
-    weekday: oneOf(['narrow', 'short', 'long']),
-    era: oneOf(['narrow', 'short', 'long']),
-    year: oneOf(['numeric', '2-digit']),
-    month: oneOf(['numeric', '2-digit', 'narrow', 'short', 'long']),
-    day: oneOf(['numeric', '2-digit']),
-    hour: oneOf(['numeric', '2-digit']),
-    minute: oneOf(['numeric', '2-digit']),
-    second: oneOf(['numeric', '2-digit']),
-    timeZoneName: oneOf(['short', 'long'])
+FormattedMessage.contextTypes = {
+    intl: intlShape
 };
 
-exports.dateTimeFormatPropTypes = dateTimeFormatPropTypes;
-var numberFormatPropTypes = {
-    localeMatcher: oneOf(['best fit', 'lookup']),
-
-    style: oneOf(['decimal', 'currency', 'percent']),
-    currency: string,
-    currencyDisplay: oneOf(['symbol', 'code', 'name']),
-    useGrouping: bool,
+FormattedMessage.propTypes = babelHelpers['extends']({}, messageDescriptorPropTypes, {
+    values: React.PropTypes.object,
+    tagName: React.PropTypes.string,
+    children: React.PropTypes.func
+});
 
-    minimumIntegerDigits: number,
-    minimumFractionDigits: number,
-    maximumFractionDigits: number,
-    minimumSignificantDigits: number,
-    maximumSignificantDigits: number
+FormattedMessage.defaultProps = {
+    values: {},
+    tagName: 'span'
 };
 
-exports.numberFormatPropTypes = numberFormatPropTypes;
-var relativeFormatPropTypes = {
-    style: oneOf(['best fit', 'numeric']),
-    units: oneOf(['second', 'minute', 'hour', 'day', 'month', 'year'])
-};
+var FormattedHTMLMessage = function (_Component) {
+    babelHelpers.inherits(FormattedHTMLMessage, _Component);
 
-exports.relativeFormatPropTypes = relativeFormatPropTypes;
-var pluralFormatPropTypes = {
-    style: oneOf(['cardinal', 'ordinal'])
-};
-exports.pluralFormatPropTypes = pluralFormatPropTypes;
-},{"react":493}],278:[function(require,module,exports){
-(function (process){
-/*
-HTML escaping and shallow-equals implementations are the same as React's
-(on purpose.) Therefore, it has the following Copyright and Licensing:
+    function FormattedHTMLMessage(props, context) {
+        babelHelpers.classCallCheck(this, FormattedHTMLMessage);
 
-Copyright 2013-2014, Facebook, Inc.
-All rights reserved.
+        var _this = babelHelpers.possibleConstructorReturn(this, Object.getPrototypeOf(FormattedHTMLMessage).call(this, props, context));
 
-This source code is licensed under the BSD-style license found in the LICENSE
-file in the root directory of React's source tree.
-*/
+        invariantIntlContext(context);
+        return _this;
+    }
 
-'use strict';
+    babelHelpers.createClass(FormattedHTMLMessage, [{
+        key: 'shouldComponentUpdate',
+        value: function shouldComponentUpdate(nextProps) {
+            var values = this.props.values;
+            var nextValues = nextProps.values;
 
-exports.__esModule = true;
-exports.escape = escape;
-exports.shallowEquals = shallowEquals;
-exports.assertIntlContext = assertIntlContext;
-exports.shouldIntlComponentUpdate = shouldIntlComponentUpdate;
-var ESCAPED_CHARS = {
-    '&': '&',
-    '>': '>',
-    '<': '<',
-    '"': '"',
-    '\'': '''
-};
 
-var UNSAFE_CHARS_REGEX = /[&><"']/g;
+            if (!shallowEquals(nextValues, values)) {
+                return true;
+            }
 
-function escape(str) {
-    return ('' + str).replace(UNSAFE_CHARS_REGEX, function (match) {
-        return ESCAPED_CHARS[match];
-    });
-}
+            // Since `values` has already been checked, we know they're not
+            // different, so the current `values` are carried over so the shallow
+            // equals comparison on the other props isn't affected by the `values`.
+            var nextPropsToCheck = babelHelpers['extends']({}, nextProps, {
+                values: values
+            });
 
-function shallowEquals(objA, objB) {
-    if (objA === objB) {
-        return true;
-    }
+            for (var _len = arguments.length, next = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
+                next[_key - 1] = arguments[_key];
+            }
 
-    if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {
-        return false;
-    }
+            return shouldIntlComponentUpdate.apply(undefined, [this, nextPropsToCheck].concat(next));
+        }
+    }, {
+        key: 'render',
+        value: function render() {
+            var formatHTMLMessage = this.context.intl.formatHTMLMessage;
+            var _props = this.props;
+            var id = _props.id;
+            var description = _props.description;
+            var defaultMessage = _props.defaultMessage;
+            var rawValues = _props.values;
+            var tagName = _props.tagName;
+            var children = _props.children;
 
-    var keysA = Object.keys(objA);
-    var keysB = Object.keys(objB);
 
-    if (keysA.length !== keysB.length) {
-        return false;
-    }
+            var descriptor = { id: id, description: description, defaultMessage: defaultMessage };
+            var formattedHTMLMessage = formatHTMLMessage(descriptor, rawValues);
 
-    // Test for A's keys different from B.
-    var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);
-    for (var i = 0; i < keysA.length; i++) {
-        if (!bHasOwnProperty(keysA[i]) || objA[keysA[i]] !== objB[keysA[i]]) {
-            return false;
-        }
-    }
+            if (typeof children === 'function') {
+                return children(formattedHTMLMessage);
+            }
 
-    return true;
-}
+            // Since the message presumably has HTML in it, we need to set
+            // `innerHTML` in order for it to be rendered and not escaped by React.
+            // To be safe, all string prop values were escaped when formatting the
+            // message. It is assumed that the message is not UGC, and came from the
+            // developer making it more like a template.
+            //
+            // Note: There's a perf impact of using this component since there's no
+            // way for React to do its virtual DOM diffing.
+            return React.createElement(tagName, {
+                dangerouslySetInnerHTML: {
+                    __html: formattedHTMLMessage
+                }
+            });
+        }
+    }]);
+    return FormattedHTMLMessage;
+}(React.Component);
 
-function assertIntlContext() {
-    var _ref = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
+FormattedHTMLMessage.displayName = 'FormattedHTMLMessage';
 
-    var intl = _ref.intl;
+FormattedHTMLMessage.contextTypes = {
+    intl: intlShape
+};
 
-    if (process.env.NODE_ENV !== 'production') {
-        if (!intl) {
-            console.error('[React Intl] Could not find required `intl` object. ' + '`IntlProvider` needs to exist in the component ancestry.');
-        }
-    }
-}
+FormattedHTMLMessage.propTypes = babelHelpers['extends']({}, messageDescriptorPropTypes, {
+    values: React.PropTypes.object,
+    tagName: React.PropTypes.string,
+    children: React.PropTypes.func
+});
 
-function shouldIntlComponentUpdate(instance, nextProps, nextState) {
-    var nextContext = arguments.length <= 3 || arguments[3] === undefined ? {} : arguments[3];
+FormattedHTMLMessage.defaultProps = {
+    values: {},
+    tagName: 'span'
+};
 
-    var context = instance.context || {};
-    var intl = context.intl || {};
-    var nextIntl = nextContext.intl || {};
+addLocaleData(defaultLocaleData);
 
-    return !shallowEquals(nextProps, instance.props) || !shallowEquals(nextState, instance.state) || !shallowEquals(nextIntl, intl);
-}
-}).call(this,require('_process'))
+addLocaleData(allLocaleData);
 
-},{"_process":2}],279:[function(require,module,exports){
+exports.addLocaleData = addLocaleData;
+exports.intlShape = intlShape;
+exports.injectIntl = injectIntl;
+exports.defineMessages = defineMessages;
+exports.IntlProvider = IntlProvider;
+exports.FormattedDate = FormattedDate;
+exports.FormattedTime = FormattedTime;
+exports.FormattedRelative = FormattedRelative;
+exports.FormattedNumber = FormattedNumber;
+exports.FormattedPlural = FormattedPlural;
+exports.FormattedMessage = FormattedMessage;
+exports.FormattedHTMLMessage = FormattedHTMLMessage;
+}).call(this,_dereq_('_process'))
+
+},{"../locale-data/index.js":1,"_process":2,"intl-format-cache":256,"intl-messageformat":259,"intl-relativeformat":268,"invariant":274,"react":475}],256:[function(_dereq_,module,exports){
 'use strict';
 
-exports = module.exports = require('./lib/memoizer')['default'];
+exports = module.exports = _dereq_('./lib/memoizer')['default'];
 exports['default'] = exports;
 
-},{"./lib/memoizer":281}],280:[function(require,module,exports){
+},{"./lib/memoizer":258}],257:[function(_dereq_,module,exports){
 "use strict";
+/*
+Copyright (c) 2014, Yahoo! Inc. All rights reserved.
+Copyrights licensed under the New BSD License.
+See the accompanying LICENSE file for terms.
+*/
+
+/* jslint esnext: true */
+
+// Function.prototype.bind implementation from Mozilla Developer Network:
+// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind#Polyfill
+
+var bind = Function.prototype.bind || function (oThis) {
+    if (typeof this !== 'function') {
+      // closest thing possible to the ECMAScript 5
+      // internal IsCallable function
+      throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable');
+    }
+
+    var aArgs   = Array.prototype.slice.call(arguments, 1),
+        fToBind = this,
+        fNOP    = function() {},
+        fBound  = function() {
+          return fToBind.apply(this instanceof fNOP
+                 ? this
+                 : oThis,
+                 aArgs.concat(Array.prototype.slice.call(arguments)));
+        };
+
+    if (this.prototype) {
+      // native functions don't have a prototype
+      fNOP.prototype = this.prototype;
+    }
+    fBound.prototype = new fNOP();
+
+    return fBound;
+};
 
 // Purposely using the same implementation as the Intl.js `Intl` polyfill.
 // Copyright 2013 Andy Earnshaw, MIT License
@@ -45746,12 +47684,13 @@ var objCreate = Object.create || function (proto, props) {
 
     return obj;
 };
-exports.defineProperty = defineProperty, exports.objCreate = objCreate;
+
+exports.bind = bind, exports.defineProperty = defineProperty, exports.objCreate = objCreate;
 
 
-},{}],281:[function(require,module,exports){
+},{}],258:[function(_dereq_,module,exports){
 "use strict";
-var src$es5$$ = require("./es5");
+var src$es5$$ = _dereq_("./es5");
 exports["default"] = createFormatCache;
 
 // -----------------------------------------------------------------------------
@@ -45765,8 +47704,7 @@ function createFormatCache(FormatConstructor) {
         var format  = cacheId && cache[cacheId];
 
         if (!format) {
-            format = src$es5$$.objCreate(FormatConstructor.prototype);
-            FormatConstructor.apply(format, args);
+            format = new (src$es5$$.bind.apply(FormatConstructor, [null].concat(args)))();
 
             if (cacheId) {
                 cache[cacheId] = format;
@@ -45826,16 +47764,16 @@ function orderedProps(obj) {
 }
 
 
-},{"./es5":280}],282:[function(require,module,exports){
+},{"./es5":257}],259:[function(_dereq_,module,exports){
 /* jshint node:true */
 
 'use strict';
 
-var IntlMessageFormat = require('./lib/main')['default'];
+var IntlMessageFormat = _dereq_('./lib/main')['default'];
 
 // Add all locale data to `IntlMessageFormat`. This module will be ignored when
 // bundling for the browser with Browserify/Webpack.
-require('./lib/locales');
+_dereq_('./lib/locales');
 
 // Re-export `IntlMessageFormat` as the CommonJS default exports with all the
 // locale data registered, and with English set as the default locale. Define
@@ -45843,7 +47781,7 @@ require('./lib/locales');
 exports = module.exports = IntlMessageFormat;
 exports['default'] = exports;
 
-},{"./lib/locales":1,"./lib/main":287}],283:[function(require,module,exports){
+},{"./lib/locales":1,"./lib/main":264}],260:[function(_dereq_,module,exports){
 /*
 Copyright (c) 2014, Yahoo! Inc. All rights reserved.
 Copyrights licensed under the New BSD License.
@@ -46053,7 +47991,7 @@ SelectFormat.prototype.getOption = function (value) {
 };
 
 
-},{}],284:[function(require,module,exports){
+},{}],261:[function(_dereq_,module,exports){
 /*
 Copyright (c) 2014, Yahoo! Inc. All rights reserved.
 Copyrights licensed under the New BSD License.
@@ -46063,7 +48001,7 @@ See the accompanying LICENSE file for terms.
 /* jslint esnext: true */
 
 "use strict";
-var src$utils$$ = require("./utils"), src$es5$$ = require("./es5"), src$compiler$$ = require("./compiler"), intl$messageformat$parser$$ = require("intl-messageformat-parser");
+var src$utils$$ = _dereq_("./utils"), src$es5$$ = _dereq_("./es5"), src$compiler$$ = _dereq_("./compiler"), intl$messageformat$parser$$ = _dereq_("intl-messageformat-parser");
 exports["default"] = MessageFormat;
 
 // -- MessageFormat --------------------------------------------------------
@@ -46318,13 +48256,13 @@ MessageFormat.prototype._resolveLocale = function (locales) {
 };
 
 
-},{"./compiler":283,"./es5":286,"./utils":288,"intl-messageformat-parser":289}],285:[function(require,module,exports){
+},{"./compiler":260,"./es5":263,"./utils":265,"intl-messageformat-parser":266}],262:[function(_dereq_,module,exports){
 // GENERATED FILE
 "use strict";
 exports["default"] = {"locale":"en","pluralRuleFunction":function (n,ord){var s=String(n).split("."),v0=!s[1],t0=Number(s[0])==n,n10=t0&&s[0].slice(-1),n100=t0&&s[0].slice(-2);if(ord)return n10==1&&n100!=11?"one":n10==2&&n100!=12?"two":n10==3&&n100!=13?"few":"other";return n==1&&v0?"one":"other"}};
 
 
-},{}],286:[function(require,module,exports){
+},{}],263:[function(_dereq_,module,exports){
 /*
 Copyright (c) 2014, Yahoo! Inc. All rights reserved.
 Copyrights licensed under the New BSD License.
@@ -46334,7 +48272,7 @@ See the accompanying LICENSE file for terms.
 /* jslint esnext: true */
 
 "use strict";
-var src$utils$$ = require("./utils");
+var src$utils$$ = _dereq_("./utils");
 
 // Purposely using the same implementation as the Intl.js `Intl` polyfill.
 // Copyright 2013 Andy Earnshaw, MIT License
@@ -46374,11 +48312,11 @@ var objCreate = Object.create || function (proto, props) {
 exports.defineProperty = defineProperty, exports.objCreate = objCreate;
 
 
-},{"./utils":288}],287:[function(require,module,exports){
+},{"./utils":265}],264:[function(_dereq_,module,exports){
 /* jslint esnext: true */
 
 "use strict";
-var src$core$$ = require("./core"), src$en$$ = require("./en");
+var src$core$$ = _dereq_("./core"), src$en$$ = _dereq_("./en");
 
 src$core$$["default"].__addLocaleData(src$en$$["default"]);
 src$core$$["default"].defaultLocale = 'en';
@@ -46386,7 +48324,7 @@ src$core$$["default"].defaultLocale = 'en';
 exports["default"] = src$core$$["default"];
 
 
-},{"./core":284,"./en":285}],288:[function(require,module,exports){
+},{"./core":261,"./en":262}],265:[function(_dereq_,module,exports){
 /*
 Copyright (c) 2014, Yahoo! Inc. All rights reserved.
 Copyrights licensed under the New BSD License.
@@ -46419,13 +48357,13 @@ function extend(obj) {
 exports.hop = hop;
 
 
-},{}],289:[function(require,module,exports){
+},{}],266:[function(_dereq_,module,exports){
 'use strict';
 
-exports = module.exports = require('./lib/parser')['default'];
+exports = module.exports = _dereq_('./lib/parser')['default'];
 exports['default'] = exports;
 
-},{"./lib/parser":290}],290:[function(require,module,exports){
+},{"./lib/parser":267}],267:[function(_dereq_,module,exports){
 "use strict";
 
 exports["default"] = (function() {
@@ -46584,21 +48522,24 @@ exports["default"] = (function() {
         },
         peg$c51 = /^[^{}\\\0-\x1F \t\n\r]/,
         peg$c52 = { type: "class", value: "[^{}\\\\\\0-\\x1F \\t\\n\\r]", description: "[^{}\\\\\\0-\\x1F \\t\\n\\r]" },
-        peg$c53 = "\\#",
-        peg$c54 = { type: "literal", value: "\\#", description: "\"\\\\#\"" },
-        peg$c55 = function() { return '\\#'; },
-        peg$c56 = "\\{",
-        peg$c57 = { type: "literal", value: "\\{", description: "\"\\\\{\"" },
-        peg$c58 = function() { return '\u007B'; },
-        peg$c59 = "\\}",
-        peg$c60 = { type: "literal", value: "\\}", description: "\"\\\\}\"" },
-        peg$c61 = function() { return '\u007D'; },
-        peg$c62 = "\\u",
-        peg$c63 = { type: "literal", value: "\\u", description: "\"\\\\u\"" },
-        peg$c64 = function(digits) {
+        peg$c53 = "\\\\",
+        peg$c54 = { type: "literal", value: "\\\\", description: "\"\\\\\\\\\"" },
+        peg$c55 = function() { return '\\'; },
+        peg$c56 = "\\#",
+        peg$c57 = { type: "literal", value: "\\#", description: "\"\\\\#\"" },
+        peg$c58 = function() { return '\\#'; },
+        peg$c59 = "\\{",
+        peg$c60 = { type: "literal", value: "\\{", description: "\"\\\\{\"" },
+        peg$c61 = function() { return '\u007B'; },
+        peg$c62 = "\\}",
+        peg$c63 = { type: "literal", value: "\\}", description: "\"\\\\}\"" },
+        peg$c64 = function() { return '\u007D'; },
+        peg$c65 = "\\u",
+        peg$c66 = { type: "literal", value: "\\u", description: "\"\\\\u\"" },
+        peg$c67 = function(digits) {
                 return String.fromCharCode(parseInt(digits, 16));
             },
-        peg$c65 = function(chars) { return chars.join(''); },
+        peg$c68 = function(chars) { return chars.join(''); },
 
         peg$currPos          = 0,
         peg$reportedPos      = 0,
@@ -47672,18 +49613,36 @@ exports["default"] = (function() {
                 if (peg$silentFails === 0) { peg$fail(peg$c63); }
               }
               if (s1 !== peg$FAILED) {
-                s2 = peg$currPos;
-                s3 = peg$currPos;
-                s4 = peg$parsehexDigit();
-                if (s4 !== peg$FAILED) {
-                  s5 = peg$parsehexDigit();
-                  if (s5 !== peg$FAILED) {
-                    s6 = peg$parsehexDigit();
-                    if (s6 !== peg$FAILED) {
-                      s7 = peg$parsehexDigit();
-                      if (s7 !== peg$FAILED) {
-                        s4 = [s4, s5, s6, s7];
-                        s3 = s4;
+                peg$reportedPos = s0;
+                s1 = peg$c64();
+              }
+              s0 = s1;
+              if (s0 === peg$FAILED) {
+                s0 = peg$currPos;
+                if (input.substr(peg$currPos, 2) === peg$c65) {
+                  s1 = peg$c65;
+                  peg$currPos += 2;
+                } else {
+                  s1 = peg$FAILED;
+                  if (peg$silentFails === 0) { peg$fail(peg$c66); }
+                }
+                if (s1 !== peg$FAILED) {
+                  s2 = peg$currPos;
+                  s3 = peg$currPos;
+                  s4 = peg$parsehexDigit();
+                  if (s4 !== peg$FAILED) {
+                    s5 = peg$parsehexDigit();
+                    if (s5 !== peg$FAILED) {
+                      s6 = peg$parsehexDigit();
+                      if (s6 !== peg$FAILED) {
+                        s7 = peg$parsehexDigit();
+                        if (s7 !== peg$FAILED) {
+                          s4 = [s4, s5, s6, s7];
+                          s3 = s4;
+                        } else {
+                          peg$currPos = s3;
+                          s3 = peg$c2;
+                        }
                       } else {
                         peg$currPos = s3;
                         s3 = peg$c2;
@@ -47696,25 +49655,22 @@ exports["default"] = (function() {
                     peg$currPos = s3;
                     s3 = peg$c2;
                   }
-                } else {
-                  peg$currPos = s3;
-                  s3 = peg$c2;
-                }
-                if (s3 !== peg$FAILED) {
-                  s3 = input.substring(s2, peg$currPos);
-                }
-                s2 = s3;
-                if (s2 !== peg$FAILED) {
-                  peg$reportedPos = s0;
-                  s1 = peg$c64(s2);
-                  s0 = s1;
+                  if (s3 !== peg$FAILED) {
+                    s3 = input.substring(s2, peg$currPos);
+                  }
+                  s2 = s3;
+                  if (s2 !== peg$FAILED) {
+                    peg$reportedPos = s0;
+                    s1 = peg$c67(s2);
+                    s0 = s1;
+                  } else {
+                    peg$currPos = s0;
+                    s0 = peg$c2;
+                  }
                 } else {
                   peg$currPos = s0;
                   s0 = peg$c2;
                 }
-              } else {
-                peg$currPos = s0;
-                s0 = peg$c2;
               }
             }
           }
@@ -47740,7 +49696,7 @@ exports["default"] = (function() {
       }
       if (s1 !== peg$FAILED) {
         peg$reportedPos = s0;
-        s1 = peg$c65(s1);
+        s1 = peg$c68(s1);
       }
       s0 = s1;
 
@@ -47767,16 +49723,16 @@ exports["default"] = (function() {
 })();
 
 
-},{}],291:[function(require,module,exports){
+},{}],268:[function(_dereq_,module,exports){
 /* jshint node:true */
 
 'use strict';
 
-var IntlRelativeFormat = require('./lib/main')['default'];
+var IntlRelativeFormat = _dereq_('./lib/main')['default'];
 
 // Add all locale data to `IntlRelativeFormat`. This module will be ignored when
 // bundling for the browser with Browserify/Webpack.
-require('./lib/locales');
+_dereq_('./lib/locales');
 
 // Re-export `IntlRelativeFormat` as the CommonJS default exports with all the
 // locale data registered, and with English set as the default locale. Define
@@ -47784,7 +49740,7 @@ require('./lib/locales');
 exports = module.exports = IntlRelativeFormat;
 exports['default'] = exports;
 
-},{"./lib/locales":1,"./lib/main":296}],292:[function(require,module,exports){
+},{"./lib/locales":1,"./lib/main":273}],269:[function(_dereq_,module,exports){
 /*
 Copyright (c) 2014, Yahoo! Inc. All rights reserved.
 Copyrights licensed under the New BSD License.
@@ -47794,7 +49750,7 @@ See the accompanying LICENSE file for terms.
 /* jslint esnext: true */
 
 "use strict";
-var intl$messageformat$$ = require("intl-messageformat"), src$diff$$ = require("./diff"), src$es5$$ = require("./es5");
+var intl$messageformat$$ = _dereq_("intl-messageformat"), src$diff$$ = _dereq_("./diff"), src$es5$$ = _dereq_("./es5");
 exports["default"] = RelativeFormat;
 
 // -----------------------------------------------------------------------------
@@ -48082,7 +50038,7 @@ RelativeFormat.prototype._selectUnits = function (diffReport) {
 };
 
 
-},{"./diff":293,"./es5":295,"intl-messageformat":282}],293:[function(require,module,exports){
+},{"./diff":270,"./es5":272,"intl-messageformat":259}],270:[function(_dereq_,module,exports){
 /*
 Copyright (c) 2014, Yahoo! Inc. All rights reserved.
 Copyrights licensed under the New BSD License.
@@ -48129,13 +50085,13 @@ exports["default"] = function (from, to) {
 };
 
 
-},{}],294:[function(require,module,exports){
+},{}],271:[function(_dereq_,module,exports){
 // GENERATED FILE
 "use strict";
-exports["default"] = {"locale":"en","pluralRuleFunction":function (n,ord){var s=String(n).split("."),v0=!s[1],t0=Number(s[0])==n,n10=t0&&s[0].slice(-1),n100=t0&&s[0].slice(-2);if(ord)return n10==1&&n100!=11?"one":n10==2&&n100!=12?"two":n10==3&&n100!=13?"few":"other";return n==1&&v0?"one":"other"},"fields":{"year":{"displayName":"Year","relative":{"0":"this year","1":"next year","-1":"last year"},"relativeTime":{"future":{"one":"in {0} year","other":"in {0} years"},"past":{"one":"{0} year ago","other":"{0} years ago"}}},"month":{"displayName":"Month","relative":{"0":"this month","1":"next month","-1":"last month"},"relativeTime":{"future":{"one":"in {0} month","other":"in {0} months"},"past":{"one":"{0} month ago","other":"{0} months ago"}}},"day":{"displayName":"Day","relative":{"0":"today","1":"tomorrow","-1":"yesterday"},"relativeTime":{"future":{"one":"in {0} day","other":"in {0} days"},"past":{"one":"{0} day ago","other":"{0} days ago"}}},"hour":{"displayName":"Hour","relativeTime":{"future":{"one":"in {0} hour","other":"in {0} hours"},"past":{"one":"{0} hour ago","other":"{0} hours ago"}}},"minute":{"displayName":"Minute","relativeTime":{"future":{"one":"in {0} minute","other":"in {0} minutes"},"past":{"one":"{0} minute ago","other":"{0} minutes ago"}}},"second":{"displayName":"Second","relative":{"0":"now"},"relativeTime":{"future":{"one":"in {0} second","other":"in {0} seconds"},"past":{"one":"{0} second ago","other":"{0} seconds ago"}}}}};
+exports["default"] = {"locale":"en","pluralRuleFunction":function (n,ord){var s=String(n).split("."),v0=!s[1],t0=Number(s[0])==n,n10=t0&&s[0].slice(-1),n100=t0&&s[0].slice(-2);if(ord)return n10==1&&n100!=11?"one":n10==2&&n100!=12?"two":n10==3&&n100!=13?"few":"other";return n==1&&v0?"one":"other"},"fields":{"year":{"displayName":"year","relative":{"0":"this year","1":"next year","-1":"last year"},"relativeTime":{"future":{"one":"in {0} year","other":"in {0} years"},"past":{"one":"{0} year ago","other":"{0} years ago"}}},"month":{"displayName":"month","relative":{"0":"this month","1":"next month","-1":"last month"},"relativeTime":{"future":{"one":"in {0} month","other":"in {0} months"},"past":{"one":"{0} month ago","other":"{0} months ago"}}},"day":{"displayName":"day","relative":{"0":"today","1":"tomorrow","-1":"yesterday"},"relativeTime":{"future":{"one":"in {0} day","other":"in {0} days"},"past":{"one":"{0} day ago","other":"{0} days ago"}}},"hour":{"displayName":"hour","relativeTime":{"future":{"one":"in {0} hour","other":"in {0} hours"},"past":{"one":"{0} hour ago","other":"{0} hours ago"}}},"minute":{"displayName":"minute","relativeTime":{"future":{"one":"in {0} minute","other":"in {0} minutes"},"past":{"one":"{0} minute ago","other":"{0} minutes ago"}}},"second":{"displayName":"second","relative":{"0":"now"},"relativeTime":{"future":{"one":"in {0} second","other":"in {0} seconds"},"past":{"one":"{0} second ago","other":"{0} seconds ago"}}}}};
 
 
-},{}],295:[function(require,module,exports){
+},{}],272:[function(_dereq_,module,exports){
 /*
 Copyright (c) 2014, Yahoo! Inc. All rights reserved.
 Copyrights licensed under the New BSD License.
@@ -48211,37 +50167,100 @@ var dateNow = Date.now || function () {
 exports.defineProperty = defineProperty, exports.objCreate = objCreate, exports.arrIndexOf = arrIndexOf, exports.isArray = isArray, exports.dateNow = dateNow;
 
 
-},{}],296:[function(require,module,exports){
-arguments[4][287][0].apply(exports,arguments)
-},{"./core":292,"./en":294,"dup":287}],297:[function(require,module,exports){
+},{}],273:[function(_dereq_,module,exports){
+arguments[4][264][0].apply(exports,arguments)
+},{"./core":269,"./en":271,"dup":264}],274:[function(_dereq_,module,exports){
+(function (process){
+/**
+ * Copyright 2013-2015, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ */
+
 'use strict';
 
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+/**
+ * Use invariant() to assert state which your program assumes to be true.
+ *
+ * Provide sprintf-style format (only %s is supported) and arguments
+ * to provide information about what broke and what you were
+ * expecting.
+ *
+ * The invariant message will be stripped in production, but the invariant
+ * will remain to ensure logic does not differ in production.
+ */
 
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+var invariant = function(condition, format, a, b, c, d, e, f) {
+  if (process.env.NODE_ENV !== 'production') {
+    if (format === undefined) {
+      throw new Error('invariant requires an error message argument');
+    }
+  }
 
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+  if (!condition) {
+    var error;
+    if (format === undefined) {
+      error = new Error(
+        'Minified exception occurred; use the non-minified dev environment ' +
+        'for the full error message and additional helpful warnings.'
+      );
+    } else {
+      var args = [a, b, c, d, e, f];
+      var argIndex = 0;
+      error = new Error(
+        format.replace(/%s/g, function() { return args[argIndex++]; })
+      );
+      error.name = 'Invariant Violation';
+    }
+
+    error.framesToPop = 1; // we don't care about invariant's own frame
+    throw error;
+  }
+};
+
+module.exports = invariant;
+
+}).call(this,_dereq_('_process'))
+
+},{"_process":2}],275:[function(_dereq_,module,exports){
+(function (process){
+'use strict';
 
-var _require = require('react');
+exports.__esModule = true;
+exports["default"] = undefined;
+
+var _react = _dereq_('react');
+
+var _storeShape = _dereq_('../utils/storeShape');
+
+var _storeShape2 = _interopRequireDefault(_storeShape);
+
+var _warning = _dereq_('../utils/warning');
+
+var _warning2 = _interopRequireDefault(_warning);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
 
-var Component = _require.Component;
-var PropTypes = _require.PropTypes;
-var Children = _require.Children;
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
 
-var storeShape = require('../utils/storeShape');
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
 
 var didWarnAboutReceivingStore = false;
 function warnAboutReceivingStore() {
   if (didWarnAboutReceivingStore) {
     return;
   }
-
   didWarnAboutReceivingStore = true;
-  console.error( // eslint-disable-line no-console
-  ' does not support changing `store` on the fly. ' + 'It is most likely that you see this error because you updated to ' + 'Redux 2.x and React Redux 2.x which no longer hot reload reducers ' + 'automatically. See https://github.com/rackt/react-redux/releases/' + 'tag/v2.0.0 for the migration instructions.');
+
+  (0, _warning2["default"])(' does not support changing `store` on the fly. ' + 'It is most likely that you see this error because you updated to ' + 'Redux 2.x and React Redux 2.x which no longer hot reload reducers ' + 'automatically. See https://github.com/reactjs/react-redux/releases/' + 'tag/v2.0.0 for the migration instructions.');
 }
 
-var Provider = (function (_Component) {
+var Provider = function (_Component) {
   _inherits(Provider, _Component);
 
   Provider.prototype.getChildContext = function getChildContext() {
@@ -48257,7 +50276,19 @@ var Provider = (function (_Component) {
     return _this;
   }
 
-  Provider.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {
+  Provider.prototype.render = function render() {
+    var children = this.props.children;
+
+    return _react.Children.only(children);
+  };
+
+  return Provider;
+}(_react.Component);
+
+exports["default"] = Provider;
+
+if (process.env.NODE_ENV !== 'production') {
+  Provider.prototype.componentWillReceiveProps = function (nextProps) {
     var store = this.store;
     var nextStore = nextProps.store;
 
@@ -48265,48 +50296,63 @@ var Provider = (function (_Component) {
       warnAboutReceivingStore();
     }
   };
-
-  Provider.prototype.render = function render() {
-    var children = this.props.children;
-
-    return Children.only(children);
-  };
-
-  return Provider;
-})(Component);
+}
 
 Provider.propTypes = {
-  store: storeShape.isRequired,
-  children: PropTypes.element.isRequired
+  store: _storeShape2["default"].isRequired,
+  children: _react.PropTypes.element.isRequired
 };
 Provider.childContextTypes = {
-  store: storeShape.isRequired
+  store: _storeShape2["default"].isRequired
 };
+}).call(this,_dereq_('_process'))
 
-module.exports = Provider;
-},{"../utils/storeShape":302,"react":493}],298:[function(require,module,exports){
+},{"../utils/storeShape":279,"../utils/warning":280,"_process":2,"react":475}],276:[function(_dereq_,module,exports){
 (function (process){
 'use strict';
 
 var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
 
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+exports.__esModule = true;
+exports["default"] = connect;
 
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+var _react = _dereq_('react');
 
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+var _storeShape = _dereq_('../utils/storeShape');
+
+var _storeShape2 = _interopRequireDefault(_storeShape);
+
+var _shallowEqual = _dereq_('../utils/shallowEqual');
+
+var _shallowEqual2 = _interopRequireDefault(_shallowEqual);
+
+var _wrapActionCreators = _dereq_('../utils/wrapActionCreators');
+
+var _wrapActionCreators2 = _interopRequireDefault(_wrapActionCreators);
+
+var _warning = _dereq_('../utils/warning');
+
+var _warning2 = _interopRequireDefault(_warning);
+
+var _isPlainObject = _dereq_('lodash/isPlainObject');
+
+var _isPlainObject2 = _interopRequireDefault(_isPlainObject);
+
+var _hoistNonReactStatics = _dereq_('hoist-non-react-statics');
 
-var _require = require('react');
+var _hoistNonReactStatics2 = _interopRequireDefault(_hoistNonReactStatics);
 
-var Component = _require.Component;
-var createElement = _require.createElement;
+var _invariant = _dereq_('invariant');
 
-var storeShape = require('../utils/storeShape');
-var shallowEqual = require('../utils/shallowEqual');
-var isPlainObject = require('../utils/isPlainObject');
-var wrapActionCreators = require('../utils/wrapActionCreators');
-var hoistStatics = require('hoist-non-react-statics');
-var invariant = require('invariant');
+var _invariant2 = _interopRequireDefault(_invariant);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
 
 var defaultMapStateToProps = function defaultMapStateToProps(state) {
   return {};
@@ -48322,6 +50368,16 @@ function getDisplayName(WrappedComponent) {
   return WrappedComponent.displayName || WrappedComponent.name || 'Component';
 }
 
+var errorObject = { value: null };
+function tryCatch(fn, ctx) {
+  try {
+    return fn.apply(ctx);
+  } catch (e) {
+    errorObject.value = e;
+    return errorObject;
+  }
+}
+
 // Helps track hot reloading.
 var nextVersion = 0;
 
@@ -48329,45 +50385,46 @@ function connect(mapStateToProps, mapDispatchToProps, mergeProps) {
   var options = arguments.length <= 3 || arguments[3] === undefined ? {} : arguments[3];
 
   var shouldSubscribe = Boolean(mapStateToProps);
-  var finalMapStateToProps = mapStateToProps || defaultMapStateToProps;
-  var finalMapDispatchToProps = isPlainObject(mapDispatchToProps) ? wrapActionCreators(mapDispatchToProps) : mapDispatchToProps || defaultMapDispatchToProps;
+  var mapState = mapStateToProps || defaultMapStateToProps;
+
+  var mapDispatch = undefined;
+  if (typeof mapDispatchToProps === 'function') {
+    mapDispatch = mapDispatchToProps;
+  } else if (!mapDispatchToProps) {
+    mapDispatch = defaultMapDispatchToProps;
+  } else {
+    mapDispatch = (0, _wrapActionCreators2["default"])(mapDispatchToProps);
+  }
+
   var finalMergeProps = mergeProps || defaultMergeProps;
-  var doStatePropsDependOnOwnProps = finalMapStateToProps.length !== 1;
-  var doDispatchPropsDependOnOwnProps = finalMapDispatchToProps.length !== 1;
   var _options$pure = options.pure;
   var pure = _options$pure === undefined ? true : _options$pure;
   var _options$withRef = options.withRef;
   var withRef = _options$withRef === undefined ? false : _options$withRef;
 
-  // Helps track hot reloading.
+  var checkMergedEquals = pure && finalMergeProps !== defaultMergeProps;
 
+  // Helps track hot reloading.
   var version = nextVersion++;
 
-  function computeStateProps(store, props) {
-    var state = store.getState();
-    var stateProps = doStatePropsDependOnOwnProps ? finalMapStateToProps(state, props) : finalMapStateToProps(state);
-
-    invariant(isPlainObject(stateProps), '`mapStateToProps` must return an object. Instead received %s.', stateProps);
-    return stateProps;
-  }
-
-  function computeDispatchProps(store, props) {
-    var dispatch = store.dispatch;
-
-    var dispatchProps = doDispatchPropsDependOnOwnProps ? finalMapDispatchToProps(dispatch, props) : finalMapDispatchToProps(dispatch);
+  return function wrapWithConnect(WrappedComponent) {
+    var connectDisplayName = 'Connect(' + getDisplayName(WrappedComponent) + ')';
 
-    invariant(isPlainObject(dispatchProps), '`mapDispatchToProps` must return an object. Instead received %s.', dispatchProps);
-    return dispatchProps;
-  }
+    function checkStateShape(props, methodName) {
+      if (!(0, _isPlainObject2["default"])(props)) {
+        (0, _warning2["default"])(methodName + '() in ' + connectDisplayName + ' must return a plain object. ' + ('Instead received ' + props + '.'));
+      }
+    }
 
-  function computeMergedProps(stateProps, dispatchProps, parentProps) {
-    var mergedProps = finalMergeProps(stateProps, dispatchProps, parentProps);
-    invariant(isPlainObject(mergedProps), '`mergeProps` must return an object. Instead received %s.', mergedProps);
-    return mergedProps;
-  }
+    function computeMergedProps(stateProps, dispatchProps, parentProps) {
+      var mergedProps = finalMergeProps(stateProps, dispatchProps, parentProps);
+      if (process.env.NODE_ENV !== 'production') {
+        checkStateShape(mergedProps, 'mergeProps');
+      }
+      return mergedProps;
+    }
 
-  return function wrapWithConnect(WrappedComponent) {
-    var Connect = (function (_Component) {
+    var Connect = function (_Component) {
       _inherits(Connect, _Component);
 
       Connect.prototype.shouldComponentUpdate = function shouldComponentUpdate() {
@@ -48382,7 +50439,7 @@ function connect(mapStateToProps, mapDispatchToProps, mergeProps) {
         _this.version = version;
         _this.store = props.store || context.store;
 
-        invariant(_this.store, 'Could not find "store" in either the context or ' + ('props of "' + _this.constructor.displayName + '". ') + 'Either wrap the root component in a , ' + ('or explicitly pass "store" as a prop to "' + _this.constructor.displayName + '".'));
+        (0, _invariant2["default"])(_this.store, 'Could not find "store" in either the context or ' + ('props of "' + connectDisplayName + '". ') + 'Either wrap the root component in a , ' + ('or explicitly pass "store" as a prop to "' + connectDisplayName + '".'));
 
         var storeState = _this.store.getState();
         _this.state = { storeState: storeState };
@@ -48390,9 +50447,72 @@ function connect(mapStateToProps, mapDispatchToProps, mergeProps) {
         return _this;
       }
 
+      Connect.prototype.computeStateProps = function computeStateProps(store, props) {
+        if (!this.finalMapStateToProps) {
+          return this.configureFinalMapState(store, props);
+        }
+
+        var state = store.getState();
+        var stateProps = this.doStatePropsDependOnOwnProps ? this.finalMapStateToProps(state, props) : this.finalMapStateToProps(state);
+
+        if (process.env.NODE_ENV !== 'production') {
+          checkStateShape(stateProps, 'mapStateToProps');
+        }
+        return stateProps;
+      };
+
+      Connect.prototype.configureFinalMapState = function configureFinalMapState(store, props) {
+        var mappedState = mapState(store.getState(), props);
+        var isFactory = typeof mappedState === 'function';
+
+        this.finalMapStateToProps = isFactory ? mappedState : mapState;
+        this.doStatePropsDependOnOwnProps = this.finalMapStateToProps.length !== 1;
+
+        if (isFactory) {
+          return this.computeStateProps(store, props);
+        }
+
+        if (process.env.NODE_ENV !== 'production') {
+          checkStateShape(mappedState, 'mapStateToProps');
+        }
+        return mappedState;
+      };
+
+      Connect.prototype.computeDispatchProps = function computeDispatchProps(store, props) {
+        if (!this.finalMapDispatchToProps) {
+          return this.configureFinalMapDispatch(store, props);
+        }
+
+        var dispatch = store.dispatch;
+
+        var dispatchProps = this.doDispatchPropsDependOnOwnProps ? this.finalMapDispatchToProps(dispatch, props) : this.finalMapDispatchToProps(dispatch);
+
+        if (process.env.NODE_ENV !== 'production') {
+          checkStateShape(dispatchProps, 'mapDispatchToProps');
+        }
+        return dispatchProps;
+      };
+
+      Connect.prototype.configureFinalMapDispatch = function configureFinalMapDispatch(store, props) {
+        var mappedDispatch = mapDispatch(store.dispatch, props);
+        var isFactory = typeof mappedDispatch === 'function';
+
+        this.finalMapDispatchToProps = isFactory ? mappedDispatch : mapDispatch;
+        this.doDispatchPropsDependOnOwnProps = this.finalMapDispatchToProps.length !== 1;
+
+        if (isFactory) {
+          return this.computeDispatchProps(store, props);
+        }
+
+        if (process.env.NODE_ENV !== 'production') {
+          checkStateShape(mappedDispatch, 'mapDispatchToProps');
+        }
+        return mappedDispatch;
+      };
+
       Connect.prototype.updateStatePropsIfNeeded = function updateStatePropsIfNeeded() {
-        var nextStateProps = computeStateProps(this.store, this.props);
-        if (this.stateProps && shallowEqual(nextStateProps, this.stateProps)) {
+        var nextStateProps = this.computeStateProps(this.store, this.props);
+        if (this.stateProps && (0, _shallowEqual2["default"])(nextStateProps, this.stateProps)) {
           return false;
         }
 
@@ -48401,8 +50521,8 @@ function connect(mapStateToProps, mapDispatchToProps, mergeProps) {
       };
 
       Connect.prototype.updateDispatchPropsIfNeeded = function updateDispatchPropsIfNeeded() {
-        var nextDispatchProps = computeDispatchProps(this.store, this.props);
-        if (this.dispatchProps && shallowEqual(nextDispatchProps, this.dispatchProps)) {
+        var nextDispatchProps = this.computeDispatchProps(this.store, this.props);
+        if (this.dispatchProps && (0, _shallowEqual2["default"])(nextDispatchProps, this.dispatchProps)) {
           return false;
         }
 
@@ -48410,8 +50530,14 @@ function connect(mapStateToProps, mapDispatchToProps, mergeProps) {
         return true;
       };
 
-      Connect.prototype.updateMergedProps = function updateMergedProps() {
-        this.mergedProps = computeMergedProps(this.stateProps, this.dispatchProps, this.props);
+      Connect.prototype.updateMergedPropsIfNeeded = function updateMergedPropsIfNeeded() {
+        var nextMergedProps = computeMergedProps(this.stateProps, this.dispatchProps, this.props);
+        if (this.mergedProps && checkMergedEquals && (0, _shallowEqual2["default"])(nextMergedProps, this.mergedProps)) {
+          return false;
+        }
+
+        this.mergedProps = nextMergedProps;
+        return true;
       };
 
       Connect.prototype.isSubscribed = function isSubscribed() {
@@ -48437,7 +50563,7 @@ function connect(mapStateToProps, mapDispatchToProps, mergeProps) {
       };
 
       Connect.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {
-        if (!pure || !shallowEqual(nextProps, this.props)) {
+        if (!pure || !(0, _shallowEqual2["default"])(nextProps, this.props)) {
           this.haveOwnPropsChanged = true;
         }
       };
@@ -48453,7 +50579,11 @@ function connect(mapStateToProps, mapDispatchToProps, mergeProps) {
         this.mergedProps = null;
         this.haveOwnPropsChanged = true;
         this.hasStoreStateChanged = true;
+        this.haveStatePropsBeenPrecalculated = false;
+        this.statePropsPrecalculationError = null;
         this.renderedElement = null;
+        this.finalMapDispatchToProps = null;
+        this.finalMapStateToProps = null;
       };
 
       Connect.prototype.handleChange = function handleChange() {
@@ -48461,17 +50591,29 @@ function connect(mapStateToProps, mapDispatchToProps, mergeProps) {
           return;
         }
 
-        var prevStoreState = this.state.storeState;
         var storeState = this.store.getState();
+        var prevStoreState = this.state.storeState;
+        if (pure && prevStoreState === storeState) {
+          return;
+        }
 
-        if (!pure || prevStoreState !== storeState) {
-          this.hasStoreStateChanged = true;
-          this.setState({ storeState: storeState });
+        if (pure && !this.doStatePropsDependOnOwnProps) {
+          var haveStatePropsChanged = tryCatch(this.updateStatePropsIfNeeded, this);
+          if (!haveStatePropsChanged) {
+            return;
+          }
+          if (haveStatePropsChanged === errorObject) {
+            this.statePropsPrecalculationError = errorObject.value;
+          }
+          this.haveStatePropsBeenPrecalculated = true;
         }
+
+        this.hasStoreStateChanged = true;
+        this.setState({ storeState: storeState });
       };
 
       Connect.prototype.getWrappedInstance = function getWrappedInstance() {
-        invariant(withRef, 'To access the wrapped instance, you need to specify ' + '{ withRef: true } as the fourth argument of the connect() call.');
+        (0, _invariant2["default"])(withRef, 'To access the wrapped instance, you need to specify ' + '{ withRef: true } as the fourth argument of the connect() call.');
 
         return this.refs.wrappedInstance;
       };
@@ -48479,21 +50621,31 @@ function connect(mapStateToProps, mapDispatchToProps, mergeProps) {
       Connect.prototype.render = function render() {
         var haveOwnPropsChanged = this.haveOwnPropsChanged;
         var hasStoreStateChanged = this.hasStoreStateChanged;
+        var haveStatePropsBeenPrecalculated = this.haveStatePropsBeenPrecalculated;
+        var statePropsPrecalculationError = this.statePropsPrecalculationError;
         var renderedElement = this.renderedElement;
 
         this.haveOwnPropsChanged = false;
         this.hasStoreStateChanged = false;
+        this.haveStatePropsBeenPrecalculated = false;
+        this.statePropsPrecalculationError = null;
+
+        if (statePropsPrecalculationError) {
+          throw statePropsPrecalculationError;
+        }
 
         var shouldUpdateStateProps = true;
         var shouldUpdateDispatchProps = true;
         if (pure && renderedElement) {
-          shouldUpdateStateProps = hasStoreStateChanged || haveOwnPropsChanged && doStatePropsDependOnOwnProps;
-          shouldUpdateDispatchProps = haveOwnPropsChanged && doDispatchPropsDependOnOwnProps;
+          shouldUpdateStateProps = hasStoreStateChanged || haveOwnPropsChanged && this.doStatePropsDependOnOwnProps;
+          shouldUpdateDispatchProps = haveOwnPropsChanged && this.doDispatchPropsDependOnOwnProps;
         }
 
         var haveStatePropsChanged = false;
         var haveDispatchPropsChanged = false;
-        if (shouldUpdateStateProps) {
+        if (haveStatePropsBeenPrecalculated) {
+          haveStatePropsChanged = true;
+        } else if (shouldUpdateStateProps) {
           haveStatePropsChanged = this.updateStatePropsIfNeeded();
         }
         if (shouldUpdateDispatchProps) {
@@ -48502,7 +50654,7 @@ function connect(mapStateToProps, mapDispatchToProps, mergeProps) {
 
         var haveMergedPropsChanged = true;
         if (haveStatePropsChanged || haveDispatchPropsChanged || haveOwnPropsChanged) {
-          this.updateMergedProps();
+          haveMergedPropsChanged = this.updateMergedPropsIfNeeded();
         } else {
           haveMergedPropsChanged = false;
         }
@@ -48512,26 +50664,26 @@ function connect(mapStateToProps, mapDispatchToProps, mergeProps) {
         }
 
         if (withRef) {
-          this.renderedElement = createElement(WrappedComponent, _extends({}, this.mergedProps, {
+          this.renderedElement = (0, _react.createElement)(WrappedComponent, _extends({}, this.mergedProps, {
             ref: 'wrappedInstance'
           }));
         } else {
-          this.renderedElement = createElement(WrappedComponent, this.mergedProps);
+          this.renderedElement = (0, _react.createElement)(WrappedComponent, this.mergedProps);
         }
 
         return this.renderedElement;
       };
 
       return Connect;
-    })(Component);
+    }(_react.Component);
 
-    Connect.displayName = 'Connect(' + getDisplayName(WrappedComponent) + ')';
+    Connect.displayName = connectDisplayName;
     Connect.WrappedComponent = WrappedComponent;
     Connect.contextTypes = {
-      store: storeShape
+      store: _storeShape2["default"]
     };
     Connect.propTypes = {
-      store: storeShape
+      store: _storeShape2["default"]
     };
 
     if (process.env.NODE_ENV !== 'production') {
@@ -48547,53 +50699,34 @@ function connect(mapStateToProps, mapDispatchToProps, mergeProps) {
       };
     }
 
-    return hoistStatics(Connect, WrappedComponent);
+    return (0, _hoistNonReactStatics2["default"])(Connect, WrappedComponent);
   };
 }
+}).call(this,_dereq_('_process'))
 
-module.exports = connect;
-}).call(this,require('_process'))
-
-},{"../utils/isPlainObject":300,"../utils/shallowEqual":301,"../utils/storeShape":302,"../utils/wrapActionCreators":303,"_process":2,"hoist-non-react-statics":304,"invariant":305,"react":493}],299:[function(require,module,exports){
-'use strict';
-
-var Provider = require('./components/Provider');
-var connect = require('./components/connect');
-
-module.exports = { Provider: Provider, connect: connect };
-},{"./components/Provider":297,"./components/connect":298}],300:[function(require,module,exports){
+},{"../utils/shallowEqual":278,"../utils/storeShape":279,"../utils/warning":280,"../utils/wrapActionCreators":281,"_process":2,"hoist-non-react-statics":282,"invariant":283,"lodash/isPlainObject":287,"react":475}],277:[function(_dereq_,module,exports){
 'use strict';
 
-function _typeof(obj) { return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj; }
-
-var fnToString = function fnToString(fn) {
-  return Function.prototype.toString.call(fn);
-};
+exports.__esModule = true;
+exports.connect = exports.Provider = undefined;
 
-/**
- * @param {any} obj The object to inspect.
- * @returns {boolean} True if the argument appears to be a plain object.
- */
-function isPlainObject(obj) {
-  if (!obj || (typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) !== 'object') {
-    return false;
-  }
+var _Provider = _dereq_('./components/Provider');
 
-  var proto = typeof obj.constructor === 'function' ? Object.getPrototypeOf(obj) : Object.prototype;
+var _Provider2 = _interopRequireDefault(_Provider);
 
-  if (proto === null) {
-    return true;
-  }
+var _connect = _dereq_('./components/connect');
 
-  var constructor = proto.constructor;
+var _connect2 = _interopRequireDefault(_connect);
 
-  return typeof constructor === 'function' && constructor instanceof constructor && fnToString(constructor) === fnToString(Object);
-}
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
 
-module.exports = isPlainObject;
-},{}],301:[function(require,module,exports){
+exports.Provider = _Provider2["default"];
+exports.connect = _connect2["default"];
+},{"./components/Provider":275,"./components/connect":276}],278:[function(_dereq_,module,exports){
 "use strict";
 
+exports.__esModule = true;
+exports["default"] = shallowEqual;
 function shallowEqual(objA, objB) {
   if (objA === objB) {
     return true;
@@ -48616,35 +50749,57 @@ function shallowEqual(objA, objB) {
 
   return true;
 }
-
-module.exports = shallowEqual;
-},{}],302:[function(require,module,exports){
+},{}],279:[function(_dereq_,module,exports){
 'use strict';
 
-var _require = require('react');
+exports.__esModule = true;
 
-var PropTypes = _require.PropTypes;
+var _react = _dereq_('react');
 
-var storeShape = PropTypes.shape({
-  subscribe: PropTypes.func.isRequired,
-  dispatch: PropTypes.func.isRequired,
-  getState: PropTypes.func.isRequired
+exports["default"] = _react.PropTypes.shape({
+  subscribe: _react.PropTypes.func.isRequired,
+  dispatch: _react.PropTypes.func.isRequired,
+  getState: _react.PropTypes.func.isRequired
 });
+},{"react":475}],280:[function(_dereq_,module,exports){
+'use strict';
 
-module.exports = storeShape;
-},{"react":493}],303:[function(require,module,exports){
+exports.__esModule = true;
+exports["default"] = warning;
+/**
+ * Prints a warning in the console if it exists.
+ *
+ * @param {String} message The warning message.
+ * @returns {void}
+ */
+function warning(message) {
+  /* eslint-disable no-console */
+  if (typeof console !== 'undefined' && typeof console.error === 'function') {
+    console.error(message);
+  }
+  /* eslint-enable no-console */
+  try {
+    // This error was thrown as a convenience so that you can use this stack
+    // to find the callsite that caused this warning to fire.
+    throw new Error(message);
+    /* eslint-disable no-empty */
+  } catch (e) {}
+  /* eslint-enable no-empty */
+}
+},{}],281:[function(_dereq_,module,exports){
 'use strict';
 
-var _redux = require('redux');
+exports.__esModule = true;
+exports["default"] = wrapActionCreators;
+
+var _redux = _dereq_('redux');
 
 function wrapActionCreators(actionCreators) {
   return function (dispatch) {
     return (0, _redux.bindActionCreators)(actionCreators, dispatch);
   };
 }
-
-module.exports = wrapActionCreators;
-},{"redux":498}],304:[function(require,module,exports){
+},{"redux":484}],282:[function(_dereq_,module,exports){
 /**
  * Copyright 2015, Yahoo! Inc.
  * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.
@@ -48672,17 +50827,23 @@ var KNOWN_STATICS = {
 };
 
 module.exports = function hoistNonReactStatics(targetComponent, sourceComponent) {
-    var keys = Object.getOwnPropertyNames(sourceComponent);
-    for (var i=0; i false
+ *
+ * _.isPlainObject([1, 2, 3]);
+ * // => false
+ *
+ * _.isPlainObject({ 'x': 0, 'y': 0 });
+ * // => true
+ *
+ * _.isPlainObject(Object.create(null));
+ * // => true
+ */
+function isPlainObject(value) {
+  if (!isObjectLike(value) ||
+      objectToString.call(value) != objectTag || isHostObject(value)) {
+    return false;
+  }
+  var proto = getPrototype(value);
+  if (proto === null) {
+    return true;
+  }
+  var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;
+  return (typeof Ctor == 'function' &&
+    Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString);
+}
+
+module.exports = isPlainObject;
 
-},{"_process":2}],306:[function(require,module,exports){
+},{"./_getPrototype":284,"./_isHostObject":285,"./isObjectLike":286}],288:[function(_dereq_,module,exports){
 "use strict";
 
 exports.__esModule = true;
@@ -48797,12 +51036,12 @@ function mapAsync(array, work, callback) {
     });
   });
 }
-},{}],307:[function(require,module,exports){
+},{}],289:[function(_dereq_,module,exports){
 'use strict';
 
 exports.__esModule = true;
 
-var _PropTypes = require('./PropTypes');
+var _PropTypes = _dereq_('./PropTypes');
 
 /**
  * A mixin that adds the "history" instance variable to components.
@@ -48821,7 +51060,7 @@ var History = {
 
 exports['default'] = History;
 module.exports = exports['default'];
-},{"./PropTypes":314}],308:[function(require,module,exports){
+},{"./PropTypes":296}],290:[function(_dereq_,module,exports){
 'use strict';
 
 exports.__esModule = true;
@@ -48834,11 +51073,11 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons
 
 function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
 
-var _react = require('react');
+var _react = _dereq_('react');
 
 var _react2 = _interopRequireDefault(_react);
 
-var _Link = require('./Link');
+var _Link = _dereq_('./Link');
 
 var _Link2 = _interopRequireDefault(_Link);
 
@@ -48864,7 +51103,7 @@ var IndexLink = (function (_Component) {
 
 exports['default'] = IndexLink;
 module.exports = exports['default'];
-},{"./Link":312,"react":493}],309:[function(require,module,exports){
+},{"./Link":294,"react":475}],291:[function(_dereq_,module,exports){
 (function (process){
 'use strict';
 
@@ -48876,23 +51115,23 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons
 
 function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
 
-var _warning = require('warning');
+var _warning = _dereq_('warning');
 
 var _warning2 = _interopRequireDefault(_warning);
 
-var _invariant = require('invariant');
+var _invariant = _dereq_('invariant');
 
 var _invariant2 = _interopRequireDefault(_invariant);
 
-var _react = require('react');
+var _react = _dereq_('react');
 
 var _react2 = _interopRequireDefault(_react);
 
-var _Redirect = require('./Redirect');
+var _Redirect = _dereq_('./Redirect');
 
 var _Redirect2 = _interopRequireDefault(_Redirect);
 
-var _PropTypes = require('./PropTypes');
+var _PropTypes = _dereq_('./PropTypes');
 
 var _React$PropTypes = _react2['default'].PropTypes;
 var string = _React$PropTypes.string;
@@ -48939,9 +51178,9 @@ IndexRedirect.createRouteFromReactElement = function (element, parentRoute) {
 
 exports['default'] = IndexRedirect;
 module.exports = exports['default'];
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"./PropTypes":314,"./Redirect":315,"_process":2,"invariant":330,"react":493,"warning":331}],310:[function(require,module,exports){
+},{"./PropTypes":296,"./Redirect":297,"_process":2,"invariant":312,"react":475,"warning":313}],292:[function(_dereq_,module,exports){
 (function (process){
 'use strict';
 
@@ -48953,21 +51192,21 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons
 
 function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
 
-var _warning = require('warning');
+var _warning = _dereq_('warning');
 
 var _warning2 = _interopRequireDefault(_warning);
 
-var _invariant = require('invariant');
+var _invariant = _dereq_('invariant');
 
 var _invariant2 = _interopRequireDefault(_invariant);
 
-var _react = require('react');
+var _react = _dereq_('react');
 
 var _react2 = _interopRequireDefault(_react);
 
-var _RouteUtils = require('./RouteUtils');
+var _RouteUtils = _dereq_('./RouteUtils');
 
-var _PropTypes = require('./PropTypes');
+var _PropTypes = _dereq_('./PropTypes');
 
 var func = _react2['default'].PropTypes.func;
 
@@ -49013,9 +51252,9 @@ IndexRoute.createRouteFromReactElement = function (element, parentRoute) {
 
 exports['default'] = IndexRoute;
 module.exports = exports['default'];
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"./PropTypes":314,"./RouteUtils":318,"_process":2,"invariant":330,"react":493,"warning":331}],311:[function(require,module,exports){
+},{"./PropTypes":296,"./RouteUtils":300,"_process":2,"invariant":312,"react":475,"warning":313}],293:[function(_dereq_,module,exports){
 (function (process){
 'use strict';
 
@@ -49023,11 +51262,11 @@ exports.__esModule = true;
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
 
-var _react = require('react');
+var _react = _dereq_('react');
 
 var _react2 = _interopRequireDefault(_react);
 
-var _invariant = require('invariant');
+var _invariant = _dereq_('invariant');
 
 var _invariant2 = _interopRequireDefault(_invariant);
 
@@ -49081,9 +51320,9 @@ var Lifecycle = {
 
 exports['default'] = Lifecycle;
 module.exports = exports['default'];
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"_process":2,"invariant":330,"react":493}],312:[function(require,module,exports){
+},{"_process":2,"invariant":312,"react":475}],294:[function(_dereq_,module,exports){
 'use strict';
 
 exports.__esModule = true;
@@ -49098,7 +51337,7 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons
 
 function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
 
-var _react = require('react');
+var _react = _dereq_('react');
 
 var _react2 = _interopRequireDefault(_react);
 
@@ -49247,7 +51486,7 @@ Link.defaultProps = {
 
 exports['default'] = Link;
 module.exports = exports['default'];
-},{"react":493}],313:[function(require,module,exports){
+},{"react":475}],295:[function(_dereq_,module,exports){
 (function (process){
 'use strict';
 
@@ -49260,7 +51499,7 @@ exports.formatPattern = formatPattern;
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
 
-var _invariant = require('invariant');
+var _invariant = _dereq_('invariant');
 
 var _invariant2 = _interopRequireDefault(_invariant);
 
@@ -49476,15 +51715,15 @@ function formatPattern(pattern, params) {
 
   return pathname.replace(/\/+/g, '/');
 }
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"_process":2,"invariant":330}],314:[function(require,module,exports){
+},{"_process":2,"invariant":312}],296:[function(_dereq_,module,exports){
 'use strict';
 
 exports.__esModule = true;
 exports.falsy = falsy;
 
-var _react = require('react');
+var _react = _dereq_('react');
 
 var func = _react.PropTypes.func;
 var object = _react.PropTypes.object;
@@ -49532,7 +51771,7 @@ exports['default'] = {
   components: components,
   route: route
 };
-},{"react":493}],315:[function(require,module,exports){
+},{"react":475}],297:[function(_dereq_,module,exports){
 (function (process){
 'use strict';
 
@@ -49544,19 +51783,19 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons
 
 function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
 
-var _invariant = require('invariant');
+var _invariant = _dereq_('invariant');
 
 var _invariant2 = _interopRequireDefault(_invariant);
 
-var _react = require('react');
+var _react = _dereq_('react');
 
 var _react2 = _interopRequireDefault(_react);
 
-var _RouteUtils = require('./RouteUtils');
+var _RouteUtils = _dereq_('./RouteUtils');
 
-var _PatternUtils = require('./PatternUtils');
+var _PatternUtils = _dereq_('./PatternUtils');
 
-var _PropTypes = require('./PropTypes');
+var _PropTypes = _dereq_('./PropTypes');
 
 var _React$PropTypes = _react2['default'].PropTypes;
 var string = _React$PropTypes.string;
@@ -49641,9 +51880,9 @@ Redirect.propTypes = {
 
 exports['default'] = Redirect;
 module.exports = exports['default'];
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"./PatternUtils":313,"./PropTypes":314,"./RouteUtils":318,"_process":2,"invariant":330,"react":493}],316:[function(require,module,exports){
+},{"./PatternUtils":295,"./PropTypes":296,"./RouteUtils":300,"_process":2,"invariant":312,"react":475}],298:[function(_dereq_,module,exports){
 (function (process){
 'use strict';
 
@@ -49655,17 +51894,17 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons
 
 function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
 
-var _invariant = require('invariant');
+var _invariant = _dereq_('invariant');
 
 var _invariant2 = _interopRequireDefault(_invariant);
 
-var _react = require('react');
+var _react = _dereq_('react');
 
 var _react2 = _interopRequireDefault(_react);
 
-var _RouteUtils = require('./RouteUtils');
+var _RouteUtils = _dereq_('./RouteUtils');
 
-var _PropTypes = require('./PropTypes');
+var _PropTypes = _dereq_('./PropTypes');
 
 var _React$PropTypes = _react2['default'].PropTypes;
 var string = _React$PropTypes.string;
@@ -49712,16 +51951,16 @@ Route.propTypes = {
 
 exports['default'] = Route;
 module.exports = exports['default'];
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"./PropTypes":314,"./RouteUtils":318,"_process":2,"invariant":330,"react":493}],317:[function(require,module,exports){
+},{"./PropTypes":296,"./RouteUtils":300,"_process":2,"invariant":312,"react":475}],299:[function(_dereq_,module,exports){
 'use strict';
 
 exports.__esModule = true;
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
 
-var _react = require('react');
+var _react = _dereq_('react');
 
 var _react2 = _interopRequireDefault(_react);
 
@@ -49753,7 +51992,7 @@ var RouteContext = {
 
 exports['default'] = RouteContext;
 module.exports = exports['default'];
-},{"react":493}],318:[function(require,module,exports){
+},{"react":475}],300:[function(_dereq_,module,exports){
 (function (process){
 'use strict';
 
@@ -49768,11 +52007,11 @@ exports.createRoutes = createRoutes;
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
 
-var _react = require('react');
+var _react = _dereq_('react');
 
 var _react2 = _interopRequireDefault(_react);
 
-var _warning = require('warning');
+var _warning = _dereq_('warning');
 
 var _warning2 = _interopRequireDefault(_warning);
 
@@ -49869,9 +52108,9 @@ function createRoutes(routes) {
 
   return routes;
 }
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"_process":2,"react":493,"warning":331}],319:[function(require,module,exports){
+},{"_process":2,"react":475,"warning":313}],301:[function(_dereq_,module,exports){
 (function (process){
 'use strict';
 
@@ -49887,29 +52126,29 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons
 
 function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
 
-var _warning = require('warning');
+var _warning = _dereq_('warning');
 
 var _warning2 = _interopRequireDefault(_warning);
 
-var _react = require('react');
+var _react = _dereq_('react');
 
 var _react2 = _interopRequireDefault(_react);
 
-var _historyLibCreateHashHistory = require('history/lib/createHashHistory');
+var _historyLibCreateHashHistory = _dereq_('history/lib/createHashHistory');
 
 var _historyLibCreateHashHistory2 = _interopRequireDefault(_historyLibCreateHashHistory);
 
-var _RouteUtils = require('./RouteUtils');
+var _RouteUtils = _dereq_('./RouteUtils');
 
-var _RoutingContext = require('./RoutingContext');
+var _RoutingContext = _dereq_('./RoutingContext');
 
 var _RoutingContext2 = _interopRequireDefault(_RoutingContext);
 
-var _useRoutes = require('./useRoutes');
+var _useRoutes = _dereq_('./useRoutes');
 
 var _useRoutes2 = _interopRequireDefault(_useRoutes);
 
-var _PropTypes = require('./PropTypes');
+var _PropTypes = _dereq_('./PropTypes');
 
 var _React$PropTypes = _react2['default'].PropTypes;
 var func = _React$PropTypes.func;
@@ -50038,9 +52277,9 @@ Router.defaultProps = {
 
 exports['default'] = Router;
 module.exports = exports['default'];
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"./PropTypes":314,"./RouteUtils":318,"./RoutingContext":320,"./useRoutes":329,"_process":2,"history/lib/createHashHistory":134,"react":493,"warning":331}],320:[function(require,module,exports){
+},{"./PropTypes":296,"./RouteUtils":300,"./RoutingContext":302,"./useRoutes":311,"_process":2,"history/lib/createHashHistory":133,"react":475,"warning":313}],302:[function(_dereq_,module,exports){
 (function (process){
 'use strict';
 
@@ -50054,17 +52293,17 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons
 
 function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
 
-var _invariant = require('invariant');
+var _invariant = _dereq_('invariant');
 
 var _invariant2 = _interopRequireDefault(_invariant);
 
-var _react = require('react');
+var _react = _dereq_('react');
 
 var _react2 = _interopRequireDefault(_react);
 
-var _RouteUtils = require('./RouteUtils');
+var _RouteUtils = _dereq_('./RouteUtils');
 
-var _getRouteParams = require('./getRouteParams');
+var _getRouteParams = _dereq_('./getRouteParams');
 
 var _getRouteParams2 = _interopRequireDefault(_getRouteParams);
 
@@ -50182,16 +52421,16 @@ RoutingContext.childContextTypes = {
 
 exports['default'] = RoutingContext;
 module.exports = exports['default'];
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"./RouteUtils":318,"./getRouteParams":324,"_process":2,"invariant":330,"react":493}],321:[function(require,module,exports){
+},{"./RouteUtils":300,"./getRouteParams":306,"_process":2,"invariant":312,"react":475}],303:[function(_dereq_,module,exports){
 'use strict';
 
 exports.__esModule = true;
 exports.runEnterHooks = runEnterHooks;
 exports.runLeaveHooks = runLeaveHooks;
 
-var _AsyncUtils = require('./AsyncUtils');
+var _AsyncUtils = _dereq_('./AsyncUtils');
 
 function createEnterHook(hook, route) {
   return function (a, b, callback) {
@@ -50257,12 +52496,12 @@ function runLeaveHooks(routes) {
     if (routes[i].onLeave) routes[i].onLeave.call(routes[i]);
   }
 }
-},{"./AsyncUtils":306}],322:[function(require,module,exports){
+},{"./AsyncUtils":288}],304:[function(_dereq_,module,exports){
 'use strict';
 
 exports.__esModule = true;
 
-var _PatternUtils = require('./PatternUtils');
+var _PatternUtils = _dereq_('./PatternUtils');
 
 function routeParamsChanged(route, prevState, nextState) {
   if (!route.path) return false;
@@ -50314,12 +52553,12 @@ function computeChangedRoutes(prevState, nextState) {
 
 exports['default'] = computeChangedRoutes;
 module.exports = exports['default'];
-},{"./PatternUtils":313}],323:[function(require,module,exports){
+},{"./PatternUtils":295}],305:[function(_dereq_,module,exports){
 'use strict';
 
 exports.__esModule = true;
 
-var _AsyncUtils = require('./AsyncUtils');
+var _AsyncUtils = _dereq_('./AsyncUtils');
 
 function getComponentsForRoute(location, route, callback) {
   if (route.component || route.components) {
@@ -50348,12 +52587,12 @@ function getComponents(nextState, callback) {
 
 exports['default'] = getComponents;
 module.exports = exports['default'];
-},{"./AsyncUtils":306}],324:[function(require,module,exports){
+},{"./AsyncUtils":288}],306:[function(_dereq_,module,exports){
 'use strict';
 
 exports.__esModule = true;
 
-var _PatternUtils = require('./PatternUtils');
+var _PatternUtils = _dereq_('./PatternUtils');
 
 /**
  * Extracts an object of params the given route cares about from
@@ -50373,7 +52612,7 @@ function getRouteParams(route, params) {
 
 exports['default'] = getRouteParams;
 module.exports = exports['default'];
-},{"./PatternUtils":313}],325:[function(require,module,exports){
+},{"./PatternUtils":295}],307:[function(_dereq_,module,exports){
 /* components */
 'use strict';
 
@@ -50381,19 +52620,19 @@ exports.__esModule = true;
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
 
-var _Router2 = require('./Router');
+var _Router2 = _dereq_('./Router');
 
 var _Router3 = _interopRequireDefault(_Router2);
 
 exports.Router = _Router3['default'];
 
-var _Link2 = require('./Link');
+var _Link2 = _dereq_('./Link');
 
 var _Link3 = _interopRequireDefault(_Link2);
 
 exports.Link = _Link3['default'];
 
-var _IndexLink2 = require('./IndexLink');
+var _IndexLink2 = _dereq_('./IndexLink');
 
 var _IndexLink3 = _interopRequireDefault(_IndexLink2);
 
@@ -50401,25 +52640,25 @@ exports.IndexLink = _IndexLink3['default'];
 
 /* components (configuration) */
 
-var _IndexRedirect2 = require('./IndexRedirect');
+var _IndexRedirect2 = _dereq_('./IndexRedirect');
 
 var _IndexRedirect3 = _interopRequireDefault(_IndexRedirect2);
 
 exports.IndexRedirect = _IndexRedirect3['default'];
 
-var _IndexRoute2 = require('./IndexRoute');
+var _IndexRoute2 = _dereq_('./IndexRoute');
 
 var _IndexRoute3 = _interopRequireDefault(_IndexRoute2);
 
 exports.IndexRoute = _IndexRoute3['default'];
 
-var _Redirect2 = require('./Redirect');
+var _Redirect2 = _dereq_('./Redirect');
 
 var _Redirect3 = _interopRequireDefault(_Redirect2);
 
 exports.Redirect = _Redirect3['default'];
 
-var _Route2 = require('./Route');
+var _Route2 = _dereq_('./Route');
 
 var _Route3 = _interopRequireDefault(_Route2);
 
@@ -50427,19 +52666,19 @@ exports.Route = _Route3['default'];
 
 /* mixins */
 
-var _History2 = require('./History');
+var _History2 = _dereq_('./History');
 
 var _History3 = _interopRequireDefault(_History2);
 
 exports.History = _History3['default'];
 
-var _Lifecycle2 = require('./Lifecycle');
+var _Lifecycle2 = _dereq_('./Lifecycle');
 
 var _Lifecycle3 = _interopRequireDefault(_Lifecycle2);
 
 exports.Lifecycle = _Lifecycle3['default'];
 
-var _RouteContext2 = require('./RouteContext');
+var _RouteContext2 = _dereq_('./RouteContext');
 
 var _RouteContext3 = _interopRequireDefault(_RouteContext2);
 
@@ -50447,29 +52686,29 @@ exports.RouteContext = _RouteContext3['default'];
 
 /* utils */
 
-var _useRoutes2 = require('./useRoutes');
+var _useRoutes2 = _dereq_('./useRoutes');
 
 var _useRoutes3 = _interopRequireDefault(_useRoutes2);
 
 exports.useRoutes = _useRoutes3['default'];
 
-var _RouteUtils = require('./RouteUtils');
+var _RouteUtils = _dereq_('./RouteUtils');
 
 exports.createRoutes = _RouteUtils.createRoutes;
 
-var _RoutingContext2 = require('./RoutingContext');
+var _RoutingContext2 = _dereq_('./RoutingContext');
 
 var _RoutingContext3 = _interopRequireDefault(_RoutingContext2);
 
 exports.RoutingContext = _RoutingContext3['default'];
 
-var _PropTypes2 = require('./PropTypes');
+var _PropTypes2 = _dereq_('./PropTypes');
 
 var _PropTypes3 = _interopRequireDefault(_PropTypes2);
 
 exports.PropTypes = _PropTypes3['default'];
 
-var _match2 = require('./match');
+var _match2 = _dereq_('./match');
 
 var _match3 = _interopRequireDefault(_match2);
 
@@ -50478,12 +52717,12 @@ exports.match = _match3['default'];
 var _Router4 = _interopRequireDefault(_Router2);
 
 exports['default'] = _Router4['default'];
-},{"./History":307,"./IndexLink":308,"./IndexRedirect":309,"./IndexRoute":310,"./Lifecycle":311,"./Link":312,"./PropTypes":314,"./Redirect":315,"./Route":316,"./RouteContext":317,"./RouteUtils":318,"./Router":319,"./RoutingContext":320,"./match":327,"./useRoutes":329}],326:[function(require,module,exports){
+},{"./History":289,"./IndexLink":290,"./IndexRedirect":291,"./IndexRoute":292,"./Lifecycle":293,"./Link":294,"./PropTypes":296,"./Redirect":297,"./Route":298,"./RouteContext":299,"./RouteUtils":300,"./Router":301,"./RoutingContext":302,"./match":309,"./useRoutes":311}],308:[function(_dereq_,module,exports){
 'use strict';
 
 exports.__esModule = true;
 
-var _PatternUtils = require('./PatternUtils');
+var _PatternUtils = _dereq_('./PatternUtils');
 
 function deepEqual(a, b) {
   if (a == b) return true;
@@ -50602,7 +52841,7 @@ function isActive(pathname, query, indexOnly, location, routes, params) {
 
 exports['default'] = isActive;
 module.exports = exports['default'];
-},{"./PatternUtils":313}],327:[function(require,module,exports){
+},{"./PatternUtils":295}],309:[function(_dereq_,module,exports){
 (function (process){
 'use strict';
 
@@ -50612,21 +52851,21 @@ var _extends = Object.assign || function (target) { for (var i = 1; i < argument
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
 
-var _invariant = require('invariant');
+var _invariant = _dereq_('invariant');
 
 var _invariant2 = _interopRequireDefault(_invariant);
 
-var _historyLibCreateMemoryHistory = require('history/lib/createMemoryHistory');
+var _historyLibCreateMemoryHistory = _dereq_('history/lib/createMemoryHistory');
 
 var _historyLibCreateMemoryHistory2 = _interopRequireDefault(_historyLibCreateMemoryHistory);
 
-var _historyLibUseBasename = require('history/lib/useBasename');
+var _historyLibUseBasename = _dereq_('history/lib/useBasename');
 
 var _historyLibUseBasename2 = _interopRequireDefault(_historyLibUseBasename);
 
-var _RouteUtils = require('./RouteUtils');
+var _RouteUtils = _dereq_('./RouteUtils');
 
-var _useRoutes = require('./useRoutes');
+var _useRoutes = _dereq_('./useRoutes');
 
 var _useRoutes2 = _interopRequireDefault(_useRoutes);
 
@@ -50667,9 +52906,9 @@ function match(_ref, callback) {
 
 exports['default'] = match;
 module.exports = exports['default'];
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"./RouteUtils":318,"./useRoutes":329,"_process":2,"history/lib/createMemoryHistory":137,"history/lib/useBasename":142,"invariant":330}],328:[function(require,module,exports){
+},{"./RouteUtils":300,"./useRoutes":311,"_process":2,"history/lib/createMemoryHistory":136,"history/lib/useBasename":141,"invariant":312}],310:[function(_dereq_,module,exports){
 (function (process){
 'use strict';
 
@@ -50677,15 +52916,15 @@ exports.__esModule = true;
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
 
-var _warning = require('warning');
+var _warning = _dereq_('warning');
 
 var _warning2 = _interopRequireDefault(_warning);
 
-var _AsyncUtils = require('./AsyncUtils');
+var _AsyncUtils = _dereq_('./AsyncUtils');
 
-var _PatternUtils = require('./PatternUtils');
+var _PatternUtils = _dereq_('./PatternUtils');
 
-var _RouteUtils = require('./RouteUtils');
+var _RouteUtils = _dereq_('./RouteUtils');
 
 function getChildRoutes(route, location, callback) {
   if (route.childRoutes) {
@@ -50859,9 +53098,9 @@ function matchRoutes(routes, location, callback) {
 
 exports['default'] = matchRoutes;
 module.exports = exports['default'];
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"./AsyncUtils":306,"./PatternUtils":313,"./RouteUtils":318,"_process":2,"warning":331}],329:[function(require,module,exports){
+},{"./AsyncUtils":288,"./PatternUtils":295,"./RouteUtils":300,"_process":2,"warning":313}],311:[function(_dereq_,module,exports){
 (function (process){
 'use strict';
 
@@ -50873,31 +53112,31 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'd
 
 function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
 
-var _warning = require('warning');
+var _warning = _dereq_('warning');
 
 var _warning2 = _interopRequireDefault(_warning);
 
-var _historyLibActions = require('history/lib/Actions');
+var _historyLibActions = _dereq_('history/lib/Actions');
 
-var _historyLibUseQueries = require('history/lib/useQueries');
+var _historyLibUseQueries = _dereq_('history/lib/useQueries');
 
 var _historyLibUseQueries2 = _interopRequireDefault(_historyLibUseQueries);
 
-var _computeChangedRoutes2 = require('./computeChangedRoutes');
+var _computeChangedRoutes2 = _dereq_('./computeChangedRoutes');
 
 var _computeChangedRoutes3 = _interopRequireDefault(_computeChangedRoutes2);
 
-var _TransitionUtils = require('./TransitionUtils');
+var _TransitionUtils = _dereq_('./TransitionUtils');
 
-var _isActive2 = require('./isActive');
+var _isActive2 = _dereq_('./isActive');
 
 var _isActive3 = _interopRequireDefault(_isActive2);
 
-var _getComponents = require('./getComponents');
+var _getComponents = _dereq_('./getComponents');
 
 var _getComponents2 = _interopRequireDefault(_getComponents);
 
-var _matchRoutes = require('./matchRoutes');
+var _matchRoutes = _dereq_('./matchRoutes');
 
 var _matchRoutes2 = _interopRequireDefault(_matchRoutes);
 
@@ -51154,9 +53393,9 @@ function useRoutes(createHistory) {
 
 exports['default'] = useRoutes;
 module.exports = exports['default'];
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"./TransitionUtils":321,"./computeChangedRoutes":322,"./getComponents":323,"./isActive":326,"./matchRoutes":328,"_process":2,"history/lib/Actions":128,"history/lib/useQueries":143,"warning":331}],330:[function(require,module,exports){
+},{"./TransitionUtils":303,"./computeChangedRoutes":304,"./getComponents":305,"./isActive":308,"./matchRoutes":310,"_process":2,"history/lib/Actions":127,"history/lib/useQueries":142,"warning":313}],312:[function(_dereq_,module,exports){
 (function (process){
 /**
  * Copyright 2013-2015, Facebook, Inc.
@@ -51210,9 +53449,9 @@ var invariant = function(condition, format, a, b, c, d, e, f) {
 
 module.exports = invariant;
 
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"_process":2}],331:[function(require,module,exports){
+},{"_process":2}],313:[function(_dereq_,module,exports){
 (function (process){
 /**
  * Copyright 2014-2015, Facebook, Inc.
@@ -51275,9 +53514,9 @@ if (process.env.NODE_ENV !== 'production') {
 
 module.exports = warning;
 
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"_process":2}],332:[function(require,module,exports){
+},{"_process":2}],314:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -51292,10 +53531,10 @@ module.exports = warning;
 
 'use strict';
 
-var ReactMount = require('./ReactMount');
+var ReactMount = _dereq_('./ReactMount');
 
-var findDOMNode = require('./findDOMNode');
-var focusNode = require('fbjs/lib/focusNode');
+var findDOMNode = _dereq_('./findDOMNode');
+var focusNode = _dereq_('fbjs/lib/focusNode');
 
 var Mixin = {
   componentDidMount: function () {
@@ -51314,7 +53553,7 @@ var AutoFocusUtils = {
 };
 
 module.exports = AutoFocusUtils;
-},{"./ReactMount":398,"./findDOMNode":444,"fbjs/lib/focusNode":475}],333:[function(require,module,exports){
+},{"./ReactMount":380,"./findDOMNode":426,"fbjs/lib/focusNode":457}],315:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015 Facebook, Inc.
  * All rights reserved.
@@ -51329,14 +53568,14 @@ module.exports = AutoFocusUtils;
 
 'use strict';
 
-var EventConstants = require('./EventConstants');
-var EventPropagators = require('./EventPropagators');
-var ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');
-var FallbackCompositionState = require('./FallbackCompositionState');
-var SyntheticCompositionEvent = require('./SyntheticCompositionEvent');
-var SyntheticInputEvent = require('./SyntheticInputEvent');
+var EventConstants = _dereq_('./EventConstants');
+var EventPropagators = _dereq_('./EventPropagators');
+var ExecutionEnvironment = _dereq_('fbjs/lib/ExecutionEnvironment');
+var FallbackCompositionState = _dereq_('./FallbackCompositionState');
+var SyntheticCompositionEvent = _dereq_('./SyntheticCompositionEvent');
+var SyntheticInputEvent = _dereq_('./SyntheticInputEvent');
 
-var keyOf = require('fbjs/lib/keyOf');
+var keyOf = _dereq_('fbjs/lib/keyOf');
 
 var END_KEYCODES = [9, 13, 27, 32]; // Tab, Return, Esc, Space
 var START_KEYCODE = 229;
@@ -51720,7 +53959,7 @@ var BeforeInputEventPlugin = {
 };
 
 module.exports = BeforeInputEventPlugin;
-},{"./EventConstants":345,"./EventPropagators":349,"./FallbackCompositionState":350,"./SyntheticCompositionEvent":426,"./SyntheticInputEvent":430,"fbjs/lib/ExecutionEnvironment":467,"fbjs/lib/keyOf":485}],334:[function(require,module,exports){
+},{"./EventConstants":327,"./EventPropagators":331,"./FallbackCompositionState":332,"./SyntheticCompositionEvent":408,"./SyntheticInputEvent":412,"fbjs/lib/ExecutionEnvironment":449,"fbjs/lib/keyOf":467}],316:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -51860,7 +54099,7 @@ var CSSProperty = {
 };
 
 module.exports = CSSProperty;
-},{}],335:[function(require,module,exports){
+},{}],317:[function(_dereq_,module,exports){
 (function (process){
 /**
  * Copyright 2013-2015, Facebook, Inc.
@@ -51876,15 +54115,15 @@ module.exports = CSSProperty;
 
 'use strict';
 
-var CSSProperty = require('./CSSProperty');
-var ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');
-var ReactPerf = require('./ReactPerf');
+var CSSProperty = _dereq_('./CSSProperty');
+var ExecutionEnvironment = _dereq_('fbjs/lib/ExecutionEnvironment');
+var ReactPerf = _dereq_('./ReactPerf');
 
-var camelizeStyleName = require('fbjs/lib/camelizeStyleName');
-var dangerousStyleValue = require('./dangerousStyleValue');
-var hyphenateStyleName = require('fbjs/lib/hyphenateStyleName');
-var memoizeStringOnly = require('fbjs/lib/memoizeStringOnly');
-var warning = require('fbjs/lib/warning');
+var camelizeStyleName = _dereq_('fbjs/lib/camelizeStyleName');
+var dangerousStyleValue = _dereq_('./dangerousStyleValue');
+var hyphenateStyleName = _dereq_('fbjs/lib/hyphenateStyleName');
+var memoizeStringOnly = _dereq_('fbjs/lib/memoizeStringOnly');
+var warning = _dereq_('fbjs/lib/warning');
 
 var processStyleName = memoizeStringOnly(function (styleName) {
   return hyphenateStyleName(styleName);
@@ -52037,9 +54276,9 @@ ReactPerf.measureMethods(CSSPropertyOperations, 'CSSPropertyOperations', {
 });
 
 module.exports = CSSPropertyOperations;
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"./CSSProperty":334,"./ReactPerf":404,"./dangerousStyleValue":441,"_process":2,"fbjs/lib/ExecutionEnvironment":467,"fbjs/lib/camelizeStyleName":469,"fbjs/lib/hyphenateStyleName":480,"fbjs/lib/memoizeStringOnly":487,"fbjs/lib/warning":492}],336:[function(require,module,exports){
+},{"./CSSProperty":316,"./ReactPerf":386,"./dangerousStyleValue":423,"_process":2,"fbjs/lib/ExecutionEnvironment":449,"fbjs/lib/camelizeStyleName":451,"fbjs/lib/hyphenateStyleName":462,"fbjs/lib/memoizeStringOnly":469,"fbjs/lib/warning":474}],318:[function(_dereq_,module,exports){
 (function (process){
 /**
  * Copyright 2013-2015, Facebook, Inc.
@@ -52054,10 +54293,10 @@ module.exports = CSSPropertyOperations;
 
 'use strict';
 
-var PooledClass = require('./PooledClass');
+var PooledClass = _dereq_('./PooledClass');
 
-var assign = require('./Object.assign');
-var invariant = require('fbjs/lib/invariant');
+var assign = _dereq_('./Object.assign');
+var invariant = _dereq_('fbjs/lib/invariant');
 
 /**
  * A specialized pseudo-event module to help keep track of components waiting to
@@ -52134,9 +54373,9 @@ assign(CallbackQueue.prototype, {
 PooledClass.addPoolingTo(CallbackQueue);
 
 module.exports = CallbackQueue;
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"./Object.assign":353,"./PooledClass":354,"_process":2,"fbjs/lib/invariant":481}],337:[function(require,module,exports){
+},{"./Object.assign":335,"./PooledClass":336,"_process":2,"fbjs/lib/invariant":463}],319:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -52150,17 +54389,17 @@ module.exports = CallbackQueue;
 
 'use strict';
 
-var EventConstants = require('./EventConstants');
-var EventPluginHub = require('./EventPluginHub');
-var EventPropagators = require('./EventPropagators');
-var ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');
-var ReactUpdates = require('./ReactUpdates');
-var SyntheticEvent = require('./SyntheticEvent');
+var EventConstants = _dereq_('./EventConstants');
+var EventPluginHub = _dereq_('./EventPluginHub');
+var EventPropagators = _dereq_('./EventPropagators');
+var ExecutionEnvironment = _dereq_('fbjs/lib/ExecutionEnvironment');
+var ReactUpdates = _dereq_('./ReactUpdates');
+var SyntheticEvent = _dereq_('./SyntheticEvent');
 
-var getEventTarget = require('./getEventTarget');
-var isEventSupported = require('./isEventSupported');
-var isTextInputElement = require('./isTextInputElement');
-var keyOf = require('fbjs/lib/keyOf');
+var getEventTarget = _dereq_('./getEventTarget');
+var isEventSupported = _dereq_('./isEventSupported');
+var isTextInputElement = _dereq_('./isTextInputElement');
+var keyOf = _dereq_('fbjs/lib/keyOf');
 
 var topLevelTypes = EventConstants.topLevelTypes;
 
@@ -52458,7 +54697,7 @@ var ChangeEventPlugin = {
 };
 
 module.exports = ChangeEventPlugin;
-},{"./EventConstants":345,"./EventPluginHub":346,"./EventPropagators":349,"./ReactUpdates":419,"./SyntheticEvent":428,"./getEventTarget":450,"./isEventSupported":455,"./isTextInputElement":456,"fbjs/lib/ExecutionEnvironment":467,"fbjs/lib/keyOf":485}],338:[function(require,module,exports){
+},{"./EventConstants":327,"./EventPluginHub":328,"./EventPropagators":331,"./ReactUpdates":401,"./SyntheticEvent":410,"./getEventTarget":432,"./isEventSupported":437,"./isTextInputElement":438,"fbjs/lib/ExecutionEnvironment":449,"fbjs/lib/keyOf":467}],320:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -52482,7 +54721,7 @@ var ClientReactRootIndex = {
 };
 
 module.exports = ClientReactRootIndex;
-},{}],339:[function(require,module,exports){
+},{}],321:[function(_dereq_,module,exports){
 (function (process){
 /**
  * Copyright 2013-2015, Facebook, Inc.
@@ -52498,13 +54737,13 @@ module.exports = ClientReactRootIndex;
 
 'use strict';
 
-var Danger = require('./Danger');
-var ReactMultiChildUpdateTypes = require('./ReactMultiChildUpdateTypes');
-var ReactPerf = require('./ReactPerf');
+var Danger = _dereq_('./Danger');
+var ReactMultiChildUpdateTypes = _dereq_('./ReactMultiChildUpdateTypes');
+var ReactPerf = _dereq_('./ReactPerf');
 
-var setInnerHTML = require('./setInnerHTML');
-var setTextContent = require('./setTextContent');
-var invariant = require('fbjs/lib/invariant');
+var setInnerHTML = _dereq_('./setInnerHTML');
+var setTextContent = _dereq_('./setTextContent');
+var invariant = _dereq_('fbjs/lib/invariant');
 
 /**
  * Inserts `childNode` as a child of `parentNode` at the `index`.
@@ -52613,9 +54852,9 @@ ReactPerf.measureMethods(DOMChildrenOperations, 'DOMChildrenOperations', {
 });
 
 module.exports = DOMChildrenOperations;
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"./Danger":342,"./ReactMultiChildUpdateTypes":400,"./ReactPerf":404,"./setInnerHTML":460,"./setTextContent":461,"_process":2,"fbjs/lib/invariant":481}],340:[function(require,module,exports){
+},{"./Danger":324,"./ReactMultiChildUpdateTypes":382,"./ReactPerf":386,"./setInnerHTML":442,"./setTextContent":443,"_process":2,"fbjs/lib/invariant":463}],322:[function(_dereq_,module,exports){
 (function (process){
 /**
  * Copyright 2013-2015, Facebook, Inc.
@@ -52631,7 +54870,7 @@ module.exports = DOMChildrenOperations;
 
 'use strict';
 
-var invariant = require('fbjs/lib/invariant');
+var invariant = _dereq_('fbjs/lib/invariant');
 
 function checkMask(value, bitmask) {
   return (value & bitmask) === bitmask;
@@ -52851,9 +55090,9 @@ var DOMProperty = {
 };
 
 module.exports = DOMProperty;
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"_process":2,"fbjs/lib/invariant":481}],341:[function(require,module,exports){
+},{"_process":2,"fbjs/lib/invariant":463}],323:[function(_dereq_,module,exports){
 (function (process){
 /**
  * Copyright 2013-2015, Facebook, Inc.
@@ -52869,11 +55108,11 @@ module.exports = DOMProperty;
 
 'use strict';
 
-var DOMProperty = require('./DOMProperty');
-var ReactPerf = require('./ReactPerf');
+var DOMProperty = _dereq_('./DOMProperty');
+var ReactPerf = _dereq_('./ReactPerf');
 
-var quoteAttributeValueForBrowser = require('./quoteAttributeValueForBrowser');
-var warning = require('fbjs/lib/warning');
+var quoteAttributeValueForBrowser = _dereq_('./quoteAttributeValueForBrowser');
+var warning = _dereq_('fbjs/lib/warning');
 
 // Simplified subset
 var VALID_ATTRIBUTE_NAME_REGEX = /^[a-zA-Z_][\w\.\-]*$/;
@@ -53080,9 +55319,9 @@ ReactPerf.measureMethods(DOMPropertyOperations, 'DOMPropertyOperations', {
 });
 
 module.exports = DOMPropertyOperations;
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"./DOMProperty":340,"./ReactPerf":404,"./quoteAttributeValueForBrowser":458,"_process":2,"fbjs/lib/warning":492}],342:[function(require,module,exports){
+},{"./DOMProperty":322,"./ReactPerf":386,"./quoteAttributeValueForBrowser":440,"_process":2,"fbjs/lib/warning":474}],324:[function(_dereq_,module,exports){
 (function (process){
 /**
  * Copyright 2013-2015, Facebook, Inc.
@@ -53098,12 +55337,12 @@ module.exports = DOMPropertyOperations;
 
 'use strict';
 
-var ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');
+var ExecutionEnvironment = _dereq_('fbjs/lib/ExecutionEnvironment');
 
-var createNodesFromMarkup = require('fbjs/lib/createNodesFromMarkup');
-var emptyFunction = require('fbjs/lib/emptyFunction');
-var getMarkupWrap = require('fbjs/lib/getMarkupWrap');
-var invariant = require('fbjs/lib/invariant');
+var createNodesFromMarkup = _dereq_('fbjs/lib/createNodesFromMarkup');
+var emptyFunction = _dereq_('fbjs/lib/emptyFunction');
+var getMarkupWrap = _dereq_('fbjs/lib/getMarkupWrap');
+var invariant = _dereq_('fbjs/lib/invariant');
 
 var OPEN_TAG_NAME_EXP = /^(<[^ \/>]+)/;
 var RESULT_INDEX_ATTR = 'data-danger-index';
@@ -53229,9 +55468,9 @@ var Danger = {
 };
 
 module.exports = Danger;
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"_process":2,"fbjs/lib/ExecutionEnvironment":467,"fbjs/lib/createNodesFromMarkup":472,"fbjs/lib/emptyFunction":473,"fbjs/lib/getMarkupWrap":477,"fbjs/lib/invariant":481}],343:[function(require,module,exports){
+},{"_process":2,"fbjs/lib/ExecutionEnvironment":449,"fbjs/lib/createNodesFromMarkup":454,"fbjs/lib/emptyFunction":455,"fbjs/lib/getMarkupWrap":459,"fbjs/lib/invariant":463}],325:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -53245,7 +55484,7 @@ module.exports = Danger;
 
 'use strict';
 
-var keyOf = require('fbjs/lib/keyOf');
+var keyOf = _dereq_('fbjs/lib/keyOf');
 
 /**
  * Module that is injectable into `EventPluginHub`, that specifies a
@@ -53259,7 +55498,7 @@ var keyOf = require('fbjs/lib/keyOf');
 var DefaultEventPluginOrder = [keyOf({ ResponderEventPlugin: null }), keyOf({ SimpleEventPlugin: null }), keyOf({ TapEventPlugin: null }), keyOf({ EnterLeaveEventPlugin: null }), keyOf({ ChangeEventPlugin: null }), keyOf({ SelectEventPlugin: null }), keyOf({ BeforeInputEventPlugin: null })];
 
 module.exports = DefaultEventPluginOrder;
-},{"fbjs/lib/keyOf":485}],344:[function(require,module,exports){
+},{"fbjs/lib/keyOf":467}],326:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -53274,12 +55513,12 @@ module.exports = DefaultEventPluginOrder;
 
 'use strict';
 
-var EventConstants = require('./EventConstants');
-var EventPropagators = require('./EventPropagators');
-var SyntheticMouseEvent = require('./SyntheticMouseEvent');
+var EventConstants = _dereq_('./EventConstants');
+var EventPropagators = _dereq_('./EventPropagators');
+var SyntheticMouseEvent = _dereq_('./SyntheticMouseEvent');
 
-var ReactMount = require('./ReactMount');
-var keyOf = require('fbjs/lib/keyOf');
+var ReactMount = _dereq_('./ReactMount');
+var keyOf = _dereq_('fbjs/lib/keyOf');
 
 var topLevelTypes = EventConstants.topLevelTypes;
 var getFirstReactDOM = ReactMount.getFirstReactDOM;
@@ -53384,7 +55623,7 @@ var EnterLeaveEventPlugin = {
 };
 
 module.exports = EnterLeaveEventPlugin;
-},{"./EventConstants":345,"./EventPropagators":349,"./ReactMount":398,"./SyntheticMouseEvent":432,"fbjs/lib/keyOf":485}],345:[function(require,module,exports){
+},{"./EventConstants":327,"./EventPropagators":331,"./ReactMount":380,"./SyntheticMouseEvent":414,"fbjs/lib/keyOf":467}],327:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -53398,7 +55637,7 @@ module.exports = EnterLeaveEventPlugin;
 
 'use strict';
 
-var keyMirror = require('fbjs/lib/keyMirror');
+var keyMirror = _dereq_('fbjs/lib/keyMirror');
 
 var PropagationPhases = keyMirror({ bubbled: null, captured: null });
 
@@ -53477,7 +55716,7 @@ var EventConstants = {
 };
 
 module.exports = EventConstants;
-},{"fbjs/lib/keyMirror":484}],346:[function(require,module,exports){
+},{"fbjs/lib/keyMirror":466}],328:[function(_dereq_,module,exports){
 (function (process){
 /**
  * Copyright 2013-2015, Facebook, Inc.
@@ -53492,14 +55731,14 @@ module.exports = EventConstants;
 
 'use strict';
 
-var EventPluginRegistry = require('./EventPluginRegistry');
-var EventPluginUtils = require('./EventPluginUtils');
-var ReactErrorUtils = require('./ReactErrorUtils');
+var EventPluginRegistry = _dereq_('./EventPluginRegistry');
+var EventPluginUtils = _dereq_('./EventPluginUtils');
+var ReactErrorUtils = _dereq_('./ReactErrorUtils');
 
-var accumulateInto = require('./accumulateInto');
-var forEachAccumulated = require('./forEachAccumulated');
-var invariant = require('fbjs/lib/invariant');
-var warning = require('fbjs/lib/warning');
+var accumulateInto = _dereq_('./accumulateInto');
+var forEachAccumulated = _dereq_('./forEachAccumulated');
+var invariant = _dereq_('fbjs/lib/invariant');
+var warning = _dereq_('fbjs/lib/warning');
 
 /**
  * Internal store for event listeners
@@ -53758,9 +55997,9 @@ var EventPluginHub = {
 };
 
 module.exports = EventPluginHub;
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"./EventPluginRegistry":347,"./EventPluginUtils":348,"./ReactErrorUtils":389,"./accumulateInto":438,"./forEachAccumulated":446,"_process":2,"fbjs/lib/invariant":481,"fbjs/lib/warning":492}],347:[function(require,module,exports){
+},{"./EventPluginRegistry":329,"./EventPluginUtils":330,"./ReactErrorUtils":371,"./accumulateInto":420,"./forEachAccumulated":428,"_process":2,"fbjs/lib/invariant":463,"fbjs/lib/warning":474}],329:[function(_dereq_,module,exports){
 (function (process){
 /**
  * Copyright 2013-2015, Facebook, Inc.
@@ -53776,7 +56015,7 @@ module.exports = EventPluginHub;
 
 'use strict';
 
-var invariant = require('fbjs/lib/invariant');
+var invariant = _dereq_('fbjs/lib/invariant');
 
 /**
  * Injectable ordering of event plugins.
@@ -53982,9 +56221,9 @@ var EventPluginRegistry = {
 };
 
 module.exports = EventPluginRegistry;
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"_process":2,"fbjs/lib/invariant":481}],348:[function(require,module,exports){
+},{"_process":2,"fbjs/lib/invariant":463}],330:[function(_dereq_,module,exports){
 (function (process){
 /**
  * Copyright 2013-2015, Facebook, Inc.
@@ -53999,11 +56238,11 @@ module.exports = EventPluginRegistry;
 
 'use strict';
 
-var EventConstants = require('./EventConstants');
-var ReactErrorUtils = require('./ReactErrorUtils');
+var EventConstants = _dereq_('./EventConstants');
+var ReactErrorUtils = _dereq_('./ReactErrorUtils');
 
-var invariant = require('fbjs/lib/invariant');
-var warning = require('fbjs/lib/warning');
+var invariant = _dereq_('fbjs/lib/invariant');
+var warning = _dereq_('fbjs/lib/warning');
 
 /**
  * Injected dependencies:
@@ -54188,9 +56427,9 @@ var EventPluginUtils = {
 };
 
 module.exports = EventPluginUtils;
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"./EventConstants":345,"./ReactErrorUtils":389,"_process":2,"fbjs/lib/invariant":481,"fbjs/lib/warning":492}],349:[function(require,module,exports){
+},{"./EventConstants":327,"./ReactErrorUtils":371,"_process":2,"fbjs/lib/invariant":463,"fbjs/lib/warning":474}],331:[function(_dereq_,module,exports){
 (function (process){
 /**
  * Copyright 2013-2015, Facebook, Inc.
@@ -54205,13 +56444,13 @@ module.exports = EventPluginUtils;
 
 'use strict';
 
-var EventConstants = require('./EventConstants');
-var EventPluginHub = require('./EventPluginHub');
+var EventConstants = _dereq_('./EventConstants');
+var EventPluginHub = _dereq_('./EventPluginHub');
 
-var warning = require('fbjs/lib/warning');
+var warning = _dereq_('fbjs/lib/warning');
 
-var accumulateInto = require('./accumulateInto');
-var forEachAccumulated = require('./forEachAccumulated');
+var accumulateInto = _dereq_('./accumulateInto');
+var forEachAccumulated = _dereq_('./forEachAccumulated');
 
 var PropagationPhases = EventConstants.PropagationPhases;
 var getListener = EventPluginHub.getListener;
@@ -54327,9 +56566,9 @@ var EventPropagators = {
 };
 
 module.exports = EventPropagators;
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"./EventConstants":345,"./EventPluginHub":346,"./accumulateInto":438,"./forEachAccumulated":446,"_process":2,"fbjs/lib/warning":492}],350:[function(require,module,exports){
+},{"./EventConstants":327,"./EventPluginHub":328,"./accumulateInto":420,"./forEachAccumulated":428,"_process":2,"fbjs/lib/warning":474}],332:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -54344,10 +56583,10 @@ module.exports = EventPropagators;
 
 'use strict';
 
-var PooledClass = require('./PooledClass');
+var PooledClass = _dereq_('./PooledClass');
 
-var assign = require('./Object.assign');
-var getTextContentAccessor = require('./getTextContentAccessor');
+var assign = _dereq_('./Object.assign');
+var getTextContentAccessor = _dereq_('./getTextContentAccessor');
 
 /**
  * This helper class stores information about text content of a target node,
@@ -54425,7 +56664,7 @@ assign(FallbackCompositionState.prototype, {
 PooledClass.addPoolingTo(FallbackCompositionState);
 
 module.exports = FallbackCompositionState;
-},{"./Object.assign":353,"./PooledClass":354,"./getTextContentAccessor":453}],351:[function(require,module,exports){
+},{"./Object.assign":335,"./PooledClass":336,"./getTextContentAccessor":435}],333:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -54439,8 +56678,8 @@ module.exports = FallbackCompositionState;
 
 'use strict';
 
-var DOMProperty = require('./DOMProperty');
-var ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');
+var DOMProperty = _dereq_('./DOMProperty');
+var ExecutionEnvironment = _dereq_('fbjs/lib/ExecutionEnvironment');
 
 var MUST_USE_ATTRIBUTE = DOMProperty.injection.MUST_USE_ATTRIBUTE;
 var MUST_USE_PROPERTY = DOMProperty.injection.MUST_USE_PROPERTY;
@@ -54656,7 +56895,7 @@ var HTMLDOMPropertyConfig = {
 };
 
 module.exports = HTMLDOMPropertyConfig;
-},{"./DOMProperty":340,"fbjs/lib/ExecutionEnvironment":467}],352:[function(require,module,exports){
+},{"./DOMProperty":322,"fbjs/lib/ExecutionEnvironment":449}],334:[function(_dereq_,module,exports){
 (function (process){
 /**
  * Copyright 2013-2015, Facebook, Inc.
@@ -54672,11 +56911,11 @@ module.exports = HTMLDOMPropertyConfig;
 
 'use strict';
 
-var ReactPropTypes = require('./ReactPropTypes');
-var ReactPropTypeLocations = require('./ReactPropTypeLocations');
+var ReactPropTypes = _dereq_('./ReactPropTypes');
+var ReactPropTypeLocations = _dereq_('./ReactPropTypeLocations');
 
-var invariant = require('fbjs/lib/invariant');
-var warning = require('fbjs/lib/warning');
+var invariant = _dereq_('fbjs/lib/invariant');
+var warning = _dereq_('fbjs/lib/warning');
 
 var hasReadOnlyValue = {
   'button': true,
@@ -54792,9 +57031,9 @@ var LinkedValueUtils = {
 };
 
 module.exports = LinkedValueUtils;
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"./ReactPropTypeLocations":406,"./ReactPropTypes":407,"_process":2,"fbjs/lib/invariant":481,"fbjs/lib/warning":492}],353:[function(require,module,exports){
+},{"./ReactPropTypeLocations":388,"./ReactPropTypes":389,"_process":2,"fbjs/lib/invariant":463,"fbjs/lib/warning":474}],335:[function(_dereq_,module,exports){
 /**
  * Copyright 2014-2015, Facebook, Inc.
  * All rights reserved.
@@ -54842,7 +57081,7 @@ function assign(target, sources) {
 }
 
 module.exports = assign;
-},{}],354:[function(require,module,exports){
+},{}],336:[function(_dereq_,module,exports){
 (function (process){
 /**
  * Copyright 2013-2015, Facebook, Inc.
@@ -54857,7 +57096,7 @@ module.exports = assign;
 
 'use strict';
 
-var invariant = require('fbjs/lib/invariant');
+var invariant = _dereq_('fbjs/lib/invariant');
 
 /**
  * Static poolers. Several custom versions for each potential number of
@@ -54963,9 +57202,9 @@ var PooledClass = {
 };
 
 module.exports = PooledClass;
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"_process":2,"fbjs/lib/invariant":481}],355:[function(require,module,exports){
+},{"_process":2,"fbjs/lib/invariant":463}],337:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -54979,12 +57218,12 @@ module.exports = PooledClass;
 
 'use strict';
 
-var ReactDOM = require('./ReactDOM');
-var ReactDOMServer = require('./ReactDOMServer');
-var ReactIsomorphic = require('./ReactIsomorphic');
+var ReactDOM = _dereq_('./ReactDOM');
+var ReactDOMServer = _dereq_('./ReactDOMServer');
+var ReactIsomorphic = _dereq_('./ReactIsomorphic');
 
-var assign = require('./Object.assign');
-var deprecated = require('./deprecated');
+var assign = _dereq_('./Object.assign');
+var deprecated = _dereq_('./deprecated');
 
 // `version` will be added here by ReactIsomorphic.
 var React = {};
@@ -55006,7 +57245,7 @@ React.__SECRET_DOM_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = ReactDOM;
 React.__SECRET_DOM_SERVER_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = ReactDOMServer;
 
 module.exports = React;
-},{"./Object.assign":353,"./ReactDOM":368,"./ReactDOMServer":378,"./ReactIsomorphic":396,"./deprecated":442}],356:[function(require,module,exports){
+},{"./Object.assign":335,"./ReactDOM":350,"./ReactDOMServer":360,"./ReactIsomorphic":378,"./deprecated":424}],338:[function(_dereq_,module,exports){
 (function (process){
 /**
  * Copyright 2013-2015, Facebook, Inc.
@@ -55021,10 +57260,10 @@ module.exports = React;
 
 'use strict';
 
-var ReactInstanceMap = require('./ReactInstanceMap');
+var ReactInstanceMap = _dereq_('./ReactInstanceMap');
 
-var findDOMNode = require('./findDOMNode');
-var warning = require('fbjs/lib/warning');
+var findDOMNode = _dereq_('./findDOMNode');
+var warning = _dereq_('fbjs/lib/warning');
 
 var didWarnKey = '_getDOMNodeDidWarn';
 
@@ -55044,9 +57283,9 @@ var ReactBrowserComponentMixin = {
 };
 
 module.exports = ReactBrowserComponentMixin;
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"./ReactInstanceMap":395,"./findDOMNode":444,"_process":2,"fbjs/lib/warning":492}],357:[function(require,module,exports){
+},{"./ReactInstanceMap":377,"./findDOMNode":426,"_process":2,"fbjs/lib/warning":474}],339:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -55061,15 +57300,15 @@ module.exports = ReactBrowserComponentMixin;
 
 'use strict';
 
-var EventConstants = require('./EventConstants');
-var EventPluginHub = require('./EventPluginHub');
-var EventPluginRegistry = require('./EventPluginRegistry');
-var ReactEventEmitterMixin = require('./ReactEventEmitterMixin');
-var ReactPerf = require('./ReactPerf');
-var ViewportMetrics = require('./ViewportMetrics');
+var EventConstants = _dereq_('./EventConstants');
+var EventPluginHub = _dereq_('./EventPluginHub');
+var EventPluginRegistry = _dereq_('./EventPluginRegistry');
+var ReactEventEmitterMixin = _dereq_('./ReactEventEmitterMixin');
+var ReactPerf = _dereq_('./ReactPerf');
+var ViewportMetrics = _dereq_('./ViewportMetrics');
 
-var assign = require('./Object.assign');
-var isEventSupported = require('./isEventSupported');
+var assign = _dereq_('./Object.assign');
+var isEventSupported = _dereq_('./isEventSupported');
 
 /**
  * Summary of `ReactBrowserEventEmitter` event handling:
@@ -55371,7 +57610,7 @@ ReactPerf.measureMethods(ReactBrowserEventEmitter, 'ReactBrowserEventEmitter', {
 });
 
 module.exports = ReactBrowserEventEmitter;
-},{"./EventConstants":345,"./EventPluginHub":346,"./EventPluginRegistry":347,"./Object.assign":353,"./ReactEventEmitterMixin":390,"./ReactPerf":404,"./ViewportMetrics":437,"./isEventSupported":455}],358:[function(require,module,exports){
+},{"./EventConstants":327,"./EventPluginHub":328,"./EventPluginRegistry":329,"./Object.assign":335,"./ReactEventEmitterMixin":372,"./ReactPerf":386,"./ViewportMetrics":419,"./isEventSupported":437}],340:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -55386,12 +57625,12 @@ module.exports = ReactBrowserEventEmitter;
 
 'use strict';
 
-var React = require('./React');
+var React = _dereq_('./React');
 
-var assign = require('./Object.assign');
+var assign = _dereq_('./Object.assign');
 
-var ReactTransitionGroup = require('./ReactTransitionGroup');
-var ReactCSSTransitionGroupChild = require('./ReactCSSTransitionGroupChild');
+var ReactTransitionGroup = _dereq_('./ReactTransitionGroup');
+var ReactCSSTransitionGroupChild = _dereq_('./ReactCSSTransitionGroupChild');
 
 function createTransitionTimeoutPropValidator(transitionType) {
   var timeoutPropName = 'transition' + transitionType + 'Timeout';
@@ -55455,7 +57694,7 @@ var ReactCSSTransitionGroup = React.createClass({
 });
 
 module.exports = ReactCSSTransitionGroup;
-},{"./Object.assign":353,"./React":355,"./ReactCSSTransitionGroupChild":359,"./ReactTransitionGroup":417}],359:[function(require,module,exports){
+},{"./Object.assign":335,"./React":337,"./ReactCSSTransitionGroupChild":341,"./ReactTransitionGroup":399}],341:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -55470,13 +57709,13 @@ module.exports = ReactCSSTransitionGroup;
 
 'use strict';
 
-var React = require('./React');
-var ReactDOM = require('./ReactDOM');
+var React = _dereq_('./React');
+var ReactDOM = _dereq_('./ReactDOM');
 
-var CSSCore = require('fbjs/lib/CSSCore');
-var ReactTransitionEvents = require('./ReactTransitionEvents');
+var CSSCore = _dereq_('fbjs/lib/CSSCore');
+var ReactTransitionEvents = _dereq_('./ReactTransitionEvents');
 
-var onlyChild = require('./onlyChild');
+var onlyChild = _dereq_('./onlyChild');
 
 // We don't remove the element from the DOM until we receive an animationend or
 // transitionend event. If the user screws up and forgets to add an animation
@@ -55621,7 +57860,7 @@ var ReactCSSTransitionGroupChild = React.createClass({
 });
 
 module.exports = ReactCSSTransitionGroupChild;
-},{"./React":355,"./ReactDOM":368,"./ReactTransitionEvents":416,"./onlyChild":457,"fbjs/lib/CSSCore":465}],360:[function(require,module,exports){
+},{"./React":337,"./ReactDOM":350,"./ReactTransitionEvents":398,"./onlyChild":439,"fbjs/lib/CSSCore":447}],342:[function(_dereq_,module,exports){
 (function (process){
 /**
  * Copyright 2014-2015, Facebook, Inc.
@@ -55637,12 +57876,12 @@ module.exports = ReactCSSTransitionGroupChild;
 
 'use strict';
 
-var ReactReconciler = require('./ReactReconciler');
+var ReactReconciler = _dereq_('./ReactReconciler');
 
-var instantiateReactComponent = require('./instantiateReactComponent');
-var shouldUpdateReactComponent = require('./shouldUpdateReactComponent');
-var traverseAllChildren = require('./traverseAllChildren');
-var warning = require('fbjs/lib/warning');
+var instantiateReactComponent = _dereq_('./instantiateReactComponent');
+var shouldUpdateReactComponent = _dereq_('./shouldUpdateReactComponent');
+var traverseAllChildren = _dereq_('./traverseAllChildren');
+var warning = _dereq_('fbjs/lib/warning');
 
 function instantiateChild(childInstances, child, name) {
   // We found a component instance.
@@ -55745,9 +57984,9 @@ var ReactChildReconciler = {
 };
 
 module.exports = ReactChildReconciler;
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"./ReactReconciler":409,"./instantiateReactComponent":454,"./shouldUpdateReactComponent":462,"./traverseAllChildren":463,"_process":2,"fbjs/lib/warning":492}],361:[function(require,module,exports){
+},{"./ReactReconciler":391,"./instantiateReactComponent":436,"./shouldUpdateReactComponent":444,"./traverseAllChildren":445,"_process":2,"fbjs/lib/warning":474}],343:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -55761,11 +58000,11 @@ module.exports = ReactChildReconciler;
 
 'use strict';
 
-var PooledClass = require('./PooledClass');
-var ReactElement = require('./ReactElement');
+var PooledClass = _dereq_('./PooledClass');
+var ReactElement = _dereq_('./ReactElement');
 
-var emptyFunction = require('fbjs/lib/emptyFunction');
-var traverseAllChildren = require('./traverseAllChildren');
+var emptyFunction = _dereq_('fbjs/lib/emptyFunction');
+var traverseAllChildren = _dereq_('./traverseAllChildren');
 
 var twoArgumentPooler = PooledClass.twoArgumentPooler;
 var fourArgumentPooler = PooledClass.fourArgumentPooler;
@@ -55930,7 +58169,7 @@ var ReactChildren = {
 };
 
 module.exports = ReactChildren;
-},{"./PooledClass":354,"./ReactElement":385,"./traverseAllChildren":463,"fbjs/lib/emptyFunction":473}],362:[function(require,module,exports){
+},{"./PooledClass":336,"./ReactElement":367,"./traverseAllChildren":445,"fbjs/lib/emptyFunction":455}],344:[function(_dereq_,module,exports){
 (function (process){
 /**
  * Copyright 2013-2015, Facebook, Inc.
@@ -55945,18 +58184,18 @@ module.exports = ReactChildren;
 
 'use strict';
 
-var ReactComponent = require('./ReactComponent');
-var ReactElement = require('./ReactElement');
-var ReactPropTypeLocations = require('./ReactPropTypeLocations');
-var ReactPropTypeLocationNames = require('./ReactPropTypeLocationNames');
-var ReactNoopUpdateQueue = require('./ReactNoopUpdateQueue');
+var ReactComponent = _dereq_('./ReactComponent');
+var ReactElement = _dereq_('./ReactElement');
+var ReactPropTypeLocations = _dereq_('./ReactPropTypeLocations');
+var ReactPropTypeLocationNames = _dereq_('./ReactPropTypeLocationNames');
+var ReactNoopUpdateQueue = _dereq_('./ReactNoopUpdateQueue');
 
-var assign = require('./Object.assign');
-var emptyObject = require('fbjs/lib/emptyObject');
-var invariant = require('fbjs/lib/invariant');
-var keyMirror = require('fbjs/lib/keyMirror');
-var keyOf = require('fbjs/lib/keyOf');
-var warning = require('fbjs/lib/warning');
+var assign = _dereq_('./Object.assign');
+var emptyObject = _dereq_('fbjs/lib/emptyObject');
+var invariant = _dereq_('fbjs/lib/invariant');
+var keyMirror = _dereq_('fbjs/lib/keyMirror');
+var keyOf = _dereq_('fbjs/lib/keyOf');
+var warning = _dereq_('fbjs/lib/warning');
 
 var MIXINS_KEY = keyOf({ mixins: null });
 
@@ -56703,9 +58942,9 @@ var ReactClass = {
 };
 
 module.exports = ReactClass;
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"./Object.assign":353,"./ReactComponent":363,"./ReactElement":385,"./ReactNoopUpdateQueue":402,"./ReactPropTypeLocationNames":405,"./ReactPropTypeLocations":406,"_process":2,"fbjs/lib/emptyObject":474,"fbjs/lib/invariant":481,"fbjs/lib/keyMirror":484,"fbjs/lib/keyOf":485,"fbjs/lib/warning":492}],363:[function(require,module,exports){
+},{"./Object.assign":335,"./ReactComponent":345,"./ReactElement":367,"./ReactNoopUpdateQueue":384,"./ReactPropTypeLocationNames":387,"./ReactPropTypeLocations":388,"_process":2,"fbjs/lib/emptyObject":456,"fbjs/lib/invariant":463,"fbjs/lib/keyMirror":466,"fbjs/lib/keyOf":467,"fbjs/lib/warning":474}],345:[function(_dereq_,module,exports){
 (function (process){
 /**
  * Copyright 2013-2015, Facebook, Inc.
@@ -56720,12 +58959,12 @@ module.exports = ReactClass;
 
 'use strict';
 
-var ReactNoopUpdateQueue = require('./ReactNoopUpdateQueue');
+var ReactNoopUpdateQueue = _dereq_('./ReactNoopUpdateQueue');
 
-var canDefineProperty = require('./canDefineProperty');
-var emptyObject = require('fbjs/lib/emptyObject');
-var invariant = require('fbjs/lib/invariant');
-var warning = require('fbjs/lib/warning');
+var canDefineProperty = _dereq_('./canDefineProperty');
+var emptyObject = _dereq_('fbjs/lib/emptyObject');
+var invariant = _dereq_('fbjs/lib/invariant');
+var warning = _dereq_('fbjs/lib/warning');
 
 /**
  * Base class helpers for the updating state of a component.
@@ -56829,9 +59068,9 @@ if (process.env.NODE_ENV !== 'production') {
 }
 
 module.exports = ReactComponent;
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"./ReactNoopUpdateQueue":402,"./canDefineProperty":440,"_process":2,"fbjs/lib/emptyObject":474,"fbjs/lib/invariant":481,"fbjs/lib/warning":492}],364:[function(require,module,exports){
+},{"./ReactNoopUpdateQueue":384,"./canDefineProperty":422,"_process":2,"fbjs/lib/emptyObject":456,"fbjs/lib/invariant":463,"fbjs/lib/warning":474}],346:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -56845,8 +59084,8 @@ module.exports = ReactComponent;
 
 'use strict';
 
-var ReactDOMIDOperations = require('./ReactDOMIDOperations');
-var ReactMount = require('./ReactMount');
+var ReactDOMIDOperations = _dereq_('./ReactDOMIDOperations');
+var ReactMount = _dereq_('./ReactMount');
 
 /**
  * Abstracts away all functionality of the reconciler that requires knowledge of
@@ -56873,7 +59112,7 @@ var ReactComponentBrowserEnvironment = {
 };
 
 module.exports = ReactComponentBrowserEnvironment;
-},{"./ReactDOMIDOperations":373,"./ReactMount":398}],365:[function(require,module,exports){
+},{"./ReactDOMIDOperations":355,"./ReactMount":380}],347:[function(_dereq_,module,exports){
 (function (process){
 /**
  * Copyright 2014-2015, Facebook, Inc.
@@ -56888,7 +59127,7 @@ module.exports = ReactComponentBrowserEnvironment;
 
 'use strict';
 
-var invariant = require('fbjs/lib/invariant');
+var invariant = _dereq_('fbjs/lib/invariant');
 
 var injected = false;
 
@@ -56926,9 +59165,9 @@ var ReactComponentEnvironment = {
 };
 
 module.exports = ReactComponentEnvironment;
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"_process":2,"fbjs/lib/invariant":481}],366:[function(require,module,exports){
+},{"_process":2,"fbjs/lib/invariant":463}],348:[function(_dereq_,module,exports){
 (function (process){
 /**
  * Copyright 2013-2015, Facebook, Inc.
@@ -56943,21 +59182,21 @@ module.exports = ReactComponentEnvironment;
 
 'use strict';
 
-var ReactComponentEnvironment = require('./ReactComponentEnvironment');
-var ReactCurrentOwner = require('./ReactCurrentOwner');
-var ReactElement = require('./ReactElement');
-var ReactInstanceMap = require('./ReactInstanceMap');
-var ReactPerf = require('./ReactPerf');
-var ReactPropTypeLocations = require('./ReactPropTypeLocations');
-var ReactPropTypeLocationNames = require('./ReactPropTypeLocationNames');
-var ReactReconciler = require('./ReactReconciler');
-var ReactUpdateQueue = require('./ReactUpdateQueue');
-
-var assign = require('./Object.assign');
-var emptyObject = require('fbjs/lib/emptyObject');
-var invariant = require('fbjs/lib/invariant');
-var shouldUpdateReactComponent = require('./shouldUpdateReactComponent');
-var warning = require('fbjs/lib/warning');
+var ReactComponentEnvironment = _dereq_('./ReactComponentEnvironment');
+var ReactCurrentOwner = _dereq_('./ReactCurrentOwner');
+var ReactElement = _dereq_('./ReactElement');
+var ReactInstanceMap = _dereq_('./ReactInstanceMap');
+var ReactPerf = _dereq_('./ReactPerf');
+var ReactPropTypeLocations = _dereq_('./ReactPropTypeLocations');
+var ReactPropTypeLocationNames = _dereq_('./ReactPropTypeLocationNames');
+var ReactReconciler = _dereq_('./ReactReconciler');
+var ReactUpdateQueue = _dereq_('./ReactUpdateQueue');
+
+var assign = _dereq_('./Object.assign');
+var emptyObject = _dereq_('fbjs/lib/emptyObject');
+var invariant = _dereq_('fbjs/lib/invariant');
+var shouldUpdateReactComponent = _dereq_('./shouldUpdateReactComponent');
+var warning = _dereq_('fbjs/lib/warning');
 
 function getDeclarationErrorAddendum(component) {
   var owner = component._currentElement._owner || null;
@@ -57624,9 +59863,9 @@ var ReactCompositeComponent = {
 };
 
 module.exports = ReactCompositeComponent;
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"./Object.assign":353,"./ReactComponentEnvironment":365,"./ReactCurrentOwner":367,"./ReactElement":385,"./ReactInstanceMap":395,"./ReactPerf":404,"./ReactPropTypeLocationNames":405,"./ReactPropTypeLocations":406,"./ReactReconciler":409,"./ReactUpdateQueue":418,"./shouldUpdateReactComponent":462,"_process":2,"fbjs/lib/emptyObject":474,"fbjs/lib/invariant":481,"fbjs/lib/warning":492}],367:[function(require,module,exports){
+},{"./Object.assign":335,"./ReactComponentEnvironment":347,"./ReactCurrentOwner":349,"./ReactElement":367,"./ReactInstanceMap":377,"./ReactPerf":386,"./ReactPropTypeLocationNames":387,"./ReactPropTypeLocations":388,"./ReactReconciler":391,"./ReactUpdateQueue":400,"./shouldUpdateReactComponent":444,"_process":2,"fbjs/lib/emptyObject":456,"fbjs/lib/invariant":463,"fbjs/lib/warning":474}],349:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -57657,7 +59896,7 @@ var ReactCurrentOwner = {
 };
 
 module.exports = ReactCurrentOwner;
-},{}],368:[function(require,module,exports){
+},{}],350:[function(_dereq_,module,exports){
 (function (process){
 /**
  * Copyright 2013-2015, Facebook, Inc.
@@ -57674,19 +59913,19 @@ module.exports = ReactCurrentOwner;
 
 'use strict';
 
-var ReactCurrentOwner = require('./ReactCurrentOwner');
-var ReactDOMTextComponent = require('./ReactDOMTextComponent');
-var ReactDefaultInjection = require('./ReactDefaultInjection');
-var ReactInstanceHandles = require('./ReactInstanceHandles');
-var ReactMount = require('./ReactMount');
-var ReactPerf = require('./ReactPerf');
-var ReactReconciler = require('./ReactReconciler');
-var ReactUpdates = require('./ReactUpdates');
-var ReactVersion = require('./ReactVersion');
+var ReactCurrentOwner = _dereq_('./ReactCurrentOwner');
+var ReactDOMTextComponent = _dereq_('./ReactDOMTextComponent');
+var ReactDefaultInjection = _dereq_('./ReactDefaultInjection');
+var ReactInstanceHandles = _dereq_('./ReactInstanceHandles');
+var ReactMount = _dereq_('./ReactMount');
+var ReactPerf = _dereq_('./ReactPerf');
+var ReactReconciler = _dereq_('./ReactReconciler');
+var ReactUpdates = _dereq_('./ReactUpdates');
+var ReactVersion = _dereq_('./ReactVersion');
 
-var findDOMNode = require('./findDOMNode');
-var renderSubtreeIntoContainer = require('./renderSubtreeIntoContainer');
-var warning = require('fbjs/lib/warning');
+var findDOMNode = _dereq_('./findDOMNode');
+var renderSubtreeIntoContainer = _dereq_('./renderSubtreeIntoContainer');
+var warning = _dereq_('fbjs/lib/warning');
 
 ReactDefaultInjection.inject();
 
@@ -57717,7 +59956,7 @@ if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' && typeof __REACT_DEVT
 }
 
 if (process.env.NODE_ENV !== 'production') {
-  var ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');
+  var ExecutionEnvironment = _dereq_('fbjs/lib/ExecutionEnvironment');
   if (ExecutionEnvironment.canUseDOM && window.top === window.self) {
 
     // First check if devtools is not installed
@@ -57751,9 +59990,9 @@ if (process.env.NODE_ENV !== 'production') {
 }
 
 module.exports = React;
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"./ReactCurrentOwner":367,"./ReactDOMTextComponent":379,"./ReactDefaultInjection":382,"./ReactInstanceHandles":394,"./ReactMount":398,"./ReactPerf":404,"./ReactReconciler":409,"./ReactUpdates":419,"./ReactVersion":420,"./findDOMNode":444,"./renderSubtreeIntoContainer":459,"_process":2,"fbjs/lib/ExecutionEnvironment":467,"fbjs/lib/warning":492}],369:[function(require,module,exports){
+},{"./ReactCurrentOwner":349,"./ReactDOMTextComponent":361,"./ReactDefaultInjection":364,"./ReactInstanceHandles":376,"./ReactMount":380,"./ReactPerf":386,"./ReactReconciler":391,"./ReactUpdates":401,"./ReactVersion":402,"./findDOMNode":426,"./renderSubtreeIntoContainer":441,"_process":2,"fbjs/lib/ExecutionEnvironment":449,"fbjs/lib/warning":474}],351:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -57804,7 +60043,7 @@ var ReactDOMButton = {
 };
 
 module.exports = ReactDOMButton;
-},{}],370:[function(require,module,exports){
+},{}],352:[function(_dereq_,module,exports){
 (function (process){
 /**
  * Copyright 2013-2015, Facebook, Inc.
@@ -57822,34 +60061,34 @@ module.exports = ReactDOMButton;
 
 'use strict';
 
-var AutoFocusUtils = require('./AutoFocusUtils');
-var CSSPropertyOperations = require('./CSSPropertyOperations');
-var DOMProperty = require('./DOMProperty');
-var DOMPropertyOperations = require('./DOMPropertyOperations');
-var EventConstants = require('./EventConstants');
-var ReactBrowserEventEmitter = require('./ReactBrowserEventEmitter');
-var ReactComponentBrowserEnvironment = require('./ReactComponentBrowserEnvironment');
-var ReactDOMButton = require('./ReactDOMButton');
-var ReactDOMInput = require('./ReactDOMInput');
-var ReactDOMOption = require('./ReactDOMOption');
-var ReactDOMSelect = require('./ReactDOMSelect');
-var ReactDOMTextarea = require('./ReactDOMTextarea');
-var ReactMount = require('./ReactMount');
-var ReactMultiChild = require('./ReactMultiChild');
-var ReactPerf = require('./ReactPerf');
-var ReactUpdateQueue = require('./ReactUpdateQueue');
-
-var assign = require('./Object.assign');
-var canDefineProperty = require('./canDefineProperty');
-var escapeTextContentForBrowser = require('./escapeTextContentForBrowser');
-var invariant = require('fbjs/lib/invariant');
-var isEventSupported = require('./isEventSupported');
-var keyOf = require('fbjs/lib/keyOf');
-var setInnerHTML = require('./setInnerHTML');
-var setTextContent = require('./setTextContent');
-var shallowEqual = require('fbjs/lib/shallowEqual');
-var validateDOMNesting = require('./validateDOMNesting');
-var warning = require('fbjs/lib/warning');
+var AutoFocusUtils = _dereq_('./AutoFocusUtils');
+var CSSPropertyOperations = _dereq_('./CSSPropertyOperations');
+var DOMProperty = _dereq_('./DOMProperty');
+var DOMPropertyOperations = _dereq_('./DOMPropertyOperations');
+var EventConstants = _dereq_('./EventConstants');
+var ReactBrowserEventEmitter = _dereq_('./ReactBrowserEventEmitter');
+var ReactComponentBrowserEnvironment = _dereq_('./ReactComponentBrowserEnvironment');
+var ReactDOMButton = _dereq_('./ReactDOMButton');
+var ReactDOMInput = _dereq_('./ReactDOMInput');
+var ReactDOMOption = _dereq_('./ReactDOMOption');
+var ReactDOMSelect = _dereq_('./ReactDOMSelect');
+var ReactDOMTextarea = _dereq_('./ReactDOMTextarea');
+var ReactMount = _dereq_('./ReactMount');
+var ReactMultiChild = _dereq_('./ReactMultiChild');
+var ReactPerf = _dereq_('./ReactPerf');
+var ReactUpdateQueue = _dereq_('./ReactUpdateQueue');
+
+var assign = _dereq_('./Object.assign');
+var canDefineProperty = _dereq_('./canDefineProperty');
+var escapeTextContentForBrowser = _dereq_('./escapeTextContentForBrowser');
+var invariant = _dereq_('fbjs/lib/invariant');
+var isEventSupported = _dereq_('./isEventSupported');
+var keyOf = _dereq_('fbjs/lib/keyOf');
+var setInnerHTML = _dereq_('./setInnerHTML');
+var setTextContent = _dereq_('./setTextContent');
+var shallowEqual = _dereq_('fbjs/lib/shallowEqual');
+var validateDOMNesting = _dereq_('./validateDOMNesting');
+var warning = _dereq_('fbjs/lib/warning');
 
 var deleteListener = ReactBrowserEventEmitter.deleteListener;
 var listenTo = ReactBrowserEventEmitter.listenTo;
@@ -58768,9 +61007,9 @@ ReactPerf.measureMethods(ReactDOMComponent, 'ReactDOMComponent', {
 assign(ReactDOMComponent.prototype, ReactDOMComponent.Mixin, ReactMultiChild.Mixin);
 
 module.exports = ReactDOMComponent;
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"./AutoFocusUtils":332,"./CSSPropertyOperations":335,"./DOMProperty":340,"./DOMPropertyOperations":341,"./EventConstants":345,"./Object.assign":353,"./ReactBrowserEventEmitter":357,"./ReactComponentBrowserEnvironment":364,"./ReactDOMButton":369,"./ReactDOMInput":374,"./ReactDOMOption":375,"./ReactDOMSelect":376,"./ReactDOMTextarea":380,"./ReactMount":398,"./ReactMultiChild":399,"./ReactPerf":404,"./ReactUpdateQueue":418,"./canDefineProperty":440,"./escapeTextContentForBrowser":443,"./isEventSupported":455,"./setInnerHTML":460,"./setTextContent":461,"./validateDOMNesting":464,"_process":2,"fbjs/lib/invariant":481,"fbjs/lib/keyOf":485,"fbjs/lib/shallowEqual":490,"fbjs/lib/warning":492}],371:[function(require,module,exports){
+},{"./AutoFocusUtils":314,"./CSSPropertyOperations":317,"./DOMProperty":322,"./DOMPropertyOperations":323,"./EventConstants":327,"./Object.assign":335,"./ReactBrowserEventEmitter":339,"./ReactComponentBrowserEnvironment":346,"./ReactDOMButton":351,"./ReactDOMInput":356,"./ReactDOMOption":357,"./ReactDOMSelect":358,"./ReactDOMTextarea":362,"./ReactMount":380,"./ReactMultiChild":381,"./ReactPerf":386,"./ReactUpdateQueue":400,"./canDefineProperty":422,"./escapeTextContentForBrowser":425,"./isEventSupported":437,"./setInnerHTML":442,"./setTextContent":443,"./validateDOMNesting":446,"_process":2,"fbjs/lib/invariant":463,"fbjs/lib/keyOf":467,"fbjs/lib/shallowEqual":472,"fbjs/lib/warning":474}],353:[function(_dereq_,module,exports){
 (function (process){
 /**
  * Copyright 2013-2015, Facebook, Inc.
@@ -58786,10 +61025,10 @@ module.exports = ReactDOMComponent;
 
 'use strict';
 
-var ReactElement = require('./ReactElement');
-var ReactElementValidator = require('./ReactElementValidator');
+var ReactElement = _dereq_('./ReactElement');
+var ReactElementValidator = _dereq_('./ReactElementValidator');
 
-var mapObject = require('fbjs/lib/mapObject');
+var mapObject = _dereq_('fbjs/lib/mapObject');
 
 /**
  * Create a factory that creates HTML tag elements.
@@ -58949,9 +61188,9 @@ var ReactDOMFactories = mapObject({
 }, createDOMFactory);
 
 module.exports = ReactDOMFactories;
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"./ReactElement":385,"./ReactElementValidator":386,"_process":2,"fbjs/lib/mapObject":486}],372:[function(require,module,exports){
+},{"./ReactElement":367,"./ReactElementValidator":368,"_process":2,"fbjs/lib/mapObject":468}],354:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -58970,7 +61209,7 @@ var ReactDOMFeatureFlags = {
 };
 
 module.exports = ReactDOMFeatureFlags;
-},{}],373:[function(require,module,exports){
+},{}],355:[function(_dereq_,module,exports){
 (function (process){
 /**
  * Copyright 2013-2015, Facebook, Inc.
@@ -58986,12 +61225,12 @@ module.exports = ReactDOMFeatureFlags;
 
 'use strict';
 
-var DOMChildrenOperations = require('./DOMChildrenOperations');
-var DOMPropertyOperations = require('./DOMPropertyOperations');
-var ReactMount = require('./ReactMount');
-var ReactPerf = require('./ReactPerf');
+var DOMChildrenOperations = _dereq_('./DOMChildrenOperations');
+var DOMPropertyOperations = _dereq_('./DOMPropertyOperations');
+var ReactMount = _dereq_('./ReactMount');
+var ReactPerf = _dereq_('./ReactPerf');
 
-var invariant = require('fbjs/lib/invariant');
+var invariant = _dereq_('fbjs/lib/invariant');
 
 /**
  * Errors for properties that should not be updated with `updatePropertyByID()`.
@@ -59066,9 +61305,9 @@ ReactPerf.measureMethods(ReactDOMIDOperations, 'ReactDOMIDOperations', {
 });
 
 module.exports = ReactDOMIDOperations;
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"./DOMChildrenOperations":339,"./DOMPropertyOperations":341,"./ReactMount":398,"./ReactPerf":404,"_process":2,"fbjs/lib/invariant":481}],374:[function(require,module,exports){
+},{"./DOMChildrenOperations":321,"./DOMPropertyOperations":323,"./ReactMount":380,"./ReactPerf":386,"_process":2,"fbjs/lib/invariant":463}],356:[function(_dereq_,module,exports){
 (function (process){
 /**
  * Copyright 2013-2015, Facebook, Inc.
@@ -59083,13 +61322,13 @@ module.exports = ReactDOMIDOperations;
 
 'use strict';
 
-var ReactDOMIDOperations = require('./ReactDOMIDOperations');
-var LinkedValueUtils = require('./LinkedValueUtils');
-var ReactMount = require('./ReactMount');
-var ReactUpdates = require('./ReactUpdates');
+var ReactDOMIDOperations = _dereq_('./ReactDOMIDOperations');
+var LinkedValueUtils = _dereq_('./LinkedValueUtils');
+var ReactMount = _dereq_('./ReactMount');
+var ReactUpdates = _dereq_('./ReactUpdates');
 
-var assign = require('./Object.assign');
-var invariant = require('fbjs/lib/invariant');
+var assign = _dereq_('./Object.assign');
+var invariant = _dereq_('fbjs/lib/invariant');
 
 var instancesByReactID = {};
 
@@ -59223,9 +61462,9 @@ function _handleChange(event) {
 }
 
 module.exports = ReactDOMInput;
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"./LinkedValueUtils":352,"./Object.assign":353,"./ReactDOMIDOperations":373,"./ReactMount":398,"./ReactUpdates":419,"_process":2,"fbjs/lib/invariant":481}],375:[function(require,module,exports){
+},{"./LinkedValueUtils":334,"./Object.assign":335,"./ReactDOMIDOperations":355,"./ReactMount":380,"./ReactUpdates":401,"_process":2,"fbjs/lib/invariant":463}],357:[function(_dereq_,module,exports){
 (function (process){
 /**
  * Copyright 2013-2015, Facebook, Inc.
@@ -59240,11 +61479,11 @@ module.exports = ReactDOMInput;
 
 'use strict';
 
-var ReactChildren = require('./ReactChildren');
-var ReactDOMSelect = require('./ReactDOMSelect');
+var ReactChildren = _dereq_('./ReactChildren');
+var ReactDOMSelect = _dereq_('./ReactDOMSelect');
 
-var assign = require('./Object.assign');
-var warning = require('fbjs/lib/warning');
+var assign = _dereq_('./Object.assign');
+var warning = _dereq_('fbjs/lib/warning');
 
 var valueContextKey = ReactDOMSelect.valueContextKey;
 
@@ -59306,16 +61545,19 @@ var ReactDOMOption = {
       }
     });
 
-    nativeProps.children = content;
+    if (content) {
+      nativeProps.children = content;
+    }
+
     return nativeProps;
   }
 
 };
 
 module.exports = ReactDOMOption;
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"./Object.assign":353,"./ReactChildren":361,"./ReactDOMSelect":376,"_process":2,"fbjs/lib/warning":492}],376:[function(require,module,exports){
+},{"./Object.assign":335,"./ReactChildren":343,"./ReactDOMSelect":358,"_process":2,"fbjs/lib/warning":474}],358:[function(_dereq_,module,exports){
 (function (process){
 /**
  * Copyright 2013-2015, Facebook, Inc.
@@ -59330,12 +61572,12 @@ module.exports = ReactDOMOption;
 
 'use strict';
 
-var LinkedValueUtils = require('./LinkedValueUtils');
-var ReactMount = require('./ReactMount');
-var ReactUpdates = require('./ReactUpdates');
+var LinkedValueUtils = _dereq_('./LinkedValueUtils');
+var ReactMount = _dereq_('./ReactMount');
+var ReactUpdates = _dereq_('./ReactUpdates');
 
-var assign = require('./Object.assign');
-var warning = require('fbjs/lib/warning');
+var assign = _dereq_('./Object.assign');
+var warning = _dereq_('fbjs/lib/warning');
 
 var valueContextKey = '__ReactDOMSelect_value$' + Math.random().toString(36).slice(2);
 
@@ -59505,9 +61747,9 @@ function _handleChange(event) {
 }
 
 module.exports = ReactDOMSelect;
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"./LinkedValueUtils":352,"./Object.assign":353,"./ReactMount":398,"./ReactUpdates":419,"_process":2,"fbjs/lib/warning":492}],377:[function(require,module,exports){
+},{"./LinkedValueUtils":334,"./Object.assign":335,"./ReactMount":380,"./ReactUpdates":401,"_process":2,"fbjs/lib/warning":474}],359:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -59521,10 +61763,10 @@ module.exports = ReactDOMSelect;
 
 'use strict';
 
-var ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');
+var ExecutionEnvironment = _dereq_('fbjs/lib/ExecutionEnvironment');
 
-var getNodeForCharacterOffset = require('./getNodeForCharacterOffset');
-var getTextContentAccessor = require('./getTextContentAccessor');
+var getNodeForCharacterOffset = _dereq_('./getNodeForCharacterOffset');
+var getTextContentAccessor = _dereq_('./getTextContentAccessor');
 
 /**
  * While `isCollapsed` is available on the Selection object and `collapsed`
@@ -59720,7 +61962,7 @@ var ReactDOMSelection = {
 };
 
 module.exports = ReactDOMSelection;
-},{"./getNodeForCharacterOffset":452,"./getTextContentAccessor":453,"fbjs/lib/ExecutionEnvironment":467}],378:[function(require,module,exports){
+},{"./getNodeForCharacterOffset":434,"./getTextContentAccessor":435,"fbjs/lib/ExecutionEnvironment":449}],360:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -59734,9 +61976,9 @@ module.exports = ReactDOMSelection;
 
 'use strict';
 
-var ReactDefaultInjection = require('./ReactDefaultInjection');
-var ReactServerRendering = require('./ReactServerRendering');
-var ReactVersion = require('./ReactVersion');
+var ReactDefaultInjection = _dereq_('./ReactDefaultInjection');
+var ReactServerRendering = _dereq_('./ReactServerRendering');
+var ReactVersion = _dereq_('./ReactVersion');
 
 ReactDefaultInjection.inject();
 
@@ -59747,7 +61989,7 @@ var ReactDOMServer = {
 };
 
 module.exports = ReactDOMServer;
-},{"./ReactDefaultInjection":382,"./ReactServerRendering":413,"./ReactVersion":420}],379:[function(require,module,exports){
+},{"./ReactDefaultInjection":364,"./ReactServerRendering":395,"./ReactVersion":402}],361:[function(_dereq_,module,exports){
 (function (process){
 /**
  * Copyright 2013-2015, Facebook, Inc.
@@ -59763,15 +62005,15 @@ module.exports = ReactDOMServer;
 
 'use strict';
 
-var DOMChildrenOperations = require('./DOMChildrenOperations');
-var DOMPropertyOperations = require('./DOMPropertyOperations');
-var ReactComponentBrowserEnvironment = require('./ReactComponentBrowserEnvironment');
-var ReactMount = require('./ReactMount');
+var DOMChildrenOperations = _dereq_('./DOMChildrenOperations');
+var DOMPropertyOperations = _dereq_('./DOMPropertyOperations');
+var ReactComponentBrowserEnvironment = _dereq_('./ReactComponentBrowserEnvironment');
+var ReactMount = _dereq_('./ReactMount');
 
-var assign = require('./Object.assign');
-var escapeTextContentForBrowser = require('./escapeTextContentForBrowser');
-var setTextContent = require('./setTextContent');
-var validateDOMNesting = require('./validateDOMNesting');
+var assign = _dereq_('./Object.assign');
+var escapeTextContentForBrowser = _dereq_('./escapeTextContentForBrowser');
+var setTextContent = _dereq_('./setTextContent');
+var validateDOMNesting = _dereq_('./validateDOMNesting');
 
 /**
  * Text nodes violate a couple assumptions that React makes about components:
@@ -59876,9 +62118,9 @@ assign(ReactDOMTextComponent.prototype, {
 });
 
 module.exports = ReactDOMTextComponent;
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"./DOMChildrenOperations":339,"./DOMPropertyOperations":341,"./Object.assign":353,"./ReactComponentBrowserEnvironment":364,"./ReactMount":398,"./escapeTextContentForBrowser":443,"./setTextContent":461,"./validateDOMNesting":464,"_process":2}],380:[function(require,module,exports){
+},{"./DOMChildrenOperations":321,"./DOMPropertyOperations":323,"./Object.assign":335,"./ReactComponentBrowserEnvironment":346,"./ReactMount":380,"./escapeTextContentForBrowser":425,"./setTextContent":443,"./validateDOMNesting":446,"_process":2}],362:[function(_dereq_,module,exports){
 (function (process){
 /**
  * Copyright 2013-2015, Facebook, Inc.
@@ -59893,13 +62135,13 @@ module.exports = ReactDOMTextComponent;
 
 'use strict';
 
-var LinkedValueUtils = require('./LinkedValueUtils');
-var ReactDOMIDOperations = require('./ReactDOMIDOperations');
-var ReactUpdates = require('./ReactUpdates');
+var LinkedValueUtils = _dereq_('./LinkedValueUtils');
+var ReactDOMIDOperations = _dereq_('./ReactDOMIDOperations');
+var ReactUpdates = _dereq_('./ReactUpdates');
 
-var assign = require('./Object.assign');
-var invariant = require('fbjs/lib/invariant');
-var warning = require('fbjs/lib/warning');
+var assign = _dereq_('./Object.assign');
+var invariant = _dereq_('fbjs/lib/invariant');
+var warning = _dereq_('fbjs/lib/warning');
 
 function forceUpdateIfMounted() {
   if (this._rootNodeID) {
@@ -59993,9 +62235,9 @@ function _handleChange(event) {
 }
 
 module.exports = ReactDOMTextarea;
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"./LinkedValueUtils":352,"./Object.assign":353,"./ReactDOMIDOperations":373,"./ReactUpdates":419,"_process":2,"fbjs/lib/invariant":481,"fbjs/lib/warning":492}],381:[function(require,module,exports){
+},{"./LinkedValueUtils":334,"./Object.assign":335,"./ReactDOMIDOperations":355,"./ReactUpdates":401,"_process":2,"fbjs/lib/invariant":463,"fbjs/lib/warning":474}],363:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -60009,11 +62251,11 @@ module.exports = ReactDOMTextarea;
 
 'use strict';
 
-var ReactUpdates = require('./ReactUpdates');
-var Transaction = require('./Transaction');
+var ReactUpdates = _dereq_('./ReactUpdates');
+var Transaction = _dereq_('./Transaction');
 
-var assign = require('./Object.assign');
-var emptyFunction = require('fbjs/lib/emptyFunction');
+var assign = _dereq_('./Object.assign');
+var emptyFunction = _dereq_('fbjs/lib/emptyFunction');
 
 var RESET_BATCHED_UPDATES = {
   initialize: emptyFunction,
@@ -60063,7 +62305,7 @@ var ReactDefaultBatchingStrategy = {
 };
 
 module.exports = ReactDefaultBatchingStrategy;
-},{"./Object.assign":353,"./ReactUpdates":419,"./Transaction":436,"fbjs/lib/emptyFunction":473}],382:[function(require,module,exports){
+},{"./Object.assign":335,"./ReactUpdates":401,"./Transaction":418,"fbjs/lib/emptyFunction":455}],364:[function(_dereq_,module,exports){
 (function (process){
 /**
  * Copyright 2013-2015, Facebook, Inc.
@@ -60078,27 +62320,27 @@ module.exports = ReactDefaultBatchingStrategy;
 
 'use strict';
 
-var BeforeInputEventPlugin = require('./BeforeInputEventPlugin');
-var ChangeEventPlugin = require('./ChangeEventPlugin');
-var ClientReactRootIndex = require('./ClientReactRootIndex');
-var DefaultEventPluginOrder = require('./DefaultEventPluginOrder');
-var EnterLeaveEventPlugin = require('./EnterLeaveEventPlugin');
-var ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');
-var HTMLDOMPropertyConfig = require('./HTMLDOMPropertyConfig');
-var ReactBrowserComponentMixin = require('./ReactBrowserComponentMixin');
-var ReactComponentBrowserEnvironment = require('./ReactComponentBrowserEnvironment');
-var ReactDefaultBatchingStrategy = require('./ReactDefaultBatchingStrategy');
-var ReactDOMComponent = require('./ReactDOMComponent');
-var ReactDOMTextComponent = require('./ReactDOMTextComponent');
-var ReactEventListener = require('./ReactEventListener');
-var ReactInjection = require('./ReactInjection');
-var ReactInstanceHandles = require('./ReactInstanceHandles');
-var ReactMount = require('./ReactMount');
-var ReactReconcileTransaction = require('./ReactReconcileTransaction');
-var SelectEventPlugin = require('./SelectEventPlugin');
-var ServerReactRootIndex = require('./ServerReactRootIndex');
-var SimpleEventPlugin = require('./SimpleEventPlugin');
-var SVGDOMPropertyConfig = require('./SVGDOMPropertyConfig');
+var BeforeInputEventPlugin = _dereq_('./BeforeInputEventPlugin');
+var ChangeEventPlugin = _dereq_('./ChangeEventPlugin');
+var ClientReactRootIndex = _dereq_('./ClientReactRootIndex');
+var DefaultEventPluginOrder = _dereq_('./DefaultEventPluginOrder');
+var EnterLeaveEventPlugin = _dereq_('./EnterLeaveEventPlugin');
+var ExecutionEnvironment = _dereq_('fbjs/lib/ExecutionEnvironment');
+var HTMLDOMPropertyConfig = _dereq_('./HTMLDOMPropertyConfig');
+var ReactBrowserComponentMixin = _dereq_('./ReactBrowserComponentMixin');
+var ReactComponentBrowserEnvironment = _dereq_('./ReactComponentBrowserEnvironment');
+var ReactDefaultBatchingStrategy = _dereq_('./ReactDefaultBatchingStrategy');
+var ReactDOMComponent = _dereq_('./ReactDOMComponent');
+var ReactDOMTextComponent = _dereq_('./ReactDOMTextComponent');
+var ReactEventListener = _dereq_('./ReactEventListener');
+var ReactInjection = _dereq_('./ReactInjection');
+var ReactInstanceHandles = _dereq_('./ReactInstanceHandles');
+var ReactMount = _dereq_('./ReactMount');
+var ReactReconcileTransaction = _dereq_('./ReactReconcileTransaction');
+var SelectEventPlugin = _dereq_('./SelectEventPlugin');
+var ServerReactRootIndex = _dereq_('./ServerReactRootIndex');
+var SimpleEventPlugin = _dereq_('./SimpleEventPlugin');
+var SVGDOMPropertyConfig = _dereq_('./SVGDOMPropertyConfig');
 
 var alreadyInjected = false;
 
@@ -60153,7 +62395,7 @@ function inject() {
   if (process.env.NODE_ENV !== 'production') {
     var url = ExecutionEnvironment.canUseDOM && window.location.href || '';
     if (/[?&]react_perf\b/.test(url)) {
-      var ReactDefaultPerf = require('./ReactDefaultPerf');
+      var ReactDefaultPerf = _dereq_('./ReactDefaultPerf');
       ReactDefaultPerf.start();
     }
   }
@@ -60162,9 +62404,9 @@ function inject() {
 module.exports = {
   inject: inject
 };
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"./BeforeInputEventPlugin":333,"./ChangeEventPlugin":337,"./ClientReactRootIndex":338,"./DefaultEventPluginOrder":343,"./EnterLeaveEventPlugin":344,"./HTMLDOMPropertyConfig":351,"./ReactBrowserComponentMixin":356,"./ReactComponentBrowserEnvironment":364,"./ReactDOMComponent":370,"./ReactDOMTextComponent":379,"./ReactDefaultBatchingStrategy":381,"./ReactDefaultPerf":383,"./ReactEventListener":391,"./ReactInjection":392,"./ReactInstanceHandles":394,"./ReactMount":398,"./ReactReconcileTransaction":408,"./SVGDOMPropertyConfig":421,"./SelectEventPlugin":422,"./ServerReactRootIndex":423,"./SimpleEventPlugin":424,"_process":2,"fbjs/lib/ExecutionEnvironment":467}],383:[function(require,module,exports){
+},{"./BeforeInputEventPlugin":315,"./ChangeEventPlugin":319,"./ClientReactRootIndex":320,"./DefaultEventPluginOrder":325,"./EnterLeaveEventPlugin":326,"./HTMLDOMPropertyConfig":333,"./ReactBrowserComponentMixin":338,"./ReactComponentBrowserEnvironment":346,"./ReactDOMComponent":352,"./ReactDOMTextComponent":361,"./ReactDefaultBatchingStrategy":363,"./ReactDefaultPerf":365,"./ReactEventListener":373,"./ReactInjection":374,"./ReactInstanceHandles":376,"./ReactMount":380,"./ReactReconcileTransaction":390,"./SVGDOMPropertyConfig":403,"./SelectEventPlugin":404,"./ServerReactRootIndex":405,"./SimpleEventPlugin":406,"_process":2,"fbjs/lib/ExecutionEnvironment":449}],365:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -60179,12 +62421,12 @@ module.exports = {
 
 'use strict';
 
-var DOMProperty = require('./DOMProperty');
-var ReactDefaultPerfAnalysis = require('./ReactDefaultPerfAnalysis');
-var ReactMount = require('./ReactMount');
-var ReactPerf = require('./ReactPerf');
+var DOMProperty = _dereq_('./DOMProperty');
+var ReactDefaultPerfAnalysis = _dereq_('./ReactDefaultPerfAnalysis');
+var ReactMount = _dereq_('./ReactMount');
+var ReactPerf = _dereq_('./ReactPerf');
 
-var performanceNow = require('fbjs/lib/performanceNow');
+var performanceNow = _dereq_('fbjs/lib/performanceNow');
 
 function roundFloat(val) {
   return Math.floor(val * 100) / 100;
@@ -60402,7 +62644,7 @@ var ReactDefaultPerf = {
 };
 
 module.exports = ReactDefaultPerf;
-},{"./DOMProperty":340,"./ReactDefaultPerfAnalysis":384,"./ReactMount":398,"./ReactPerf":404,"fbjs/lib/performanceNow":489}],384:[function(require,module,exports){
+},{"./DOMProperty":322,"./ReactDefaultPerfAnalysis":366,"./ReactMount":380,"./ReactPerf":386,"fbjs/lib/performanceNow":471}],366:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -60416,7 +62658,7 @@ module.exports = ReactDefaultPerf;
 
 'use strict';
 
-var assign = require('./Object.assign');
+var assign = _dereq_('./Object.assign');
 
 // Don't try to save users less than 1.2ms (a number I made up)
 var DONT_CARE_THRESHOLD = 1.2;
@@ -60604,7 +62846,7 @@ var ReactDefaultPerfAnalysis = {
 };
 
 module.exports = ReactDefaultPerfAnalysis;
-},{"./Object.assign":353}],385:[function(require,module,exports){
+},{"./Object.assign":335}],367:[function(_dereq_,module,exports){
 (function (process){
 /**
  * Copyright 2014-2015, Facebook, Inc.
@@ -60619,10 +62861,10 @@ module.exports = ReactDefaultPerfAnalysis;
 
 'use strict';
 
-var ReactCurrentOwner = require('./ReactCurrentOwner');
+var ReactCurrentOwner = _dereq_('./ReactCurrentOwner');
 
-var assign = require('./Object.assign');
-var canDefineProperty = require('./canDefineProperty');
+var assign = _dereq_('./Object.assign');
+var canDefineProperty = _dereq_('./canDefineProperty');
 
 // The Symbol used to tag the ReactElement type. If there is no native Symbol
 // nor polyfill, then a plain number is used for performance.
@@ -60853,9 +63095,9 @@ ReactElement.isValidElement = function (object) {
 };
 
 module.exports = ReactElement;
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"./Object.assign":353,"./ReactCurrentOwner":367,"./canDefineProperty":440,"_process":2}],386:[function(require,module,exports){
+},{"./Object.assign":335,"./ReactCurrentOwner":349,"./canDefineProperty":422,"_process":2}],368:[function(_dereq_,module,exports){
 (function (process){
 /**
  * Copyright 2014-2015, Facebook, Inc.
@@ -60877,15 +63119,15 @@ module.exports = ReactElement;
 
 'use strict';
 
-var ReactElement = require('./ReactElement');
-var ReactPropTypeLocations = require('./ReactPropTypeLocations');
-var ReactPropTypeLocationNames = require('./ReactPropTypeLocationNames');
-var ReactCurrentOwner = require('./ReactCurrentOwner');
+var ReactElement = _dereq_('./ReactElement');
+var ReactPropTypeLocations = _dereq_('./ReactPropTypeLocations');
+var ReactPropTypeLocationNames = _dereq_('./ReactPropTypeLocationNames');
+var ReactCurrentOwner = _dereq_('./ReactCurrentOwner');
 
-var canDefineProperty = require('./canDefineProperty');
-var getIteratorFn = require('./getIteratorFn');
-var invariant = require('fbjs/lib/invariant');
-var warning = require('fbjs/lib/warning');
+var canDefineProperty = _dereq_('./canDefineProperty');
+var getIteratorFn = _dereq_('./getIteratorFn');
+var invariant = _dereq_('fbjs/lib/invariant');
+var warning = _dereq_('fbjs/lib/warning');
 
 function getDeclarationErrorAddendum() {
   if (ReactCurrentOwner.current) {
@@ -61138,9 +63380,9 @@ var ReactElementValidator = {
 };
 
 module.exports = ReactElementValidator;
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"./ReactCurrentOwner":367,"./ReactElement":385,"./ReactPropTypeLocationNames":405,"./ReactPropTypeLocations":406,"./canDefineProperty":440,"./getIteratorFn":451,"_process":2,"fbjs/lib/invariant":481,"fbjs/lib/warning":492}],387:[function(require,module,exports){
+},{"./ReactCurrentOwner":349,"./ReactElement":367,"./ReactPropTypeLocationNames":387,"./ReactPropTypeLocations":388,"./canDefineProperty":422,"./getIteratorFn":433,"_process":2,"fbjs/lib/invariant":463,"fbjs/lib/warning":474}],369:[function(_dereq_,module,exports){
 /**
  * Copyright 2014-2015, Facebook, Inc.
  * All rights reserved.
@@ -61154,11 +63396,11 @@ module.exports = ReactElementValidator;
 
 'use strict';
 
-var ReactElement = require('./ReactElement');
-var ReactEmptyComponentRegistry = require('./ReactEmptyComponentRegistry');
-var ReactReconciler = require('./ReactReconciler');
+var ReactElement = _dereq_('./ReactElement');
+var ReactEmptyComponentRegistry = _dereq_('./ReactEmptyComponentRegistry');
+var ReactReconciler = _dereq_('./ReactReconciler');
 
-var assign = require('./Object.assign');
+var assign = _dereq_('./Object.assign');
 
 var placeholderElement;
 
@@ -61168,6 +63410,10 @@ var ReactEmptyComponentInjection = {
   }
 };
 
+function registerNullComponentID() {
+  ReactEmptyComponentRegistry.registerNullComponentID(this._rootNodeID);
+}
+
 var ReactEmptyComponent = function (instantiate) {
   this._currentElement = null;
   this._rootNodeID = null;
@@ -61176,7 +63422,7 @@ var ReactEmptyComponent = function (instantiate) {
 assign(ReactEmptyComponent.prototype, {
   construct: function (element) {},
   mountComponent: function (rootID, transaction, context) {
-    ReactEmptyComponentRegistry.registerNullComponentID(rootID);
+    transaction.getReactMountReady().enqueue(registerNullComponentID, this);
     this._rootNodeID = rootID;
     return ReactReconciler.mountComponent(this._renderedComponent, rootID, transaction, context);
   },
@@ -61192,7 +63438,7 @@ assign(ReactEmptyComponent.prototype, {
 ReactEmptyComponent.injection = ReactEmptyComponentInjection;
 
 module.exports = ReactEmptyComponent;
-},{"./Object.assign":353,"./ReactElement":385,"./ReactEmptyComponentRegistry":388,"./ReactReconciler":409}],388:[function(require,module,exports){
+},{"./Object.assign":335,"./ReactElement":367,"./ReactEmptyComponentRegistry":370,"./ReactReconciler":391}],370:[function(_dereq_,module,exports){
 /**
  * Copyright 2014-2015, Facebook, Inc.
  * All rights reserved.
@@ -61241,7 +63487,7 @@ var ReactEmptyComponentRegistry = {
 };
 
 module.exports = ReactEmptyComponentRegistry;
-},{}],389:[function(require,module,exports){
+},{}],371:[function(_dereq_,module,exports){
 (function (process){
 /**
  * Copyright 2013-2015, Facebook, Inc.
@@ -61320,9 +63566,9 @@ if (process.env.NODE_ENV !== 'production') {
 }
 
 module.exports = ReactErrorUtils;
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"_process":2}],390:[function(require,module,exports){
+},{"_process":2}],372:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -61336,7 +63582,7 @@ module.exports = ReactErrorUtils;
 
 'use strict';
 
-var EventPluginHub = require('./EventPluginHub');
+var EventPluginHub = _dereq_('./EventPluginHub');
 
 function runEventQueueInBatch(events) {
   EventPluginHub.enqueueEvents(events);
@@ -61361,7 +63607,7 @@ var ReactEventEmitterMixin = {
 };
 
 module.exports = ReactEventEmitterMixin;
-},{"./EventPluginHub":346}],391:[function(require,module,exports){
+},{"./EventPluginHub":328}],373:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -61376,16 +63622,16 @@ module.exports = ReactEventEmitterMixin;
 
 'use strict';
 
-var EventListener = require('fbjs/lib/EventListener');
-var ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');
-var PooledClass = require('./PooledClass');
-var ReactInstanceHandles = require('./ReactInstanceHandles');
-var ReactMount = require('./ReactMount');
-var ReactUpdates = require('./ReactUpdates');
+var EventListener = _dereq_('fbjs/lib/EventListener');
+var ExecutionEnvironment = _dereq_('fbjs/lib/ExecutionEnvironment');
+var PooledClass = _dereq_('./PooledClass');
+var ReactInstanceHandles = _dereq_('./ReactInstanceHandles');
+var ReactMount = _dereq_('./ReactMount');
+var ReactUpdates = _dereq_('./ReactUpdates');
 
-var assign = require('./Object.assign');
-var getEventTarget = require('./getEventTarget');
-var getUnboundedScrollPosition = require('fbjs/lib/getUnboundedScrollPosition');
+var assign = _dereq_('./Object.assign');
+var getEventTarget = _dereq_('./getEventTarget');
+var getUnboundedScrollPosition = _dereq_('fbjs/lib/getUnboundedScrollPosition');
 
 var DOCUMENT_FRAGMENT_NODE_TYPE = 11;
 
@@ -61573,7 +63819,7 @@ var ReactEventListener = {
 };
 
 module.exports = ReactEventListener;
-},{"./Object.assign":353,"./PooledClass":354,"./ReactInstanceHandles":394,"./ReactMount":398,"./ReactUpdates":419,"./getEventTarget":450,"fbjs/lib/EventListener":466,"fbjs/lib/ExecutionEnvironment":467,"fbjs/lib/getUnboundedScrollPosition":478}],392:[function(require,module,exports){
+},{"./Object.assign":335,"./PooledClass":336,"./ReactInstanceHandles":376,"./ReactMount":380,"./ReactUpdates":401,"./getEventTarget":432,"fbjs/lib/EventListener":448,"fbjs/lib/ExecutionEnvironment":449,"fbjs/lib/getUnboundedScrollPosition":460}],374:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -61587,16 +63833,16 @@ module.exports = ReactEventListener;
 
 'use strict';
 
-var DOMProperty = require('./DOMProperty');
-var EventPluginHub = require('./EventPluginHub');
-var ReactComponentEnvironment = require('./ReactComponentEnvironment');
-var ReactClass = require('./ReactClass');
-var ReactEmptyComponent = require('./ReactEmptyComponent');
-var ReactBrowserEventEmitter = require('./ReactBrowserEventEmitter');
-var ReactNativeComponent = require('./ReactNativeComponent');
-var ReactPerf = require('./ReactPerf');
-var ReactRootIndex = require('./ReactRootIndex');
-var ReactUpdates = require('./ReactUpdates');
+var DOMProperty = _dereq_('./DOMProperty');
+var EventPluginHub = _dereq_('./EventPluginHub');
+var ReactComponentEnvironment = _dereq_('./ReactComponentEnvironment');
+var ReactClass = _dereq_('./ReactClass');
+var ReactEmptyComponent = _dereq_('./ReactEmptyComponent');
+var ReactBrowserEventEmitter = _dereq_('./ReactBrowserEventEmitter');
+var ReactNativeComponent = _dereq_('./ReactNativeComponent');
+var ReactPerf = _dereq_('./ReactPerf');
+var ReactRootIndex = _dereq_('./ReactRootIndex');
+var ReactUpdates = _dereq_('./ReactUpdates');
 
 var ReactInjection = {
   Component: ReactComponentEnvironment.injection,
@@ -61612,7 +63858,7 @@ var ReactInjection = {
 };
 
 module.exports = ReactInjection;
-},{"./DOMProperty":340,"./EventPluginHub":346,"./ReactBrowserEventEmitter":357,"./ReactClass":362,"./ReactComponentEnvironment":365,"./ReactEmptyComponent":387,"./ReactNativeComponent":401,"./ReactPerf":404,"./ReactRootIndex":411,"./ReactUpdates":419}],393:[function(require,module,exports){
+},{"./DOMProperty":322,"./EventPluginHub":328,"./ReactBrowserEventEmitter":339,"./ReactClass":344,"./ReactComponentEnvironment":347,"./ReactEmptyComponent":369,"./ReactNativeComponent":383,"./ReactPerf":386,"./ReactRootIndex":393,"./ReactUpdates":401}],375:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -61626,11 +63872,11 @@ module.exports = ReactInjection;
 
 'use strict';
 
-var ReactDOMSelection = require('./ReactDOMSelection');
+var ReactDOMSelection = _dereq_('./ReactDOMSelection');
 
-var containsNode = require('fbjs/lib/containsNode');
-var focusNode = require('fbjs/lib/focusNode');
-var getActiveElement = require('fbjs/lib/getActiveElement');
+var containsNode = _dereq_('fbjs/lib/containsNode');
+var focusNode = _dereq_('fbjs/lib/focusNode');
+var getActiveElement = _dereq_('fbjs/lib/getActiveElement');
 
 function isInDocument(node) {
   return containsNode(document.documentElement, node);
@@ -61737,7 +63983,7 @@ var ReactInputSelection = {
 };
 
 module.exports = ReactInputSelection;
-},{"./ReactDOMSelection":377,"fbjs/lib/containsNode":470,"fbjs/lib/focusNode":475,"fbjs/lib/getActiveElement":476}],394:[function(require,module,exports){
+},{"./ReactDOMSelection":359,"fbjs/lib/containsNode":452,"fbjs/lib/focusNode":457,"fbjs/lib/getActiveElement":458}],376:[function(_dereq_,module,exports){
 (function (process){
 /**
  * Copyright 2013-2015, Facebook, Inc.
@@ -61753,9 +63999,9 @@ module.exports = ReactInputSelection;
 
 'use strict';
 
-var ReactRootIndex = require('./ReactRootIndex');
+var ReactRootIndex = _dereq_('./ReactRootIndex');
 
-var invariant = require('fbjs/lib/invariant');
+var invariant = _dereq_('fbjs/lib/invariant');
 
 var SEPARATOR = '.';
 var SEPARATOR_LENGTH = SEPARATOR.length;
@@ -62041,9 +64287,9 @@ var ReactInstanceHandles = {
 };
 
 module.exports = ReactInstanceHandles;
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"./ReactRootIndex":411,"_process":2,"fbjs/lib/invariant":481}],395:[function(require,module,exports){
+},{"./ReactRootIndex":393,"_process":2,"fbjs/lib/invariant":463}],377:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -62091,7 +64337,7 @@ var ReactInstanceMap = {
 };
 
 module.exports = ReactInstanceMap;
-},{}],396:[function(require,module,exports){
+},{}],378:[function(_dereq_,module,exports){
 (function (process){
 /**
  * Copyright 2013-2015, Facebook, Inc.
@@ -62106,17 +64352,17 @@ module.exports = ReactInstanceMap;
 
 'use strict';
 
-var ReactChildren = require('./ReactChildren');
-var ReactComponent = require('./ReactComponent');
-var ReactClass = require('./ReactClass');
-var ReactDOMFactories = require('./ReactDOMFactories');
-var ReactElement = require('./ReactElement');
-var ReactElementValidator = require('./ReactElementValidator');
-var ReactPropTypes = require('./ReactPropTypes');
-var ReactVersion = require('./ReactVersion');
+var ReactChildren = _dereq_('./ReactChildren');
+var ReactComponent = _dereq_('./ReactComponent');
+var ReactClass = _dereq_('./ReactClass');
+var ReactDOMFactories = _dereq_('./ReactDOMFactories');
+var ReactElement = _dereq_('./ReactElement');
+var ReactElementValidator = _dereq_('./ReactElementValidator');
+var ReactPropTypes = _dereq_('./ReactPropTypes');
+var ReactVersion = _dereq_('./ReactVersion');
 
-var assign = require('./Object.assign');
-var onlyChild = require('./onlyChild');
+var assign = _dereq_('./Object.assign');
+var onlyChild = _dereq_('./onlyChild');
 
 var createElement = ReactElement.createElement;
 var createFactory = ReactElement.createFactory;
@@ -62167,9 +64413,9 @@ var React = {
 };
 
 module.exports = React;
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"./Object.assign":353,"./ReactChildren":361,"./ReactClass":362,"./ReactComponent":363,"./ReactDOMFactories":371,"./ReactElement":385,"./ReactElementValidator":386,"./ReactPropTypes":407,"./ReactVersion":420,"./onlyChild":457,"_process":2}],397:[function(require,module,exports){
+},{"./Object.assign":335,"./ReactChildren":343,"./ReactClass":344,"./ReactComponent":345,"./ReactDOMFactories":353,"./ReactElement":367,"./ReactElementValidator":368,"./ReactPropTypes":389,"./ReactVersion":402,"./onlyChild":439,"_process":2}],379:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -62183,7 +64429,7 @@ module.exports = React;
 
 'use strict';
 
-var adler32 = require('./adler32');
+var adler32 = _dereq_('./adler32');
 
 var TAG_END = /\/?>/;
 
@@ -62215,7 +64461,7 @@ var ReactMarkupChecksum = {
 };
 
 module.exports = ReactMarkupChecksum;
-},{"./adler32":439}],398:[function(require,module,exports){
+},{"./adler32":421}],380:[function(_dereq_,module,exports){
 (function (process){
 /**
  * Copyright 2013-2015, Facebook, Inc.
@@ -62230,29 +64476,29 @@ module.exports = ReactMarkupChecksum;
 
 'use strict';
 
-var DOMProperty = require('./DOMProperty');
-var ReactBrowserEventEmitter = require('./ReactBrowserEventEmitter');
-var ReactCurrentOwner = require('./ReactCurrentOwner');
-var ReactDOMFeatureFlags = require('./ReactDOMFeatureFlags');
-var ReactElement = require('./ReactElement');
-var ReactEmptyComponentRegistry = require('./ReactEmptyComponentRegistry');
-var ReactInstanceHandles = require('./ReactInstanceHandles');
-var ReactInstanceMap = require('./ReactInstanceMap');
-var ReactMarkupChecksum = require('./ReactMarkupChecksum');
-var ReactPerf = require('./ReactPerf');
-var ReactReconciler = require('./ReactReconciler');
-var ReactUpdateQueue = require('./ReactUpdateQueue');
-var ReactUpdates = require('./ReactUpdates');
-
-var assign = require('./Object.assign');
-var emptyObject = require('fbjs/lib/emptyObject');
-var containsNode = require('fbjs/lib/containsNode');
-var instantiateReactComponent = require('./instantiateReactComponent');
-var invariant = require('fbjs/lib/invariant');
-var setInnerHTML = require('./setInnerHTML');
-var shouldUpdateReactComponent = require('./shouldUpdateReactComponent');
-var validateDOMNesting = require('./validateDOMNesting');
-var warning = require('fbjs/lib/warning');
+var DOMProperty = _dereq_('./DOMProperty');
+var ReactBrowserEventEmitter = _dereq_('./ReactBrowserEventEmitter');
+var ReactCurrentOwner = _dereq_('./ReactCurrentOwner');
+var ReactDOMFeatureFlags = _dereq_('./ReactDOMFeatureFlags');
+var ReactElement = _dereq_('./ReactElement');
+var ReactEmptyComponentRegistry = _dereq_('./ReactEmptyComponentRegistry');
+var ReactInstanceHandles = _dereq_('./ReactInstanceHandles');
+var ReactInstanceMap = _dereq_('./ReactInstanceMap');
+var ReactMarkupChecksum = _dereq_('./ReactMarkupChecksum');
+var ReactPerf = _dereq_('./ReactPerf');
+var ReactReconciler = _dereq_('./ReactReconciler');
+var ReactUpdateQueue = _dereq_('./ReactUpdateQueue');
+var ReactUpdates = _dereq_('./ReactUpdates');
+
+var assign = _dereq_('./Object.assign');
+var emptyObject = _dereq_('fbjs/lib/emptyObject');
+var containsNode = _dereq_('fbjs/lib/containsNode');
+var instantiateReactComponent = _dereq_('./instantiateReactComponent');
+var invariant = _dereq_('fbjs/lib/invariant');
+var setInnerHTML = _dereq_('./setInnerHTML');
+var shouldUpdateReactComponent = _dereq_('./shouldUpdateReactComponent');
+var validateDOMNesting = _dereq_('./validateDOMNesting');
+var warning = _dereq_('fbjs/lib/warning');
 
 var ATTR_NAME = DOMProperty.ID_ATTRIBUTE_NAME;
 var nodeCache = {};
@@ -63067,9 +65313,9 @@ ReactPerf.measureMethods(ReactMount, 'ReactMount', {
 });
 
 module.exports = ReactMount;
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"./DOMProperty":340,"./Object.assign":353,"./ReactBrowserEventEmitter":357,"./ReactCurrentOwner":367,"./ReactDOMFeatureFlags":372,"./ReactElement":385,"./ReactEmptyComponentRegistry":388,"./ReactInstanceHandles":394,"./ReactInstanceMap":395,"./ReactMarkupChecksum":397,"./ReactPerf":404,"./ReactReconciler":409,"./ReactUpdateQueue":418,"./ReactUpdates":419,"./instantiateReactComponent":454,"./setInnerHTML":460,"./shouldUpdateReactComponent":462,"./validateDOMNesting":464,"_process":2,"fbjs/lib/containsNode":470,"fbjs/lib/emptyObject":474,"fbjs/lib/invariant":481,"fbjs/lib/warning":492}],399:[function(require,module,exports){
+},{"./DOMProperty":322,"./Object.assign":335,"./ReactBrowserEventEmitter":339,"./ReactCurrentOwner":349,"./ReactDOMFeatureFlags":354,"./ReactElement":367,"./ReactEmptyComponentRegistry":370,"./ReactInstanceHandles":376,"./ReactInstanceMap":377,"./ReactMarkupChecksum":379,"./ReactPerf":386,"./ReactReconciler":391,"./ReactUpdateQueue":400,"./ReactUpdates":401,"./instantiateReactComponent":436,"./setInnerHTML":442,"./shouldUpdateReactComponent":444,"./validateDOMNesting":446,"_process":2,"fbjs/lib/containsNode":452,"fbjs/lib/emptyObject":456,"fbjs/lib/invariant":463,"fbjs/lib/warning":474}],381:[function(_dereq_,module,exports){
 (function (process){
 /**
  * Copyright 2013-2015, Facebook, Inc.
@@ -63085,14 +65331,14 @@ module.exports = ReactMount;
 
 'use strict';
 
-var ReactComponentEnvironment = require('./ReactComponentEnvironment');
-var ReactMultiChildUpdateTypes = require('./ReactMultiChildUpdateTypes');
+var ReactComponentEnvironment = _dereq_('./ReactComponentEnvironment');
+var ReactMultiChildUpdateTypes = _dereq_('./ReactMultiChildUpdateTypes');
 
-var ReactCurrentOwner = require('./ReactCurrentOwner');
-var ReactReconciler = require('./ReactReconciler');
-var ReactChildReconciler = require('./ReactChildReconciler');
+var ReactCurrentOwner = _dereq_('./ReactCurrentOwner');
+var ReactReconciler = _dereq_('./ReactReconciler');
+var ReactChildReconciler = _dereq_('./ReactChildReconciler');
 
-var flattenChildren = require('./flattenChildren');
+var flattenChildren = _dereq_('./flattenChildren');
 
 /**
  * Updating children of a component may trigger recursive updates. The depth is
@@ -63567,9 +65813,9 @@ var ReactMultiChild = {
 };
 
 module.exports = ReactMultiChild;
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"./ReactChildReconciler":360,"./ReactComponentEnvironment":365,"./ReactCurrentOwner":367,"./ReactMultiChildUpdateTypes":400,"./ReactReconciler":409,"./flattenChildren":445,"_process":2}],400:[function(require,module,exports){
+},{"./ReactChildReconciler":342,"./ReactComponentEnvironment":347,"./ReactCurrentOwner":349,"./ReactMultiChildUpdateTypes":382,"./ReactReconciler":391,"./flattenChildren":427,"_process":2}],382:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -63583,7 +65829,7 @@ module.exports = ReactMultiChild;
 
 'use strict';
 
-var keyMirror = require('fbjs/lib/keyMirror');
+var keyMirror = _dereq_('fbjs/lib/keyMirror');
 
 /**
  * When a component's children are updated, a series of update configuration
@@ -63602,7 +65848,7 @@ var ReactMultiChildUpdateTypes = keyMirror({
 });
 
 module.exports = ReactMultiChildUpdateTypes;
-},{"fbjs/lib/keyMirror":484}],401:[function(require,module,exports){
+},{"fbjs/lib/keyMirror":466}],383:[function(_dereq_,module,exports){
 (function (process){
 /**
  * Copyright 2014-2015, Facebook, Inc.
@@ -63617,8 +65863,8 @@ module.exports = ReactMultiChildUpdateTypes;
 
 'use strict';
 
-var assign = require('./Object.assign');
-var invariant = require('fbjs/lib/invariant');
+var assign = _dereq_('./Object.assign');
+var invariant = _dereq_('fbjs/lib/invariant');
 
 var autoGenerateWrapperClass = null;
 var genericComponentClass = null;
@@ -63698,9 +65944,9 @@ var ReactNativeComponent = {
 };
 
 module.exports = ReactNativeComponent;
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"./Object.assign":353,"_process":2,"fbjs/lib/invariant":481}],402:[function(require,module,exports){
+},{"./Object.assign":335,"_process":2,"fbjs/lib/invariant":463}],384:[function(_dereq_,module,exports){
 (function (process){
 /**
  * Copyright 2015, Facebook, Inc.
@@ -63715,7 +65961,7 @@ module.exports = ReactNativeComponent;
 
 'use strict';
 
-var warning = require('fbjs/lib/warning');
+var warning = _dereq_('fbjs/lib/warning');
 
 function warnTDZ(publicInstance, callerName) {
   if (process.env.NODE_ENV !== 'production') {
@@ -63820,9 +66066,9 @@ var ReactNoopUpdateQueue = {
 };
 
 module.exports = ReactNoopUpdateQueue;
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"_process":2,"fbjs/lib/warning":492}],403:[function(require,module,exports){
+},{"_process":2,"fbjs/lib/warning":474}],385:[function(_dereq_,module,exports){
 (function (process){
 /**
  * Copyright 2013-2015, Facebook, Inc.
@@ -63837,7 +66083,7 @@ module.exports = ReactNoopUpdateQueue;
 
 'use strict';
 
-var invariant = require('fbjs/lib/invariant');
+var invariant = _dereq_('fbjs/lib/invariant');
 
 /**
  * ReactOwners are capable of storing references to owned components.
@@ -63915,9 +66161,9 @@ var ReactOwner = {
 };
 
 module.exports = ReactOwner;
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"_process":2,"fbjs/lib/invariant":481}],404:[function(require,module,exports){
+},{"_process":2,"fbjs/lib/invariant":463}],386:[function(_dereq_,module,exports){
 (function (process){
 /**
  * Copyright 2013-2015, Facebook, Inc.
@@ -64015,9 +66261,9 @@ function _noMeasure(objName, fnName, func) {
 }
 
 module.exports = ReactPerf;
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"_process":2}],405:[function(require,module,exports){
+},{"_process":2}],387:[function(_dereq_,module,exports){
 (function (process){
 /**
  * Copyright 2013-2015, Facebook, Inc.
@@ -64043,9 +66289,9 @@ if (process.env.NODE_ENV !== 'production') {
 }
 
 module.exports = ReactPropTypeLocationNames;
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"_process":2}],406:[function(require,module,exports){
+},{"_process":2}],388:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -64059,7 +66305,7 @@ module.exports = ReactPropTypeLocationNames;
 
 'use strict';
 
-var keyMirror = require('fbjs/lib/keyMirror');
+var keyMirror = _dereq_('fbjs/lib/keyMirror');
 
 var ReactPropTypeLocations = keyMirror({
   prop: null,
@@ -64068,7 +66314,7 @@ var ReactPropTypeLocations = keyMirror({
 });
 
 module.exports = ReactPropTypeLocations;
-},{"fbjs/lib/keyMirror":484}],407:[function(require,module,exports){
+},{"fbjs/lib/keyMirror":466}],389:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -64082,11 +66328,11 @@ module.exports = ReactPropTypeLocations;
 
 'use strict';
 
-var ReactElement = require('./ReactElement');
-var ReactPropTypeLocationNames = require('./ReactPropTypeLocationNames');
+var ReactElement = _dereq_('./ReactElement');
+var ReactPropTypeLocationNames = _dereq_('./ReactPropTypeLocationNames');
 
-var emptyFunction = require('fbjs/lib/emptyFunction');
-var getIteratorFn = require('./getIteratorFn');
+var emptyFunction = _dereq_('fbjs/lib/emptyFunction');
+var getIteratorFn = _dereq_('./getIteratorFn');
 
 /**
  * Collection of methods that allow declaration and validation of props that are
@@ -64425,7 +66671,7 @@ function getClassName(propValue) {
 }
 
 module.exports = ReactPropTypes;
-},{"./ReactElement":385,"./ReactPropTypeLocationNames":405,"./getIteratorFn":451,"fbjs/lib/emptyFunction":473}],408:[function(require,module,exports){
+},{"./ReactElement":367,"./ReactPropTypeLocationNames":387,"./getIteratorFn":433,"fbjs/lib/emptyFunction":455}],390:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -64440,14 +66686,14 @@ module.exports = ReactPropTypes;
 
 'use strict';
 
-var CallbackQueue = require('./CallbackQueue');
-var PooledClass = require('./PooledClass');
-var ReactBrowserEventEmitter = require('./ReactBrowserEventEmitter');
-var ReactDOMFeatureFlags = require('./ReactDOMFeatureFlags');
-var ReactInputSelection = require('./ReactInputSelection');
-var Transaction = require('./Transaction');
+var CallbackQueue = _dereq_('./CallbackQueue');
+var PooledClass = _dereq_('./PooledClass');
+var ReactBrowserEventEmitter = _dereq_('./ReactBrowserEventEmitter');
+var ReactDOMFeatureFlags = _dereq_('./ReactDOMFeatureFlags');
+var ReactInputSelection = _dereq_('./ReactInputSelection');
+var Transaction = _dereq_('./Transaction');
 
-var assign = require('./Object.assign');
+var assign = _dereq_('./Object.assign');
 
 /**
  * Ensures that, when possible, the selection range (currently selected text
@@ -64577,7 +66823,7 @@ assign(ReactReconcileTransaction.prototype, Transaction.Mixin, Mixin);
 PooledClass.addPoolingTo(ReactReconcileTransaction);
 
 module.exports = ReactReconcileTransaction;
-},{"./CallbackQueue":336,"./Object.assign":353,"./PooledClass":354,"./ReactBrowserEventEmitter":357,"./ReactDOMFeatureFlags":372,"./ReactInputSelection":393,"./Transaction":436}],409:[function(require,module,exports){
+},{"./CallbackQueue":318,"./Object.assign":335,"./PooledClass":336,"./ReactBrowserEventEmitter":339,"./ReactDOMFeatureFlags":354,"./ReactInputSelection":375,"./Transaction":418}],391:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -64591,7 +66837,7 @@ module.exports = ReactReconcileTransaction;
 
 'use strict';
 
-var ReactRef = require('./ReactRef');
+var ReactRef = _dereq_('./ReactRef');
 
 /**
  * Helper to call ReactRef.attachRefs with this composite component, split out
@@ -64685,7 +66931,7 @@ var ReactReconciler = {
 };
 
 module.exports = ReactReconciler;
-},{"./ReactRef":410}],410:[function(require,module,exports){
+},{"./ReactRef":392}],392:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -64699,7 +66945,7 @@ module.exports = ReactReconciler;
 
 'use strict';
 
-var ReactOwner = require('./ReactOwner');
+var ReactOwner = _dereq_('./ReactOwner');
 
 var ReactRef = {};
 
@@ -64764,7 +67010,7 @@ ReactRef.detachRefs = function (instance, element) {
 };
 
 module.exports = ReactRef;
-},{"./ReactOwner":403}],411:[function(require,module,exports){
+},{"./ReactOwner":385}],393:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -64794,7 +67040,7 @@ var ReactRootIndex = {
 };
 
 module.exports = ReactRootIndex;
-},{}],412:[function(require,module,exports){
+},{}],394:[function(_dereq_,module,exports){
 /**
  * Copyright 2014-2015, Facebook, Inc.
  * All rights reserved.
@@ -64818,7 +67064,7 @@ var ReactServerBatchingStrategy = {
 };
 
 module.exports = ReactServerBatchingStrategy;
-},{}],413:[function(require,module,exports){
+},{}],395:[function(_dereq_,module,exports){
 (function (process){
 /**
  * Copyright 2013-2015, Facebook, Inc.
@@ -64833,17 +67079,17 @@ module.exports = ReactServerBatchingStrategy;
  */
 'use strict';
 
-var ReactDefaultBatchingStrategy = require('./ReactDefaultBatchingStrategy');
-var ReactElement = require('./ReactElement');
-var ReactInstanceHandles = require('./ReactInstanceHandles');
-var ReactMarkupChecksum = require('./ReactMarkupChecksum');
-var ReactServerBatchingStrategy = require('./ReactServerBatchingStrategy');
-var ReactServerRenderingTransaction = require('./ReactServerRenderingTransaction');
-var ReactUpdates = require('./ReactUpdates');
+var ReactDefaultBatchingStrategy = _dereq_('./ReactDefaultBatchingStrategy');
+var ReactElement = _dereq_('./ReactElement');
+var ReactInstanceHandles = _dereq_('./ReactInstanceHandles');
+var ReactMarkupChecksum = _dereq_('./ReactMarkupChecksum');
+var ReactServerBatchingStrategy = _dereq_('./ReactServerBatchingStrategy');
+var ReactServerRenderingTransaction = _dereq_('./ReactServerRenderingTransaction');
+var ReactUpdates = _dereq_('./ReactUpdates');
 
-var emptyObject = require('fbjs/lib/emptyObject');
-var instantiateReactComponent = require('./instantiateReactComponent');
-var invariant = require('fbjs/lib/invariant');
+var emptyObject = _dereq_('fbjs/lib/emptyObject');
+var instantiateReactComponent = _dereq_('./instantiateReactComponent');
+var invariant = _dereq_('fbjs/lib/invariant');
 
 /**
  * @param {ReactElement} element
@@ -64903,9 +67149,9 @@ module.exports = {
   renderToString: renderToString,
   renderToStaticMarkup: renderToStaticMarkup
 };
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"./ReactDefaultBatchingStrategy":381,"./ReactElement":385,"./ReactInstanceHandles":394,"./ReactMarkupChecksum":397,"./ReactServerBatchingStrategy":412,"./ReactServerRenderingTransaction":414,"./ReactUpdates":419,"./instantiateReactComponent":454,"_process":2,"fbjs/lib/emptyObject":474,"fbjs/lib/invariant":481}],414:[function(require,module,exports){
+},{"./ReactDefaultBatchingStrategy":363,"./ReactElement":367,"./ReactInstanceHandles":376,"./ReactMarkupChecksum":379,"./ReactServerBatchingStrategy":394,"./ReactServerRenderingTransaction":396,"./ReactUpdates":401,"./instantiateReactComponent":436,"_process":2,"fbjs/lib/emptyObject":456,"fbjs/lib/invariant":463}],396:[function(_dereq_,module,exports){
 /**
  * Copyright 2014-2015, Facebook, Inc.
  * All rights reserved.
@@ -64920,12 +67166,12 @@ module.exports = {
 
 'use strict';
 
-var PooledClass = require('./PooledClass');
-var CallbackQueue = require('./CallbackQueue');
-var Transaction = require('./Transaction');
+var PooledClass = _dereq_('./PooledClass');
+var CallbackQueue = _dereq_('./CallbackQueue');
+var Transaction = _dereq_('./Transaction');
 
-var assign = require('./Object.assign');
-var emptyFunction = require('fbjs/lib/emptyFunction');
+var assign = _dereq_('./Object.assign');
+var emptyFunction = _dereq_('fbjs/lib/emptyFunction');
 
 /**
  * Provides a `CallbackQueue` queue for collecting `onDOMReady` callbacks
@@ -64993,7 +67239,7 @@ assign(ReactServerRenderingTransaction.prototype, Transaction.Mixin, Mixin);
 PooledClass.addPoolingTo(ReactServerRenderingTransaction);
 
 module.exports = ReactServerRenderingTransaction;
-},{"./CallbackQueue":336,"./Object.assign":353,"./PooledClass":354,"./Transaction":436,"fbjs/lib/emptyFunction":473}],415:[function(require,module,exports){
+},{"./CallbackQueue":318,"./Object.assign":335,"./PooledClass":336,"./Transaction":418,"fbjs/lib/emptyFunction":455}],397:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -65008,7 +67254,7 @@ module.exports = ReactServerRenderingTransaction;
 
 'use strict';
 
-var flattenChildren = require('./flattenChildren');
+var flattenChildren = _dereq_('./flattenChildren');
 
 var ReactTransitionChildMapping = {
   /**
@@ -65092,7 +67338,7 @@ var ReactTransitionChildMapping = {
 };
 
 module.exports = ReactTransitionChildMapping;
-},{"./flattenChildren":445}],416:[function(require,module,exports){
+},{"./flattenChildren":427}],398:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -65106,7 +67352,7 @@ module.exports = ReactTransitionChildMapping;
 
 'use strict';
 
-var ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');
+var ExecutionEnvironment = _dereq_('fbjs/lib/ExecutionEnvironment');
 
 /**
  * EVENT_NAME_MAP is used to determine which event fired when a
@@ -65202,7 +67448,7 @@ var ReactTransitionEvents = {
 };
 
 module.exports = ReactTransitionEvents;
-},{"fbjs/lib/ExecutionEnvironment":467}],417:[function(require,module,exports){
+},{"fbjs/lib/ExecutionEnvironment":449}],399:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -65216,11 +67462,11 @@ module.exports = ReactTransitionEvents;
 
 'use strict';
 
-var React = require('./React');
-var ReactTransitionChildMapping = require('./ReactTransitionChildMapping');
+var React = _dereq_('./React');
+var ReactTransitionChildMapping = _dereq_('./ReactTransitionChildMapping');
 
-var assign = require('./Object.assign');
-var emptyFunction = require('fbjs/lib/emptyFunction');
+var assign = _dereq_('./Object.assign');
+var emptyFunction = _dereq_('fbjs/lib/emptyFunction');
 
 var ReactTransitionGroup = React.createClass({
   displayName: 'ReactTransitionGroup',
@@ -65408,7 +67654,7 @@ var ReactTransitionGroup = React.createClass({
 });
 
 module.exports = ReactTransitionGroup;
-},{"./Object.assign":353,"./React":355,"./ReactTransitionChildMapping":415,"fbjs/lib/emptyFunction":473}],418:[function(require,module,exports){
+},{"./Object.assign":335,"./React":337,"./ReactTransitionChildMapping":397,"fbjs/lib/emptyFunction":455}],400:[function(_dereq_,module,exports){
 (function (process){
 /**
  * Copyright 2015, Facebook, Inc.
@@ -65423,14 +67669,14 @@ module.exports = ReactTransitionGroup;
 
 'use strict';
 
-var ReactCurrentOwner = require('./ReactCurrentOwner');
-var ReactElement = require('./ReactElement');
-var ReactInstanceMap = require('./ReactInstanceMap');
-var ReactUpdates = require('./ReactUpdates');
+var ReactCurrentOwner = _dereq_('./ReactCurrentOwner');
+var ReactElement = _dereq_('./ReactElement');
+var ReactInstanceMap = _dereq_('./ReactInstanceMap');
+var ReactUpdates = _dereq_('./ReactUpdates');
 
-var assign = require('./Object.assign');
-var invariant = require('fbjs/lib/invariant');
-var warning = require('fbjs/lib/warning');
+var assign = _dereq_('./Object.assign');
+var invariant = _dereq_('fbjs/lib/invariant');
+var warning = _dereq_('fbjs/lib/warning');
 
 function enqueueUpdate(internalInstance) {
   ReactUpdates.enqueueUpdate(internalInstance);
@@ -65667,9 +67913,9 @@ var ReactUpdateQueue = {
 };
 
 module.exports = ReactUpdateQueue;
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"./Object.assign":353,"./ReactCurrentOwner":367,"./ReactElement":385,"./ReactInstanceMap":395,"./ReactUpdates":419,"_process":2,"fbjs/lib/invariant":481,"fbjs/lib/warning":492}],419:[function(require,module,exports){
+},{"./Object.assign":335,"./ReactCurrentOwner":349,"./ReactElement":367,"./ReactInstanceMap":377,"./ReactUpdates":401,"_process":2,"fbjs/lib/invariant":463,"fbjs/lib/warning":474}],401:[function(_dereq_,module,exports){
 (function (process){
 /**
  * Copyright 2013-2015, Facebook, Inc.
@@ -65684,14 +67930,14 @@ module.exports = ReactUpdateQueue;
 
 'use strict';
 
-var CallbackQueue = require('./CallbackQueue');
-var PooledClass = require('./PooledClass');
-var ReactPerf = require('./ReactPerf');
-var ReactReconciler = require('./ReactReconciler');
-var Transaction = require('./Transaction');
+var CallbackQueue = _dereq_('./CallbackQueue');
+var PooledClass = _dereq_('./PooledClass');
+var ReactPerf = _dereq_('./ReactPerf');
+var ReactReconciler = _dereq_('./ReactReconciler');
+var Transaction = _dereq_('./Transaction');
 
-var assign = require('./Object.assign');
-var invariant = require('fbjs/lib/invariant');
+var assign = _dereq_('./Object.assign');
+var invariant = _dereq_('fbjs/lib/invariant');
 
 var dirtyComponents = [];
 var asapCallbackQueue = CallbackQueue.getPooled();
@@ -65894,9 +68140,9 @@ var ReactUpdates = {
 };
 
 module.exports = ReactUpdates;
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"./CallbackQueue":336,"./Object.assign":353,"./PooledClass":354,"./ReactPerf":404,"./ReactReconciler":409,"./Transaction":436,"_process":2,"fbjs/lib/invariant":481}],420:[function(require,module,exports){
+},{"./CallbackQueue":318,"./Object.assign":335,"./PooledClass":336,"./ReactPerf":386,"./ReactReconciler":391,"./Transaction":418,"_process":2,"fbjs/lib/invariant":463}],402:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -65910,8 +68156,8 @@ module.exports = ReactUpdates;
 
 'use strict';
 
-module.exports = '0.14.6';
-},{}],421:[function(require,module,exports){
+module.exports = '0.14.8';
+},{}],403:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -65925,7 +68171,7 @@ module.exports = '0.14.6';
 
 'use strict';
 
-var DOMProperty = require('./DOMProperty');
+var DOMProperty = _dereq_('./DOMProperty');
 
 var MUST_USE_ATTRIBUTE = DOMProperty.injection.MUST_USE_ATTRIBUTE;
 
@@ -66039,7 +68285,7 @@ var SVGDOMPropertyConfig = {
 };
 
 module.exports = SVGDOMPropertyConfig;
-},{"./DOMProperty":340}],422:[function(require,module,exports){
+},{"./DOMProperty":322}],404:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -66053,16 +68299,16 @@ module.exports = SVGDOMPropertyConfig;
 
 'use strict';
 
-var EventConstants = require('./EventConstants');
-var EventPropagators = require('./EventPropagators');
-var ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');
-var ReactInputSelection = require('./ReactInputSelection');
-var SyntheticEvent = require('./SyntheticEvent');
+var EventConstants = _dereq_('./EventConstants');
+var EventPropagators = _dereq_('./EventPropagators');
+var ExecutionEnvironment = _dereq_('fbjs/lib/ExecutionEnvironment');
+var ReactInputSelection = _dereq_('./ReactInputSelection');
+var SyntheticEvent = _dereq_('./SyntheticEvent');
 
-var getActiveElement = require('fbjs/lib/getActiveElement');
-var isTextInputElement = require('./isTextInputElement');
-var keyOf = require('fbjs/lib/keyOf');
-var shallowEqual = require('fbjs/lib/shallowEqual');
+var getActiveElement = _dereq_('fbjs/lib/getActiveElement');
+var isTextInputElement = _dereq_('./isTextInputElement');
+var keyOf = _dereq_('fbjs/lib/keyOf');
+var shallowEqual = _dereq_('fbjs/lib/shallowEqual');
 
 var topLevelTypes = EventConstants.topLevelTypes;
 
@@ -66241,7 +68487,7 @@ var SelectEventPlugin = {
 };
 
 module.exports = SelectEventPlugin;
-},{"./EventConstants":345,"./EventPropagators":349,"./ReactInputSelection":393,"./SyntheticEvent":428,"./isTextInputElement":456,"fbjs/lib/ExecutionEnvironment":467,"fbjs/lib/getActiveElement":476,"fbjs/lib/keyOf":485,"fbjs/lib/shallowEqual":490}],423:[function(require,module,exports){
+},{"./EventConstants":327,"./EventPropagators":331,"./ReactInputSelection":375,"./SyntheticEvent":410,"./isTextInputElement":438,"fbjs/lib/ExecutionEnvironment":449,"fbjs/lib/getActiveElement":458,"fbjs/lib/keyOf":467,"fbjs/lib/shallowEqual":472}],405:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -66271,7 +68517,7 @@ var ServerReactRootIndex = {
 };
 
 module.exports = ServerReactRootIndex;
-},{}],424:[function(require,module,exports){
+},{}],406:[function(_dereq_,module,exports){
 (function (process){
 /**
  * Copyright 2013-2015, Facebook, Inc.
@@ -66286,24 +68532,24 @@ module.exports = ServerReactRootIndex;
 
 'use strict';
 
-var EventConstants = require('./EventConstants');
-var EventListener = require('fbjs/lib/EventListener');
-var EventPropagators = require('./EventPropagators');
-var ReactMount = require('./ReactMount');
-var SyntheticClipboardEvent = require('./SyntheticClipboardEvent');
-var SyntheticEvent = require('./SyntheticEvent');
-var SyntheticFocusEvent = require('./SyntheticFocusEvent');
-var SyntheticKeyboardEvent = require('./SyntheticKeyboardEvent');
-var SyntheticMouseEvent = require('./SyntheticMouseEvent');
-var SyntheticDragEvent = require('./SyntheticDragEvent');
-var SyntheticTouchEvent = require('./SyntheticTouchEvent');
-var SyntheticUIEvent = require('./SyntheticUIEvent');
-var SyntheticWheelEvent = require('./SyntheticWheelEvent');
-
-var emptyFunction = require('fbjs/lib/emptyFunction');
-var getEventCharCode = require('./getEventCharCode');
-var invariant = require('fbjs/lib/invariant');
-var keyOf = require('fbjs/lib/keyOf');
+var EventConstants = _dereq_('./EventConstants');
+var EventListener = _dereq_('fbjs/lib/EventListener');
+var EventPropagators = _dereq_('./EventPropagators');
+var ReactMount = _dereq_('./ReactMount');
+var SyntheticClipboardEvent = _dereq_('./SyntheticClipboardEvent');
+var SyntheticEvent = _dereq_('./SyntheticEvent');
+var SyntheticFocusEvent = _dereq_('./SyntheticFocusEvent');
+var SyntheticKeyboardEvent = _dereq_('./SyntheticKeyboardEvent');
+var SyntheticMouseEvent = _dereq_('./SyntheticMouseEvent');
+var SyntheticDragEvent = _dereq_('./SyntheticDragEvent');
+var SyntheticTouchEvent = _dereq_('./SyntheticTouchEvent');
+var SyntheticUIEvent = _dereq_('./SyntheticUIEvent');
+var SyntheticWheelEvent = _dereq_('./SyntheticWheelEvent');
+
+var emptyFunction = _dereq_('fbjs/lib/emptyFunction');
+var getEventCharCode = _dereq_('./getEventCharCode');
+var invariant = _dereq_('fbjs/lib/invariant');
+var keyOf = _dereq_('fbjs/lib/keyOf');
 
 var topLevelTypes = EventConstants.topLevelTypes;
 
@@ -66860,9 +69106,9 @@ var SimpleEventPlugin = {
 };
 
 module.exports = SimpleEventPlugin;
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"./EventConstants":345,"./EventPropagators":349,"./ReactMount":398,"./SyntheticClipboardEvent":425,"./SyntheticDragEvent":427,"./SyntheticEvent":428,"./SyntheticFocusEvent":429,"./SyntheticKeyboardEvent":431,"./SyntheticMouseEvent":432,"./SyntheticTouchEvent":433,"./SyntheticUIEvent":434,"./SyntheticWheelEvent":435,"./getEventCharCode":447,"_process":2,"fbjs/lib/EventListener":466,"fbjs/lib/emptyFunction":473,"fbjs/lib/invariant":481,"fbjs/lib/keyOf":485}],425:[function(require,module,exports){
+},{"./EventConstants":327,"./EventPropagators":331,"./ReactMount":380,"./SyntheticClipboardEvent":407,"./SyntheticDragEvent":409,"./SyntheticEvent":410,"./SyntheticFocusEvent":411,"./SyntheticKeyboardEvent":413,"./SyntheticMouseEvent":414,"./SyntheticTouchEvent":415,"./SyntheticUIEvent":416,"./SyntheticWheelEvent":417,"./getEventCharCode":429,"_process":2,"fbjs/lib/EventListener":448,"fbjs/lib/emptyFunction":455,"fbjs/lib/invariant":463,"fbjs/lib/keyOf":467}],407:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -66877,7 +69123,7 @@ module.exports = SimpleEventPlugin;
 
 'use strict';
 
-var SyntheticEvent = require('./SyntheticEvent');
+var SyntheticEvent = _dereq_('./SyntheticEvent');
 
 /**
  * @interface Event
@@ -66902,7 +69148,7 @@ function SyntheticClipboardEvent(dispatchConfig, dispatchMarker, nativeEvent, na
 SyntheticEvent.augmentClass(SyntheticClipboardEvent, ClipboardEventInterface);
 
 module.exports = SyntheticClipboardEvent;
-},{"./SyntheticEvent":428}],426:[function(require,module,exports){
+},{"./SyntheticEvent":410}],408:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -66917,7 +69163,7 @@ module.exports = SyntheticClipboardEvent;
 
 'use strict';
 
-var SyntheticEvent = require('./SyntheticEvent');
+var SyntheticEvent = _dereq_('./SyntheticEvent');
 
 /**
  * @interface Event
@@ -66940,7 +69186,7 @@ function SyntheticCompositionEvent(dispatchConfig, dispatchMarker, nativeEvent,
 SyntheticEvent.augmentClass(SyntheticCompositionEvent, CompositionEventInterface);
 
 module.exports = SyntheticCompositionEvent;
-},{"./SyntheticEvent":428}],427:[function(require,module,exports){
+},{"./SyntheticEvent":410}],409:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -66955,7 +69201,7 @@ module.exports = SyntheticCompositionEvent;
 
 'use strict';
 
-var SyntheticMouseEvent = require('./SyntheticMouseEvent');
+var SyntheticMouseEvent = _dereq_('./SyntheticMouseEvent');
 
 /**
  * @interface DragEvent
@@ -66978,7 +69224,7 @@ function SyntheticDragEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeE
 SyntheticMouseEvent.augmentClass(SyntheticDragEvent, DragEventInterface);
 
 module.exports = SyntheticDragEvent;
-},{"./SyntheticMouseEvent":432}],428:[function(require,module,exports){
+},{"./SyntheticMouseEvent":414}],410:[function(_dereq_,module,exports){
 (function (process){
 /**
  * Copyright 2013-2015, Facebook, Inc.
@@ -66994,11 +69240,11 @@ module.exports = SyntheticDragEvent;
 
 'use strict';
 
-var PooledClass = require('./PooledClass');
+var PooledClass = _dereq_('./PooledClass');
 
-var assign = require('./Object.assign');
-var emptyFunction = require('fbjs/lib/emptyFunction');
-var warning = require('fbjs/lib/warning');
+var assign = _dereq_('./Object.assign');
+var emptyFunction = _dereq_('fbjs/lib/emptyFunction');
+var warning = _dereq_('fbjs/lib/warning');
 
 /**
  * @interface Event
@@ -67006,6 +69252,7 @@ var warning = require('fbjs/lib/warning');
  */
 var EventInterface = {
   type: null,
+  target: null,
   // currentTarget is set when dispatching; no use in copying it here
   currentTarget: emptyFunction.thatReturnsNull,
   eventPhase: null,
@@ -67039,8 +69286,6 @@ function SyntheticEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEvent
   this.dispatchConfig = dispatchConfig;
   this.dispatchMarker = dispatchMarker;
   this.nativeEvent = nativeEvent;
-  this.target = nativeEventTarget;
-  this.currentTarget = nativeEventTarget;
 
   var Interface = this.constructor.Interface;
   for (var propName in Interface) {
@@ -67051,7 +69296,11 @@ function SyntheticEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEvent
     if (normalize) {
       this[propName] = normalize(nativeEvent);
     } else {
-      this[propName] = nativeEvent[propName];
+      if (propName === 'target') {
+        this.target = nativeEventTarget;
+      } else {
+        this[propName] = nativeEvent[propName];
+      }
     }
   }
 
@@ -67157,9 +69406,9 @@ SyntheticEvent.augmentClass = function (Class, Interface) {
 PooledClass.addPoolingTo(SyntheticEvent, PooledClass.fourArgumentPooler);
 
 module.exports = SyntheticEvent;
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"./Object.assign":353,"./PooledClass":354,"_process":2,"fbjs/lib/emptyFunction":473,"fbjs/lib/warning":492}],429:[function(require,module,exports){
+},{"./Object.assign":335,"./PooledClass":336,"_process":2,"fbjs/lib/emptyFunction":455,"fbjs/lib/warning":474}],411:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -67174,7 +69423,7 @@ module.exports = SyntheticEvent;
 
 'use strict';
 
-var SyntheticUIEvent = require('./SyntheticUIEvent');
+var SyntheticUIEvent = _dereq_('./SyntheticUIEvent');
 
 /**
  * @interface FocusEvent
@@ -67197,7 +69446,7 @@ function SyntheticFocusEvent(dispatchConfig, dispatchMarker, nativeEvent, native
 SyntheticUIEvent.augmentClass(SyntheticFocusEvent, FocusEventInterface);
 
 module.exports = SyntheticFocusEvent;
-},{"./SyntheticUIEvent":434}],430:[function(require,module,exports){
+},{"./SyntheticUIEvent":416}],412:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -67212,7 +69461,7 @@ module.exports = SyntheticFocusEvent;
 
 'use strict';
 
-var SyntheticEvent = require('./SyntheticEvent');
+var SyntheticEvent = _dereq_('./SyntheticEvent');
 
 /**
  * @interface Event
@@ -67236,7 +69485,7 @@ function SyntheticInputEvent(dispatchConfig, dispatchMarker, nativeEvent, native
 SyntheticEvent.augmentClass(SyntheticInputEvent, InputEventInterface);
 
 module.exports = SyntheticInputEvent;
-},{"./SyntheticEvent":428}],431:[function(require,module,exports){
+},{"./SyntheticEvent":410}],413:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -67251,11 +69500,11 @@ module.exports = SyntheticInputEvent;
 
 'use strict';
 
-var SyntheticUIEvent = require('./SyntheticUIEvent');
+var SyntheticUIEvent = _dereq_('./SyntheticUIEvent');
 
-var getEventCharCode = require('./getEventCharCode');
-var getEventKey = require('./getEventKey');
-var getEventModifierState = require('./getEventModifierState');
+var getEventCharCode = _dereq_('./getEventCharCode');
+var getEventKey = _dereq_('./getEventKey');
+var getEventModifierState = _dereq_('./getEventModifierState');
 
 /**
  * @interface KeyboardEvent
@@ -67322,7 +69571,7 @@ function SyntheticKeyboardEvent(dispatchConfig, dispatchMarker, nativeEvent, nat
 SyntheticUIEvent.augmentClass(SyntheticKeyboardEvent, KeyboardEventInterface);
 
 module.exports = SyntheticKeyboardEvent;
-},{"./SyntheticUIEvent":434,"./getEventCharCode":447,"./getEventKey":448,"./getEventModifierState":449}],432:[function(require,module,exports){
+},{"./SyntheticUIEvent":416,"./getEventCharCode":429,"./getEventKey":430,"./getEventModifierState":431}],414:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -67337,10 +69586,10 @@ module.exports = SyntheticKeyboardEvent;
 
 'use strict';
 
-var SyntheticUIEvent = require('./SyntheticUIEvent');
-var ViewportMetrics = require('./ViewportMetrics');
+var SyntheticUIEvent = _dereq_('./SyntheticUIEvent');
+var ViewportMetrics = _dereq_('./ViewportMetrics');
 
-var getEventModifierState = require('./getEventModifierState');
+var getEventModifierState = _dereq_('./getEventModifierState');
 
 /**
  * @interface MouseEvent
@@ -67396,7 +69645,7 @@ function SyntheticMouseEvent(dispatchConfig, dispatchMarker, nativeEvent, native
 SyntheticUIEvent.augmentClass(SyntheticMouseEvent, MouseEventInterface);
 
 module.exports = SyntheticMouseEvent;
-},{"./SyntheticUIEvent":434,"./ViewportMetrics":437,"./getEventModifierState":449}],433:[function(require,module,exports){
+},{"./SyntheticUIEvent":416,"./ViewportMetrics":419,"./getEventModifierState":431}],415:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -67411,9 +69660,9 @@ module.exports = SyntheticMouseEvent;
 
 'use strict';
 
-var SyntheticUIEvent = require('./SyntheticUIEvent');
+var SyntheticUIEvent = _dereq_('./SyntheticUIEvent');
 
-var getEventModifierState = require('./getEventModifierState');
+var getEventModifierState = _dereq_('./getEventModifierState');
 
 /**
  * @interface TouchEvent
@@ -67443,7 +69692,7 @@ function SyntheticTouchEvent(dispatchConfig, dispatchMarker, nativeEvent, native
 SyntheticUIEvent.augmentClass(SyntheticTouchEvent, TouchEventInterface);
 
 module.exports = SyntheticTouchEvent;
-},{"./SyntheticUIEvent":434,"./getEventModifierState":449}],434:[function(require,module,exports){
+},{"./SyntheticUIEvent":416,"./getEventModifierState":431}],416:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -67458,9 +69707,9 @@ module.exports = SyntheticTouchEvent;
 
 'use strict';
 
-var SyntheticEvent = require('./SyntheticEvent');
+var SyntheticEvent = _dereq_('./SyntheticEvent');
 
-var getEventTarget = require('./getEventTarget');
+var getEventTarget = _dereq_('./getEventTarget');
 
 /**
  * @interface UIEvent
@@ -67504,7 +69753,7 @@ function SyntheticUIEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEve
 SyntheticEvent.augmentClass(SyntheticUIEvent, UIEventInterface);
 
 module.exports = SyntheticUIEvent;
-},{"./SyntheticEvent":428,"./getEventTarget":450}],435:[function(require,module,exports){
+},{"./SyntheticEvent":410,"./getEventTarget":432}],417:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -67519,7 +69768,7 @@ module.exports = SyntheticUIEvent;
 
 'use strict';
 
-var SyntheticMouseEvent = require('./SyntheticMouseEvent');
+var SyntheticMouseEvent = _dereq_('./SyntheticMouseEvent');
 
 /**
  * @interface WheelEvent
@@ -67560,7 +69809,7 @@ function SyntheticWheelEvent(dispatchConfig, dispatchMarker, nativeEvent, native
 SyntheticMouseEvent.augmentClass(SyntheticWheelEvent, WheelEventInterface);
 
 module.exports = SyntheticWheelEvent;
-},{"./SyntheticMouseEvent":432}],436:[function(require,module,exports){
+},{"./SyntheticMouseEvent":414}],418:[function(_dereq_,module,exports){
 (function (process){
 /**
  * Copyright 2013-2015, Facebook, Inc.
@@ -67575,7 +69824,7 @@ module.exports = SyntheticWheelEvent;
 
 'use strict';
 
-var invariant = require('fbjs/lib/invariant');
+var invariant = _dereq_('fbjs/lib/invariant');
 
 /**
  * `Transaction` creates a black box that is able to wrap any method such that
@@ -67793,9 +70042,9 @@ var Transaction = {
 };
 
 module.exports = Transaction;
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"_process":2,"fbjs/lib/invariant":481}],437:[function(require,module,exports){
+},{"_process":2,"fbjs/lib/invariant":463}],419:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -67823,7 +70072,7 @@ var ViewportMetrics = {
 };
 
 module.exports = ViewportMetrics;
-},{}],438:[function(require,module,exports){
+},{}],420:[function(_dereq_,module,exports){
 (function (process){
 /**
  * Copyright 2014-2015, Facebook, Inc.
@@ -67838,7 +70087,7 @@ module.exports = ViewportMetrics;
 
 'use strict';
 
-var invariant = require('fbjs/lib/invariant');
+var invariant = _dereq_('fbjs/lib/invariant');
 
 /**
  *
@@ -67884,9 +70133,9 @@ function accumulateInto(current, next) {
 }
 
 module.exports = accumulateInto;
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"_process":2,"fbjs/lib/invariant":481}],439:[function(require,module,exports){
+},{"_process":2,"fbjs/lib/invariant":463}],421:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -67929,7 +70178,7 @@ function adler32(data) {
 }
 
 module.exports = adler32;
-},{}],440:[function(require,module,exports){
+},{}],422:[function(_dereq_,module,exports){
 (function (process){
 /**
  * Copyright 2013-2015, Facebook, Inc.
@@ -67955,9 +70204,9 @@ if (process.env.NODE_ENV !== 'production') {
 }
 
 module.exports = canDefineProperty;
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"_process":2}],441:[function(require,module,exports){
+},{"_process":2}],423:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -67972,7 +70221,7 @@ module.exports = canDefineProperty;
 
 'use strict';
 
-var CSSProperty = require('./CSSProperty');
+var CSSProperty = _dereq_('./CSSProperty');
 
 var isUnitlessNumber = CSSProperty.isUnitlessNumber;
 
@@ -68013,7 +70262,7 @@ function dangerousStyleValue(name, value) {
 }
 
 module.exports = dangerousStyleValue;
-},{"./CSSProperty":334}],442:[function(require,module,exports){
+},{"./CSSProperty":316}],424:[function(_dereq_,module,exports){
 (function (process){
 /**
  * Copyright 2013-2015, Facebook, Inc.
@@ -68028,8 +70277,8 @@ module.exports = dangerousStyleValue;
 
 'use strict';
 
-var assign = require('./Object.assign');
-var warning = require('fbjs/lib/warning');
+var assign = _dereq_('./Object.assign');
+var warning = _dereq_('fbjs/lib/warning');
 
 /**
  * This will log a single deprecation notice per function and forward the call
@@ -68063,9 +70312,9 @@ function deprecated(fnName, newModule, newPackage, ctx, fn) {
 }
 
 module.exports = deprecated;
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"./Object.assign":353,"_process":2,"fbjs/lib/warning":492}],443:[function(require,module,exports){
+},{"./Object.assign":335,"_process":2,"fbjs/lib/warning":474}],425:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -68104,7 +70353,7 @@ function escapeTextContentForBrowser(text) {
 }
 
 module.exports = escapeTextContentForBrowser;
-},{}],444:[function(require,module,exports){
+},{}],426:[function(_dereq_,module,exports){
 (function (process){
 /**
  * Copyright 2013-2015, Facebook, Inc.
@@ -68120,12 +70369,12 @@ module.exports = escapeTextContentForBrowser;
 
 'use strict';
 
-var ReactCurrentOwner = require('./ReactCurrentOwner');
-var ReactInstanceMap = require('./ReactInstanceMap');
-var ReactMount = require('./ReactMount');
+var ReactCurrentOwner = _dereq_('./ReactCurrentOwner');
+var ReactInstanceMap = _dereq_('./ReactInstanceMap');
+var ReactMount = _dereq_('./ReactMount');
 
-var invariant = require('fbjs/lib/invariant');
-var warning = require('fbjs/lib/warning');
+var invariant = _dereq_('fbjs/lib/invariant');
+var warning = _dereq_('fbjs/lib/warning');
 
 /**
  * Returns the DOM node rendered by this element.
@@ -68155,9 +70404,9 @@ function findDOMNode(componentOrElement) {
 }
 
 module.exports = findDOMNode;
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"./ReactCurrentOwner":367,"./ReactInstanceMap":395,"./ReactMount":398,"_process":2,"fbjs/lib/invariant":481,"fbjs/lib/warning":492}],445:[function(require,module,exports){
+},{"./ReactCurrentOwner":349,"./ReactInstanceMap":377,"./ReactMount":380,"_process":2,"fbjs/lib/invariant":463,"fbjs/lib/warning":474}],427:[function(_dereq_,module,exports){
 (function (process){
 /**
  * Copyright 2013-2015, Facebook, Inc.
@@ -68172,8 +70421,8 @@ module.exports = findDOMNode;
 
 'use strict';
 
-var traverseAllChildren = require('./traverseAllChildren');
-var warning = require('fbjs/lib/warning');
+var traverseAllChildren = _dereq_('./traverseAllChildren');
+var warning = _dereq_('fbjs/lib/warning');
 
 /**
  * @param {function} traverseContext Context passed through traversal.
@@ -68207,9 +70456,9 @@ function flattenChildren(children) {
 }
 
 module.exports = flattenChildren;
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"./traverseAllChildren":463,"_process":2,"fbjs/lib/warning":492}],446:[function(require,module,exports){
+},{"./traverseAllChildren":445,"_process":2,"fbjs/lib/warning":474}],428:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -68239,7 +70488,7 @@ var forEachAccumulated = function (arr, cb, scope) {
 };
 
 module.exports = forEachAccumulated;
-},{}],447:[function(require,module,exports){
+},{}],429:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -68290,7 +70539,7 @@ function getEventCharCode(nativeEvent) {
 }
 
 module.exports = getEventCharCode;
-},{}],448:[function(require,module,exports){
+},{}],430:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -68305,7 +70554,7 @@ module.exports = getEventCharCode;
 
 'use strict';
 
-var getEventCharCode = require('./getEventCharCode');
+var getEventCharCode = _dereq_('./getEventCharCode');
 
 /**
  * Normalization of deprecated HTML5 `key` values
@@ -68394,7 +70643,7 @@ function getEventKey(nativeEvent) {
 }
 
 module.exports = getEventKey;
-},{"./getEventCharCode":447}],449:[function(require,module,exports){
+},{"./getEventCharCode":429}],431:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -68439,7 +70688,7 @@ function getEventModifierState(nativeEvent) {
 }
 
 module.exports = getEventModifierState;
-},{}],450:[function(require,module,exports){
+},{}],432:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -68469,7 +70718,7 @@ function getEventTarget(nativeEvent) {
 }
 
 module.exports = getEventTarget;
-},{}],451:[function(require,module,exports){
+},{}],433:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -68510,7 +70759,7 @@ function getIteratorFn(maybeIterable) {
 }
 
 module.exports = getIteratorFn;
-},{}],452:[function(require,module,exports){
+},{}],434:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -68584,7 +70833,7 @@ function getNodeForCharacterOffset(root, offset) {
 }
 
 module.exports = getNodeForCharacterOffset;
-},{}],453:[function(require,module,exports){
+},{}],435:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -68598,7 +70847,7 @@ module.exports = getNodeForCharacterOffset;
 
 'use strict';
 
-var ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');
+var ExecutionEnvironment = _dereq_('fbjs/lib/ExecutionEnvironment');
 
 var contentKey = null;
 
@@ -68618,7 +70867,7 @@ function getTextContentAccessor() {
 }
 
 module.exports = getTextContentAccessor;
-},{"fbjs/lib/ExecutionEnvironment":467}],454:[function(require,module,exports){
+},{"fbjs/lib/ExecutionEnvironment":449}],436:[function(_dereq_,module,exports){
 (function (process){
 /**
  * Copyright 2013-2015, Facebook, Inc.
@@ -68634,13 +70883,13 @@ module.exports = getTextContentAccessor;
 
 'use strict';
 
-var ReactCompositeComponent = require('./ReactCompositeComponent');
-var ReactEmptyComponent = require('./ReactEmptyComponent');
-var ReactNativeComponent = require('./ReactNativeComponent');
+var ReactCompositeComponent = _dereq_('./ReactCompositeComponent');
+var ReactEmptyComponent = _dereq_('./ReactEmptyComponent');
+var ReactNativeComponent = _dereq_('./ReactNativeComponent');
 
-var assign = require('./Object.assign');
-var invariant = require('fbjs/lib/invariant');
-var warning = require('fbjs/lib/warning');
+var assign = _dereq_('./Object.assign');
+var invariant = _dereq_('fbjs/lib/invariant');
+var warning = _dereq_('fbjs/lib/warning');
 
 // To avoid a cyclic dependency, we create the final class in this module
 var ReactCompositeComponentWrapper = function () {};
@@ -68732,9 +70981,9 @@ function instantiateReactComponent(node) {
 }
 
 module.exports = instantiateReactComponent;
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"./Object.assign":353,"./ReactCompositeComponent":366,"./ReactEmptyComponent":387,"./ReactNativeComponent":401,"_process":2,"fbjs/lib/invariant":481,"fbjs/lib/warning":492}],455:[function(require,module,exports){
+},{"./Object.assign":335,"./ReactCompositeComponent":348,"./ReactEmptyComponent":369,"./ReactNativeComponent":383,"_process":2,"fbjs/lib/invariant":463,"fbjs/lib/warning":474}],437:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -68748,7 +70997,7 @@ module.exports = instantiateReactComponent;
 
 'use strict';
 
-var ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');
+var ExecutionEnvironment = _dereq_('fbjs/lib/ExecutionEnvironment');
 
 var useHasFeature;
 if (ExecutionEnvironment.canUseDOM) {
@@ -68795,7 +71044,7 @@ function isEventSupported(eventNameSuffix, capture) {
 }
 
 module.exports = isEventSupported;
-},{"fbjs/lib/ExecutionEnvironment":467}],456:[function(require,module,exports){
+},{"fbjs/lib/ExecutionEnvironment":449}],438:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -68836,7 +71085,7 @@ function isTextInputElement(elem) {
 }
 
 module.exports = isTextInputElement;
-},{}],457:[function(require,module,exports){
+},{}],439:[function(_dereq_,module,exports){
 (function (process){
 /**
  * Copyright 2013-2015, Facebook, Inc.
@@ -68850,9 +71099,9 @@ module.exports = isTextInputElement;
  */
 'use strict';
 
-var ReactElement = require('./ReactElement');
+var ReactElement = _dereq_('./ReactElement');
 
-var invariant = require('fbjs/lib/invariant');
+var invariant = _dereq_('fbjs/lib/invariant');
 
 /**
  * Returns the first child in a collection of children and verifies that there
@@ -68871,9 +71120,9 @@ function onlyChild(children) {
 }
 
 module.exports = onlyChild;
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"./ReactElement":385,"_process":2,"fbjs/lib/invariant":481}],458:[function(require,module,exports){
+},{"./ReactElement":367,"_process":2,"fbjs/lib/invariant":463}],440:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -68887,7 +71136,7 @@ module.exports = onlyChild;
 
 'use strict';
 
-var escapeTextContentForBrowser = require('./escapeTextContentForBrowser');
+var escapeTextContentForBrowser = _dereq_('./escapeTextContentForBrowser');
 
 /**
  * Escapes attribute value to prevent scripting attacks.
@@ -68900,7 +71149,7 @@ function quoteAttributeValueForBrowser(value) {
 }
 
 module.exports = quoteAttributeValueForBrowser;
-},{"./escapeTextContentForBrowser":443}],459:[function(require,module,exports){
+},{"./escapeTextContentForBrowser":425}],441:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -68914,10 +71163,10 @@ module.exports = quoteAttributeValueForBrowser;
 
 'use strict';
 
-var ReactMount = require('./ReactMount');
+var ReactMount = _dereq_('./ReactMount');
 
 module.exports = ReactMount.renderSubtreeIntoContainer;
-},{"./ReactMount":398}],460:[function(require,module,exports){
+},{"./ReactMount":380}],442:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -68933,7 +71182,7 @@ module.exports = ReactMount.renderSubtreeIntoContainer;
 
 'use strict';
 
-var ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');
+var ExecutionEnvironment = _dereq_('fbjs/lib/ExecutionEnvironment');
 
 var WHITESPACE_TEST = /^[ \r\n\t\f]/;
 var NONVISIBLE_TEST = /<(!--|link|noscript|meta|script|style)[ \r\n\t\f\/>]/;
@@ -69008,7 +71257,7 @@ if (ExecutionEnvironment.canUseDOM) {
 }
 
 module.exports = setInnerHTML;
-},{"fbjs/lib/ExecutionEnvironment":467}],461:[function(require,module,exports){
+},{"fbjs/lib/ExecutionEnvironment":449}],443:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -69022,9 +71271,9 @@ module.exports = setInnerHTML;
 
 'use strict';
 
-var ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');
-var escapeTextContentForBrowser = require('./escapeTextContentForBrowser');
-var setInnerHTML = require('./setInnerHTML');
+var ExecutionEnvironment = _dereq_('fbjs/lib/ExecutionEnvironment');
+var escapeTextContentForBrowser = _dereq_('./escapeTextContentForBrowser');
+var setInnerHTML = _dereq_('./setInnerHTML');
 
 /**
  * Set the textContent property of a node, ensuring that whitespace is preserved
@@ -69049,7 +71298,7 @@ if (ExecutionEnvironment.canUseDOM) {
 }
 
 module.exports = setTextContent;
-},{"./escapeTextContentForBrowser":443,"./setInnerHTML":460,"fbjs/lib/ExecutionEnvironment":467}],462:[function(require,module,exports){
+},{"./escapeTextContentForBrowser":425,"./setInnerHTML":442,"fbjs/lib/ExecutionEnvironment":449}],444:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -69093,7 +71342,7 @@ function shouldUpdateReactComponent(prevElement, nextElement) {
 }
 
 module.exports = shouldUpdateReactComponent;
-},{}],463:[function(require,module,exports){
+},{}],445:[function(_dereq_,module,exports){
 (function (process){
 /**
  * Copyright 2013-2015, Facebook, Inc.
@@ -69108,13 +71357,13 @@ module.exports = shouldUpdateReactComponent;
 
 'use strict';
 
-var ReactCurrentOwner = require('./ReactCurrentOwner');
-var ReactElement = require('./ReactElement');
-var ReactInstanceHandles = require('./ReactInstanceHandles');
+var ReactCurrentOwner = _dereq_('./ReactCurrentOwner');
+var ReactElement = _dereq_('./ReactElement');
+var ReactInstanceHandles = _dereq_('./ReactInstanceHandles');
 
-var getIteratorFn = require('./getIteratorFn');
-var invariant = require('fbjs/lib/invariant');
-var warning = require('fbjs/lib/warning');
+var getIteratorFn = _dereq_('./getIteratorFn');
+var invariant = _dereq_('fbjs/lib/invariant');
+var warning = _dereq_('fbjs/lib/warning');
 
 var SEPARATOR = ReactInstanceHandles.SEPARATOR;
 var SUBSEPARATOR = ':';
@@ -69284,9 +71533,9 @@ function traverseAllChildren(children, callback, traverseContext) {
 }
 
 module.exports = traverseAllChildren;
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"./ReactCurrentOwner":367,"./ReactElement":385,"./ReactInstanceHandles":394,"./getIteratorFn":451,"_process":2,"fbjs/lib/invariant":481,"fbjs/lib/warning":492}],464:[function(require,module,exports){
+},{"./ReactCurrentOwner":349,"./ReactElement":367,"./ReactInstanceHandles":376,"./getIteratorFn":433,"_process":2,"fbjs/lib/invariant":463,"fbjs/lib/warning":474}],446:[function(_dereq_,module,exports){
 (function (process){
 /**
  * Copyright 2015, Facebook, Inc.
@@ -69301,9 +71550,9 @@ module.exports = traverseAllChildren;
 
 'use strict';
 
-var assign = require('./Object.assign');
-var emptyFunction = require('fbjs/lib/emptyFunction');
-var warning = require('fbjs/lib/warning');
+var assign = _dereq_('./Object.assign');
+var emptyFunction = _dereq_('fbjs/lib/emptyFunction');
+var warning = _dereq_('fbjs/lib/warning');
 
 var validateDOMNesting = emptyFunction;
 
@@ -69651,9 +71900,9 @@ if (process.env.NODE_ENV !== 'production') {
 }
 
 module.exports = validateDOMNesting;
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"./Object.assign":353,"_process":2,"fbjs/lib/emptyFunction":473,"fbjs/lib/warning":492}],465:[function(require,module,exports){
+},{"./Object.assign":335,"_process":2,"fbjs/lib/emptyFunction":455,"fbjs/lib/warning":474}],447:[function(_dereq_,module,exports){
 (function (process){
 /**
  * Copyright 2013-2015, Facebook, Inc.
@@ -69669,7 +71918,7 @@ module.exports = validateDOMNesting;
 
 'use strict';
 
-var invariant = require('./invariant');
+var invariant = _dereq_('./invariant');
 
 /**
  * The CSSCore module specifies the API (and implements most of the methods)
@@ -69752,9 +72001,9 @@ var CSSCore = {
 };
 
 module.exports = CSSCore;
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"./invariant":481,"_process":2}],466:[function(require,module,exports){
+},{"./invariant":463,"_process":2}],448:[function(_dereq_,module,exports){
 (function (process){
 /**
  * Copyright 2013-2015, Facebook, Inc.
@@ -69777,7 +72026,7 @@ module.exports = CSSCore;
 
 'use strict';
 
-var emptyFunction = require('./emptyFunction');
+var emptyFunction = _dereq_('./emptyFunction');
 
 /**
  * Upstream version of event listener. Does not take into account specific
@@ -69840,9 +72089,9 @@ var EventListener = {
 };
 
 module.exports = EventListener;
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"./emptyFunction":473,"_process":2}],467:[function(require,module,exports){
+},{"./emptyFunction":455,"_process":2}],449:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -69879,7 +72128,7 @@ var ExecutionEnvironment = {
 };
 
 module.exports = ExecutionEnvironment;
-},{}],468:[function(require,module,exports){
+},{}],450:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -69912,7 +72161,7 @@ function camelize(string) {
 }
 
 module.exports = camelize;
-},{}],469:[function(require,module,exports){
+},{}],451:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -69927,7 +72176,7 @@ module.exports = camelize;
 
 'use strict';
 
-var camelize = require('./camelize');
+var camelize = _dereq_('./camelize');
 
 var msPattern = /^-ms-/;
 
@@ -69953,7 +72202,7 @@ function camelizeStyleName(string) {
 }
 
 module.exports = camelizeStyleName;
-},{"./camelize":468}],470:[function(require,module,exports){
+},{"./camelize":450}],452:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -69968,7 +72217,7 @@ module.exports = camelizeStyleName;
 
 'use strict';
 
-var isTextNode = require('./isTextNode');
+var isTextNode = _dereq_('./isTextNode');
 
 /*eslint-disable no-bitwise */
 
@@ -70009,7 +72258,7 @@ function containsNode(_x, _x2) {
 }
 
 module.exports = containsNode;
-},{"./isTextNode":483}],471:[function(require,module,exports){
+},{"./isTextNode":465}],453:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -70024,7 +72273,7 @@ module.exports = containsNode;
 
 'use strict';
 
-var toArray = require('./toArray');
+var toArray = _dereq_('./toArray');
 
 /**
  * Perform a heuristic test to determine if an object is "array-like".
@@ -70095,7 +72344,7 @@ function createArrayFromMixed(obj) {
 }
 
 module.exports = createArrayFromMixed;
-},{"./toArray":491}],472:[function(require,module,exports){
+},{"./toArray":473}],454:[function(_dereq_,module,exports){
 (function (process){
 /**
  * Copyright 2013-2015, Facebook, Inc.
@@ -70113,11 +72362,11 @@ module.exports = createArrayFromMixed;
 
 'use strict';
 
-var ExecutionEnvironment = require('./ExecutionEnvironment');
+var ExecutionEnvironment = _dereq_('./ExecutionEnvironment');
 
-var createArrayFromMixed = require('./createArrayFromMixed');
-var getMarkupWrap = require('./getMarkupWrap');
-var invariant = require('./invariant');
+var createArrayFromMixed = _dereq_('./createArrayFromMixed');
+var getMarkupWrap = _dereq_('./getMarkupWrap');
+var invariant = _dereq_('./invariant');
 
 /**
  * Dummy container used to render all markup.
@@ -70181,9 +72430,9 @@ function createNodesFromMarkup(markup, handleScript) {
 }
 
 module.exports = createNodesFromMarkup;
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"./ExecutionEnvironment":467,"./createArrayFromMixed":471,"./getMarkupWrap":477,"./invariant":481,"_process":2}],473:[function(require,module,exports){
+},{"./ExecutionEnvironment":449,"./createArrayFromMixed":453,"./getMarkupWrap":459,"./invariant":463,"_process":2}],455:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -70222,7 +72471,7 @@ emptyFunction.thatReturnsArgument = function (arg) {
 };
 
 module.exports = emptyFunction;
-},{}],474:[function(require,module,exports){
+},{}],456:[function(_dereq_,module,exports){
 (function (process){
 /**
  * Copyright 2013-2015, Facebook, Inc.
@@ -70244,9 +72493,9 @@ if (process.env.NODE_ENV !== 'production') {
 }
 
 module.exports = emptyObject;
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"_process":2}],475:[function(require,module,exports){
+},{"_process":2}],457:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -70273,7 +72522,7 @@ function focusNode(node) {
 }
 
 module.exports = focusNode;
-},{}],476:[function(require,module,exports){
+},{}],458:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -70309,7 +72558,7 @@ function getActiveElement() /*?DOMElement*/{
 }
 
 module.exports = getActiveElement;
-},{}],477:[function(require,module,exports){
+},{}],459:[function(_dereq_,module,exports){
 (function (process){
 /**
  * Copyright 2013-2015, Facebook, Inc.
@@ -70326,9 +72575,9 @@ module.exports = getActiveElement;
 
 'use strict';
 
-var ExecutionEnvironment = require('./ExecutionEnvironment');
+var ExecutionEnvironment = _dereq_('./ExecutionEnvironment');
 
-var invariant = require('./invariant');
+var invariant = _dereq_('./invariant');
 
 /**
  * Dummy container used to detect which wraps are necessary.
@@ -70406,9 +72655,9 @@ function getMarkupWrap(nodeName) {
 }
 
 module.exports = getMarkupWrap;
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"./ExecutionEnvironment":467,"./invariant":481,"_process":2}],478:[function(require,module,exports){
+},{"./ExecutionEnvironment":449,"./invariant":463,"_process":2}],460:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -70447,7 +72696,7 @@ function getUnboundedScrollPosition(scrollable) {
 }
 
 module.exports = getUnboundedScrollPosition;
-},{}],479:[function(require,module,exports){
+},{}],461:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -70481,7 +72730,7 @@ function hyphenate(string) {
 }
 
 module.exports = hyphenate;
-},{}],480:[function(require,module,exports){
+},{}],462:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -70496,7 +72745,7 @@ module.exports = hyphenate;
 
 'use strict';
 
-var hyphenate = require('./hyphenate');
+var hyphenate = _dereq_('./hyphenate');
 
 var msPattern = /^ms-/;
 
@@ -70521,7 +72770,7 @@ function hyphenateStyleName(string) {
 }
 
 module.exports = hyphenateStyleName;
-},{"./hyphenate":479}],481:[function(require,module,exports){
+},{"./hyphenate":461}],463:[function(_dereq_,module,exports){
 (function (process){
 /**
  * Copyright 2013-2015, Facebook, Inc.
@@ -70573,9 +72822,9 @@ function invariant(condition, format, a, b, c, d, e, f) {
 }
 
 module.exports = invariant;
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"_process":2}],482:[function(require,module,exports){
+},{"_process":2}],464:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -70599,7 +72848,7 @@ function isNode(object) {
 }
 
 module.exports = isNode;
-},{}],483:[function(require,module,exports){
+},{}],465:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -70614,7 +72863,7 @@ module.exports = isNode;
 
 'use strict';
 
-var isNode = require('./isNode');
+var isNode = _dereq_('./isNode');
 
 /**
  * @param {*} object The object to check.
@@ -70625,7 +72874,7 @@ function isTextNode(object) {
 }
 
 module.exports = isTextNode;
-},{"./isNode":482}],484:[function(require,module,exports){
+},{"./isNode":464}],466:[function(_dereq_,module,exports){
 (function (process){
 /**
  * Copyright 2013-2015, Facebook, Inc.
@@ -70641,7 +72890,7 @@ module.exports = isTextNode;
 
 'use strict';
 
-var invariant = require('./invariant');
+var invariant = _dereq_('./invariant');
 
 /**
  * Constructs an enumeration with keys equal to their value.
@@ -70675,9 +72924,9 @@ var keyMirror = function (obj) {
 };
 
 module.exports = keyMirror;
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"./invariant":481,"_process":2}],485:[function(require,module,exports){
+},{"./invariant":463,"_process":2}],467:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -70713,7 +72962,7 @@ var keyOf = function (oneKeyObj) {
 };
 
 module.exports = keyOf;
-},{}],486:[function(require,module,exports){
+},{}],468:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -70765,7 +73014,7 @@ function mapObject(object, callback, context) {
 }
 
 module.exports = mapObject;
-},{}],487:[function(require,module,exports){
+},{}],469:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -70797,7 +73046,7 @@ function memoizeStringOnly(callback) {
 }
 
 module.exports = memoizeStringOnly;
-},{}],488:[function(require,module,exports){
+},{}],470:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -70812,7 +73061,7 @@ module.exports = memoizeStringOnly;
 
 'use strict';
 
-var ExecutionEnvironment = require('./ExecutionEnvironment');
+var ExecutionEnvironment = _dereq_('./ExecutionEnvironment');
 
 var performance;
 
@@ -70821,7 +73070,7 @@ if (ExecutionEnvironment.canUseDOM) {
 }
 
 module.exports = performance || {};
-},{"./ExecutionEnvironment":467}],489:[function(require,module,exports){
+},{"./ExecutionEnvironment":449}],471:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -70836,7 +73085,7 @@ module.exports = performance || {};
 
 'use strict';
 
-var performance = require('./performance');
+var performance = _dereq_('./performance');
 
 var performanceNow;
 
@@ -70856,7 +73105,7 @@ if (performance.now) {
 }
 
 module.exports = performanceNow;
-},{"./performance":488}],490:[function(require,module,exports){
+},{"./performance":470}],472:[function(_dereq_,module,exports){
 /**
  * Copyright 2013-2015, Facebook, Inc.
  * All rights reserved.
@@ -70907,7 +73156,7 @@ function shallowEqual(objA, objB) {
 }
 
 module.exports = shallowEqual;
-},{}],491:[function(require,module,exports){
+},{}],473:[function(_dereq_,module,exports){
 (function (process){
 /**
  * Copyright 2013-2015, Facebook, Inc.
@@ -70923,7 +73172,7 @@ module.exports = shallowEqual;
 
 'use strict';
 
-var invariant = require('./invariant');
+var invariant = _dereq_('./invariant');
 
 /**
  * Convert array-like objects to arrays.
@@ -70966,9 +73215,9 @@ function toArray(obj) {
 }
 
 module.exports = toArray;
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"./invariant":481,"_process":2}],492:[function(require,module,exports){
+},{"./invariant":463,"_process":2}],474:[function(_dereq_,module,exports){
 (function (process){
 /**
  * Copyright 2014-2015, Facebook, Inc.
@@ -70983,7 +73232,7 @@ module.exports = toArray;
 
 'use strict';
 
-var emptyFunction = require('./emptyFunction');
+var emptyFunction = _dereq_('./emptyFunction');
 
 /**
  * Similar to invariant but only logs a warning if the condition is not met.
@@ -71027,14 +73276,14 @@ if (process.env.NODE_ENV !== 'production') {
 }
 
 module.exports = warning;
-}).call(this,require('_process'))
+}).call(this,_dereq_('_process'))
 
-},{"./emptyFunction":473,"_process":2}],493:[function(require,module,exports){
+},{"./emptyFunction":455,"_process":2}],475:[function(_dereq_,module,exports){
 'use strict';
 
-module.exports = require('./lib/React');
+module.exports = _dereq_('./lib/React');
 
-},{"./lib/React":355}],494:[function(require,module,exports){
+},{"./lib/React":337}],476:[function(_dereq_,module,exports){
 "use strict";
 
 function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
@@ -71263,7 +73512,7 @@ function createLogger() {
 }
 
 module.exports = createLogger;
-},{}],495:[function(require,module,exports){
+},{}],477:[function(_dereq_,module,exports){
 'use strict';
 
 var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
@@ -71410,7 +73659,7 @@ function syncHistory(history) {
   return middleware;
 }
 
-},{}],496:[function(require,module,exports){
+},{}],478:[function(_dereq_,module,exports){
 'use strict';
 
 function thunkMiddleware(_ref) {
@@ -71425,217 +73674,21 @@ function thunkMiddleware(_ref) {
 }
 
 module.exports = thunkMiddleware;
-},{}],497:[function(require,module,exports){
-'use strict';
-
-exports.__esModule = true;
-exports['default'] = createStore;
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
-
-var _utilsIsPlainObject = require('./utils/isPlainObject');
-
-var _utilsIsPlainObject2 = _interopRequireDefault(_utilsIsPlainObject);
-
-/**
- * These are private action types reserved by Redux.
- * For any unknown actions, you must return the current state.
- * If the current state is undefined, you must return the initial state.
- * Do not reference these action types directly in your code.
- */
-var ActionTypes = {
-  INIT: '@@redux/INIT'
-};
-
-exports.ActionTypes = ActionTypes;
-/**
- * Creates a Redux store that holds the state tree.
- * The only way to change the data in the store is to call `dispatch()` on it.
- *
- * There should only be a single store in your app. To specify how different
- * parts of the state tree respond to actions, you may combine several reducers
- * into a single reducer function by using `combineReducers`.
- *
- * @param {Function} reducer A function that returns the next state tree, given
- * the current state tree and the action to handle.
- *
- * @param {any} [initialState] The initial state. You may optionally specify it
- * to hydrate the state from the server in universal apps, or to restore a
- * previously serialized user session.
- * If you use `combineReducers` to produce the root reducer function, this must be
- * an object with the same shape as `combineReducers` keys.
- *
- * @returns {Store} A Redux store that lets you read the state, dispatch actions
- * and subscribe to changes.
- */
-
-function createStore(reducer, initialState) {
-  if (typeof reducer !== 'function') {
-    throw new Error('Expected the reducer to be a function.');
-  }
-
-  var currentReducer = reducer;
-  var currentState = initialState;
-  var listeners = [];
-  var isDispatching = false;
-
-  /**
-   * Reads the state tree managed by the store.
-   *
-   * @returns {any} The current state tree of your application.
-   */
-  function getState() {
-    return currentState;
-  }
-
-  /**
-   * Adds a change listener. It will be called any time an action is dispatched,
-   * and some part of the state tree may potentially have changed. You may then
-   * call `getState()` to read the current state tree inside the callback.
-   *
-   * @param {Function} listener A callback to be invoked on every dispatch.
-   * @returns {Function} A function to remove this change listener.
-   */
-  function subscribe(listener) {
-    listeners.push(listener);
-    var isSubscribed = true;
-
-    return function unsubscribe() {
-      if (!isSubscribed) {
-        return;
-      }
-
-      isSubscribed = false;
-      var index = listeners.indexOf(listener);
-      listeners.splice(index, 1);
-    };
-  }
-
-  /**
-   * Dispatches an action. It is the only way to trigger a state change.
-   *
-   * The `reducer` function, used to create the store, will be called with the
-   * current state tree and the given `action`. Its return value will
-   * be considered the **next** state of the tree, and the change listeners
-   * will be notified.
-   *
-   * The base implementation only supports plain object actions. If you want to
-   * dispatch a Promise, an Observable, a thunk, or something else, you need to
-   * wrap your store creating function into the corresponding middleware. For
-   * example, see the documentation for the `redux-thunk` package. Even the
-   * middleware will eventually dispatch plain object actions using this method.
-   *
-   * @param {Object} action A plain object representing “what changed”. It is
-   * a good idea to keep actions serializable so you can record and replay user
-   * sessions, or use the time travelling `redux-devtools`. An action must have
-   * a `type` property which may not be `undefined`. It is a good idea to use
-   * string constants for action types.
-   *
-   * @returns {Object} For convenience, the same action object you dispatched.
-   *
-   * Note that, if you use a custom middleware, it may wrap `dispatch()` to
-   * return something else (for example, a Promise you can await).
-   */
-  function dispatch(action) {
-    if (!_utilsIsPlainObject2['default'](action)) {
-      throw new Error('Actions must be plain objects. ' + 'Use custom middleware for async actions.');
-    }
-
-    if (typeof action.type === 'undefined') {
-      throw new Error('Actions may not have an undefined "type" property. ' + 'Have you misspelled a constant?');
-    }
-
-    if (isDispatching) {
-      throw new Error('Reducers may not dispatch actions.');
-    }
-
-    try {
-      isDispatching = true;
-      currentState = currentReducer(currentState, action);
-    } finally {
-      isDispatching = false;
-    }
-
-    listeners.slice().forEach(function (listener) {
-      return listener();
-    });
-    return action;
-  }
-
-  /**
-   * Replaces the reducer currently used by the store to calculate the state.
-   *
-   * You might need this if your app implements code splitting and you want to
-   * load some of the reducers dynamically. You might also need this if you
-   * implement a hot reloading mechanism for Redux.
-   *
-   * @param {Function} nextReducer The reducer for the store to use instead.
-   * @returns {void}
-   */
-  function replaceReducer(nextReducer) {
-    currentReducer = nextReducer;
-    dispatch({ type: ActionTypes.INIT });
-  }
-
-  // When a store is created, an "INIT" action is dispatched so that every
-  // reducer returns their initial state. This effectively populates
-  // the initial state tree.
-  dispatch({ type: ActionTypes.INIT });
-
-  return {
-    dispatch: dispatch,
-    subscribe: subscribe,
-    getState: getState,
-    replaceReducer: replaceReducer
-  };
-}
-},{"./utils/isPlainObject":503}],498:[function(require,module,exports){
-'use strict';
-
-exports.__esModule = true;
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
-
-var _createStore = require('./createStore');
-
-var _createStore2 = _interopRequireDefault(_createStore);
-
-var _utilsCombineReducers = require('./utils/combineReducers');
-
-var _utilsCombineReducers2 = _interopRequireDefault(_utilsCombineReducers);
-
-var _utilsBindActionCreators = require('./utils/bindActionCreators');
-
-var _utilsBindActionCreators2 = _interopRequireDefault(_utilsBindActionCreators);
-
-var _utilsApplyMiddleware = require('./utils/applyMiddleware');
-
-var _utilsApplyMiddleware2 = _interopRequireDefault(_utilsApplyMiddleware);
-
-var _utilsCompose = require('./utils/compose');
-
-var _utilsCompose2 = _interopRequireDefault(_utilsCompose);
-
-exports.createStore = _createStore2['default'];
-exports.combineReducers = _utilsCombineReducers2['default'];
-exports.bindActionCreators = _utilsBindActionCreators2['default'];
-exports.applyMiddleware = _utilsApplyMiddleware2['default'];
-exports.compose = _utilsCompose2['default'];
-},{"./createStore":497,"./utils/applyMiddleware":499,"./utils/bindActionCreators":500,"./utils/combineReducers":501,"./utils/compose":502}],499:[function(require,module,exports){
+},{}],479:[function(_dereq_,module,exports){
 'use strict';
 
 exports.__esModule = true;
 
 var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
 
-exports['default'] = applyMiddleware;
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
+exports["default"] = applyMiddleware;
 
-var _compose = require('./compose');
+var _compose = _dereq_('./compose');
 
 var _compose2 = _interopRequireDefault(_compose);
 
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
+
 /**
  * Creates a store enhancer that applies middleware to the dispatch method
  * of the Redux store. This is handy for a variety of tasks, such as expressing
@@ -71652,15 +73705,14 @@ var _compose2 = _interopRequireDefault(_compose);
  * @param {...Function} middlewares The middleware chain to be applied.
  * @returns {Function} A store enhancer applying the middleware.
  */
-
 function applyMiddleware() {
   for (var _len = arguments.length, middlewares = Array(_len), _key = 0; _key < _len; _key++) {
     middlewares[_key] = arguments[_key];
   }
 
-  return function (next) {
-    return function (reducer, initialState) {
-      var store = next(reducer, initialState);
+  return function (createStore) {
+    return function (reducer, initialState, enhancer) {
+      var store = createStore(reducer, initialState, enhancer);
       var _dispatch = store.dispatch;
       var chain = [];
 
@@ -71673,7 +73725,7 @@ function applyMiddleware() {
       chain = middlewares.map(function (middleware) {
         return middleware(middlewareAPI);
       });
-      _dispatch = _compose2['default'].apply(undefined, chain)(store.dispatch);
+      _dispatch = _compose2["default"].apply(undefined, chain)(store.dispatch);
 
       return _extends({}, store, {
         dispatch: _dispatch
@@ -71681,20 +73733,11 @@ function applyMiddleware() {
     };
   };
 }
-
-module.exports = exports['default'];
-},{"./compose":502}],500:[function(require,module,exports){
+},{"./compose":482}],480:[function(_dereq_,module,exports){
 'use strict';
 
 exports.__esModule = true;
-exports['default'] = bindActionCreators;
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
-
-var _mapValues = require('./mapValues');
-
-var _mapValues2 = _interopRequireDefault(_mapValues);
-
+exports["default"] = bindActionCreators;
 function bindActionCreator(actionCreator, dispatch) {
   return function () {
     return dispatch(actionCreator.apply(undefined, arguments));
@@ -71722,68 +73765,66 @@ function bindActionCreator(actionCreator, dispatch) {
  * function as `actionCreators`, the return value will also be a single
  * function.
  */
-
 function bindActionCreators(actionCreators, dispatch) {
   if (typeof actionCreators === 'function') {
     return bindActionCreator(actionCreators, dispatch);
   }
 
-  if (typeof actionCreators !== 'object' || actionCreators === null || actionCreators === undefined) {
+  if (typeof actionCreators !== 'object' || actionCreators === null) {
     throw new Error('bindActionCreators expected an object or a function, instead received ' + (actionCreators === null ? 'null' : typeof actionCreators) + '. ' + 'Did you write "import ActionCreators from" instead of "import * as ActionCreators from"?');
   }
 
-  return _mapValues2['default'](actionCreators, function (actionCreator) {
-    return bindActionCreator(actionCreator, dispatch);
-  });
+  var keys = Object.keys(actionCreators);
+  var boundActionCreators = {};
+  for (var i = 0; i < keys.length; i++) {
+    var key = keys[i];
+    var actionCreator = actionCreators[key];
+    if (typeof actionCreator === 'function') {
+      boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);
+    }
+  }
+  return boundActionCreators;
 }
-
-module.exports = exports['default'];
-},{"./mapValues":504}],501:[function(require,module,exports){
+},{}],481:[function(_dereq_,module,exports){
 (function (process){
 'use strict';
 
 exports.__esModule = true;
-exports['default'] = combineReducers;
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
+exports["default"] = combineReducers;
 
-var _createStore = require('../createStore');
+var _createStore = _dereq_('./createStore');
 
-var _isPlainObject = require('./isPlainObject');
+var _isPlainObject = _dereq_('lodash/isPlainObject');
 
 var _isPlainObject2 = _interopRequireDefault(_isPlainObject);
 
-var _mapValues = require('./mapValues');
-
-var _mapValues2 = _interopRequireDefault(_mapValues);
+var _warning = _dereq_('./utils/warning');
 
-var _pick = require('./pick');
-
-var _pick2 = _interopRequireDefault(_pick);
+var _warning2 = _interopRequireDefault(_warning);
 
-/* eslint-disable no-console */
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
 
 function getUndefinedStateErrorMessage(key, action) {
   var actionType = action && action.type;
   var actionName = actionType && '"' + actionType.toString() + '"' || 'an action';
 
-  return 'Reducer "' + key + '" returned undefined handling ' + actionName + '. ' + 'To ignore an action, you must explicitly return the previous state.';
+  return 'Given action ' + actionName + ', reducer "' + key + '" returned undefined. ' + 'To ignore an action, you must explicitly return the previous state.';
 }
 
-function getUnexpectedStateKeyWarningMessage(inputState, outputState, action) {
-  var reducerKeys = Object.keys(outputState);
+function getUnexpectedStateShapeWarningMessage(inputState, reducers, action) {
+  var reducerKeys = Object.keys(reducers);
   var argumentName = action && action.type === _createStore.ActionTypes.INIT ? 'initialState argument passed to createStore' : 'previous state received by the reducer';
 
   if (reducerKeys.length === 0) {
     return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';
   }
 
-  if (!_isPlainObject2['default'](inputState)) {
-    return 'The ' + argumentName + ' has unexpected type of "' + ({}).toString.call(inputState).match(/\s([a-z|A-Z]+)/)[1] + '". Expected argument to be an object with the following ' + ('keys: "' + reducerKeys.join('", "') + '"');
+  if (!(0, _isPlainObject2["default"])(inputState)) {
+    return 'The ' + argumentName + ' has unexpected type of "' + {}.toString.call(inputState).match(/\s([a-z|A-Z]+)/)[1] + '". Expected argument to be an object with the following ' + ('keys: "' + reducerKeys.join('", "') + '"');
   }
 
   var unexpectedKeys = Object.keys(inputState).filter(function (key) {
-    return reducerKeys.indexOf(key) < 0;
+    return !reducers.hasOwnProperty(key);
   });
 
   if (unexpectedKeys.length > 0) {
@@ -71823,159 +73864,477 @@ function assertReducerSanity(reducers) {
  * @returns {Function} A reducer function that invokes every reducer inside the
  * passed object, and builds a state object with the same shape.
  */
-
 function combineReducers(reducers) {
-  var finalReducers = _pick2['default'](reducers, function (val) {
-    return typeof val === 'function';
-  });
-  var sanityError;
+  var reducerKeys = Object.keys(reducers);
+  var finalReducers = {};
+  for (var i = 0; i < reducerKeys.length; i++) {
+    var key = reducerKeys[i];
+    if (typeof reducers[key] === 'function') {
+      finalReducers[key] = reducers[key];
+    }
+  }
+  var finalReducerKeys = Object.keys(finalReducers);
 
+  var sanityError;
   try {
     assertReducerSanity(finalReducers);
   } catch (e) {
     sanityError = e;
   }
 
-  var defaultState = _mapValues2['default'](finalReducers, function () {
-    return undefined;
-  });
-
-  return function combination(state, action) {
-    if (state === undefined) state = defaultState;
+  return function combination() {
+    var state = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
+    var action = arguments[1];
 
     if (sanityError) {
       throw sanityError;
     }
 
+    if (process.env.NODE_ENV !== 'production') {
+      var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action);
+      if (warningMessage) {
+        (0, _warning2["default"])(warningMessage);
+      }
+    }
+
     var hasChanged = false;
-    var finalState = _mapValues2['default'](finalReducers, function (reducer, key) {
+    var nextState = {};
+    for (var i = 0; i < finalReducerKeys.length; i++) {
+      var key = finalReducerKeys[i];
+      var reducer = finalReducers[key];
       var previousStateForKey = state[key];
       var nextStateForKey = reducer(previousStateForKey, action);
       if (typeof nextStateForKey === 'undefined') {
         var errorMessage = getUndefinedStateErrorMessage(key, action);
         throw new Error(errorMessage);
       }
+      nextState[key] = nextStateForKey;
       hasChanged = hasChanged || nextStateForKey !== previousStateForKey;
-      return nextStateForKey;
-    });
-
-    if (process.env.NODE_ENV !== 'production') {
-      var warningMessage = getUnexpectedStateKeyWarningMessage(state, finalState, action);
-      if (warningMessage) {
-        console.error(warningMessage);
-      }
     }
-
-    return hasChanged ? finalState : state;
+    return hasChanged ? nextState : state;
   };
 }
+}).call(this,_dereq_('_process'))
 
-module.exports = exports['default'];
-}).call(this,require('_process'))
+},{"./createStore":483,"./utils/warning":485,"_process":2,"lodash/isPlainObject":489}],482:[function(_dereq_,module,exports){
+"use strict";
 
-},{"../createStore":497,"./isPlainObject":503,"./mapValues":504,"./pick":505,"_process":2}],502:[function(require,module,exports){
+exports.__esModule = true;
+exports["default"] = compose;
 /**
- * Composes single-argument functions from right to left.
+ * Composes single-argument functions from right to left. The rightmost
+ * function can take multiple arguments as it provides the signature for
+ * the resulting composite function.
  *
  * @param {...Function} funcs The functions to compose.
- * @returns {Function} A function obtained by composing functions from right to
- * left. For example, compose(f, g, h) is identical to arg => f(g(h(arg))).
+ * @returns {Function} A function obtained by composing the argument functions
+ * from right to left. For example, compose(f, g, h) is identical to doing
+ * (...args) => f(g(h(...args))).
  */
-"use strict";
-
-exports.__esModule = true;
-exports["default"] = compose;
 
 function compose() {
   for (var _len = arguments.length, funcs = Array(_len), _key = 0; _key < _len; _key++) {
     funcs[_key] = arguments[_key];
   }
 
-  return function (arg) {
-    return funcs.reduceRight(function (composed, f) {
-      return f(composed);
-    }, arg);
-  };
-}
+  if (funcs.length === 0) {
+    return function (arg) {
+      return arg;
+    };
+  } else {
+    var _ret = function () {
+      var last = funcs[funcs.length - 1];
+      var rest = funcs.slice(0, -1);
+      return {
+        v: function v() {
+          return rest.reduceRight(function (composed, f) {
+            return f(composed);
+          }, last.apply(undefined, arguments));
+        }
+      };
+    }();
 
-module.exports = exports["default"];
-},{}],503:[function(require,module,exports){
+    if (typeof _ret === "object") return _ret.v;
+  }
+}
+},{}],483:[function(_dereq_,module,exports){
 'use strict';
 
 exports.__esModule = true;
-exports['default'] = isPlainObject;
-var fnToString = function fnToString(fn) {
-  return Function.prototype.toString.call(fn);
+exports.ActionTypes = undefined;
+exports["default"] = createStore;
+
+var _isPlainObject = _dereq_('lodash/isPlainObject');
+
+var _isPlainObject2 = _interopRequireDefault(_isPlainObject);
+
+var _symbolObservable = _dereq_('symbol-observable');
+
+var _symbolObservable2 = _interopRequireDefault(_symbolObservable);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
+
+/**
+ * These are private action types reserved by Redux.
+ * For any unknown actions, you must return the current state.
+ * If the current state is undefined, you must return the initial state.
+ * Do not reference these action types directly in your code.
+ */
+var ActionTypes = exports.ActionTypes = {
+  INIT: '@@redux/INIT'
 };
-var objStringValue = fnToString(Object);
 
 /**
- * @param {any} obj The object to inspect.
- * @returns {boolean} True if the argument appears to be a plain object.
+ * Creates a Redux store that holds the state tree.
+ * The only way to change the data in the store is to call `dispatch()` on it.
+ *
+ * There should only be a single store in your app. To specify how different
+ * parts of the state tree respond to actions, you may combine several reducers
+ * into a single reducer function by using `combineReducers`.
+ *
+ * @param {Function} reducer A function that returns the next state tree, given
+ * the current state tree and the action to handle.
+ *
+ * @param {any} [initialState] The initial state. You may optionally specify it
+ * to hydrate the state from the server in universal apps, or to restore a
+ * previously serialized user session.
+ * If you use `combineReducers` to produce the root reducer function, this must be
+ * an object with the same shape as `combineReducers` keys.
+ *
+ * @param {Function} enhancer The store enhancer. You may optionally specify it
+ * to enhance the store with third-party capabilities such as middleware,
+ * time travel, persistence, etc. The only store enhancer that ships with Redux
+ * is `applyMiddleware()`.
+ *
+ * @returns {Store} A Redux store that lets you read the state, dispatch actions
+ * and subscribe to changes.
  */
+function createStore(reducer, initialState, enhancer) {
+  var _ref2;
 
-function isPlainObject(obj) {
-  if (!obj || typeof obj !== 'object') {
-    return false;
+  if (typeof initialState === 'function' && typeof enhancer === 'undefined') {
+    enhancer = initialState;
+    initialState = undefined;
   }
 
-  var proto = typeof obj.constructor === 'function' ? Object.getPrototypeOf(obj) : Object.prototype;
+  if (typeof enhancer !== 'undefined') {
+    if (typeof enhancer !== 'function') {
+      throw new Error('Expected the enhancer to be a function.');
+    }
 
-  if (proto === null) {
-    return true;
+    return enhancer(createStore)(reducer, initialState);
   }
 
-  var constructor = proto.constructor;
+  if (typeof reducer !== 'function') {
+    throw new Error('Expected the reducer to be a function.');
+  }
 
-  return typeof constructor === 'function' && constructor instanceof constructor && fnToString(constructor) === objStringValue;
-}
+  var currentReducer = reducer;
+  var currentState = initialState;
+  var currentListeners = [];
+  var nextListeners = currentListeners;
+  var isDispatching = false;
 
-module.exports = exports['default'];
-},{}],504:[function(require,module,exports){
-/**
- * Applies a function to every key-value pair inside an object.
- *
- * @param {Object} obj The source object.
- * @param {Function} fn The mapper function that receives the value and the key.
- * @returns {Object} A new object that contains the mapped values for the keys.
- */
-"use strict";
+  function ensureCanMutateNextListeners() {
+    if (nextListeners === currentListeners) {
+      nextListeners = currentListeners.slice();
+    }
+  }
+
+  /**
+   * Reads the state tree managed by the store.
+   *
+   * @returns {any} The current state tree of your application.
+   */
+  function getState() {
+    return currentState;
+  }
+
+  /**
+   * Adds a change listener. It will be called any time an action is dispatched,
+   * and some part of the state tree may potentially have changed. You may then
+   * call `getState()` to read the current state tree inside the callback.
+   *
+   * You may call `dispatch()` from a change listener, with the following
+   * caveats:
+   *
+   * 1. The subscriptions are snapshotted just before every `dispatch()` call.
+   * If you subscribe or unsubscribe while the listeners are being invoked, this
+   * will not have any effect on the `dispatch()` that is currently in progress.
+   * However, the next `dispatch()` call, whether nested or not, will use a more
+   * recent snapshot of the subscription list.
+   *
+   * 2. The listener should not expect to see all state changes, as the state
+   * might have been updated multiple times during a nested `dispatch()` before
+   * the listener is called. It is, however, guaranteed that all subscribers
+   * registered before the `dispatch()` started will be called with the latest
+   * state by the time it exits.
+   *
+   * @param {Function} listener A callback to be invoked on every dispatch.
+   * @returns {Function} A function to remove this change listener.
+   */
+  function subscribe(listener) {
+    if (typeof listener !== 'function') {
+      throw new Error('Expected listener to be a function.');
+    }
+
+    var isSubscribed = true;
+
+    ensureCanMutateNextListeners();
+    nextListeners.push(listener);
+
+    return function unsubscribe() {
+      if (!isSubscribed) {
+        return;
+      }
+
+      isSubscribed = false;
+
+      ensureCanMutateNextListeners();
+      var index = nextListeners.indexOf(listener);
+      nextListeners.splice(index, 1);
+    };
+  }
+
+  /**
+   * Dispatches an action. It is the only way to trigger a state change.
+   *
+   * The `reducer` function, used to create the store, will be called with the
+   * current state tree and the given `action`. Its return value will
+   * be considered the **next** state of the tree, and the change listeners
+   * will be notified.
+   *
+   * The base implementation only supports plain object actions. If you want to
+   * dispatch a Promise, an Observable, a thunk, or something else, you need to
+   * wrap your store creating function into the corresponding middleware. For
+   * example, see the documentation for the `redux-thunk` package. Even the
+   * middleware will eventually dispatch plain object actions using this method.
+   *
+   * @param {Object} action A plain object representing “what changed”. It is
+   * a good idea to keep actions serializable so you can record and replay user
+   * sessions, or use the time travelling `redux-devtools`. An action must have
+   * a `type` property which may not be `undefined`. It is a good idea to use
+   * string constants for action types.
+   *
+   * @returns {Object} For convenience, the same action object you dispatched.
+   *
+   * Note that, if you use a custom middleware, it may wrap `dispatch()` to
+   * return something else (for example, a Promise you can await).
+   */
+  function dispatch(action) {
+    if (!(0, _isPlainObject2["default"])(action)) {
+      throw new Error('Actions must be plain objects. ' + 'Use custom middleware for async actions.');
+    }
+
+    if (typeof action.type === 'undefined') {
+      throw new Error('Actions may not have an undefined "type" property. ' + 'Have you misspelled a constant?');
+    }
+
+    if (isDispatching) {
+      throw new Error('Reducers may not dispatch actions.');
+    }
+
+    try {
+      isDispatching = true;
+      currentState = currentReducer(currentState, action);
+    } finally {
+      isDispatching = false;
+    }
+
+    var listeners = currentListeners = nextListeners;
+    for (var i = 0; i < listeners.length; i++) {
+      listeners[i]();
+    }
+
+    return action;
+  }
+
+  /**
+   * Replaces the reducer currently used by the store to calculate the state.
+   *
+   * You might need this if your app implements code splitting and you want to
+   * load some of the reducers dynamically. You might also need this if you
+   * implement a hot reloading mechanism for Redux.
+   *
+   * @param {Function} nextReducer The reducer for the store to use instead.
+   * @returns {void}
+   */
+  function replaceReducer(nextReducer) {
+    if (typeof nextReducer !== 'function') {
+      throw new Error('Expected the nextReducer to be a function.');
+    }
+
+    currentReducer = nextReducer;
+    dispatch({ type: ActionTypes.INIT });
+  }
+
+  /**
+   * Interoperability point for observable/reactive libraries.
+   * @returns {observable} A minimal observable of state changes.
+   * For more information, see the observable proposal:
+   * https://github.com/zenparsing/es-observable
+   */
+  function observable() {
+    var _ref;
+
+    var outerSubscribe = subscribe;
+    return _ref = {
+      /**
+       * The minimal observable subscription method.
+       * @param {Object} observer Any object that can be used as an observer.
+       * The observer object should have a `next` method.
+       * @returns {subscription} An object with an `unsubscribe` method that can
+       * be used to unsubscribe the observable from the store, and prevent further
+       * emission of values from the observable.
+       */
+
+      subscribe: function subscribe(observer) {
+        if (typeof observer !== 'object') {
+          throw new TypeError('Expected the observer to be an object.');
+        }
+
+        function observeState() {
+          if (observer.next) {
+            observer.next(getState());
+          }
+        }
+
+        observeState();
+        var unsubscribe = outerSubscribe(observeState);
+        return { unsubscribe: unsubscribe };
+      }
+    }, _ref[_symbolObservable2["default"]] = function () {
+      return this;
+    }, _ref;
+  }
+
+  // When a store is created, an "INIT" action is dispatched so that every
+  // reducer returns their initial state. This effectively populates
+  // the initial state tree.
+  dispatch({ type: ActionTypes.INIT });
+
+  return _ref2 = {
+    dispatch: dispatch,
+    subscribe: subscribe,
+    getState: getState,
+    replaceReducer: replaceReducer
+  }, _ref2[_symbolObservable2["default"]] = observable, _ref2;
+}
+},{"lodash/isPlainObject":489,"symbol-observable":490}],484:[function(_dereq_,module,exports){
+(function (process){
+'use strict';
 
 exports.__esModule = true;
-exports["default"] = mapValues;
+exports.compose = exports.applyMiddleware = exports.bindActionCreators = exports.combineReducers = exports.createStore = undefined;
 
-function mapValues(obj, fn) {
-  return Object.keys(obj).reduce(function (result, key) {
-    result[key] = fn(obj[key], key);
-    return result;
-  }, {});
+var _createStore = _dereq_('./createStore');
+
+var _createStore2 = _interopRequireDefault(_createStore);
+
+var _combineReducers = _dereq_('./combineReducers');
+
+var _combineReducers2 = _interopRequireDefault(_combineReducers);
+
+var _bindActionCreators = _dereq_('./bindActionCreators');
+
+var _bindActionCreators2 = _interopRequireDefault(_bindActionCreators);
+
+var _applyMiddleware = _dereq_('./applyMiddleware');
+
+var _applyMiddleware2 = _interopRequireDefault(_applyMiddleware);
+
+var _compose = _dereq_('./compose');
+
+var _compose2 = _interopRequireDefault(_compose);
+
+var _warning = _dereq_('./utils/warning');
+
+var _warning2 = _interopRequireDefault(_warning);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
+
+/*
+* This is a dummy function to check if the function name has been altered by minification.
+* If the function has been minified and NODE_ENV !== 'production', warn the user.
+*/
+function isCrushed() {}
+
+if (process.env.NODE_ENV !== 'production' && typeof isCrushed.name === 'string' && isCrushed.name !== 'isCrushed') {
+  (0, _warning2["default"])('You are currently using minified code outside of NODE_ENV === \'production\'. ' + 'This means that you are running a slower development build of Redux. ' + 'You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify ' + 'or DefinePlugin for webpack (http://stackoverflow.com/questions/30030031) ' + 'to ensure you have the correct code for your production build.');
 }
 
-module.exports = exports["default"];
-},{}],505:[function(require,module,exports){
+exports.createStore = _createStore2["default"];
+exports.combineReducers = _combineReducers2["default"];
+exports.bindActionCreators = _bindActionCreators2["default"];
+exports.applyMiddleware = _applyMiddleware2["default"];
+exports.compose = _compose2["default"];
+}).call(this,_dereq_('_process'))
+
+},{"./applyMiddleware":479,"./bindActionCreators":480,"./combineReducers":481,"./compose":482,"./createStore":483,"./utils/warning":485,"_process":2}],485:[function(_dereq_,module,exports){
+'use strict';
+
+exports.__esModule = true;
+exports["default"] = warning;
 /**
- * Picks key-value pairs from an object where values satisfy a predicate.
+ * Prints a warning in the console if it exists.
  *
- * @param {Object} obj The object to pick from.
- * @param {Function} fn The predicate the values must satisfy to be copied.
- * @returns {Object} The object with the values that satisfied the predicate.
+ * @param {String} message The warning message.
+ * @returns {void}
  */
-"use strict";
+function warning(message) {
+  /* eslint-disable no-console */
+  if (typeof console !== 'undefined' && typeof console.error === 'function') {
+    console.error(message);
+  }
+  /* eslint-enable no-console */
+  try {
+    // This error was thrown as a convenience so that if you enable
+    // "break on all exceptions" in your console,
+    // it would pause the execution at this line.
+    throw new Error(message);
+    /* eslint-disable no-empty */
+  } catch (e) {}
+  /* eslint-enable no-empty */
+}
+},{}],486:[function(_dereq_,module,exports){
+arguments[4][31][0].apply(exports,arguments)
+},{"dup":31}],487:[function(_dereq_,module,exports){
+arguments[4][195][0].apply(exports,arguments)
+},{"dup":195}],488:[function(_dereq_,module,exports){
+arguments[4][44][0].apply(exports,arguments)
+},{"dup":44}],489:[function(_dereq_,module,exports){
+arguments[4][287][0].apply(exports,arguments)
+},{"./_getPrototype":486,"./_isHostObject":487,"./isObjectLike":488,"dup":287}],490:[function(_dereq_,module,exports){
+(function (global){
+/* global window */
+'use strict';
 
-exports.__esModule = true;
-exports["default"] = pick;
+module.exports = _dereq_('./ponyfill')(global || window || this);
 
-function pick(obj, fn) {
-  return Object.keys(obj).reduce(function (result, key) {
-    if (fn(obj[key])) {
-      result[key] = obj[key];
-    }
-    return result;
-  }, {});
-}
+}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
 
-module.exports = exports["default"];
-},{}],506:[function(require,module,exports){
+},{"./ponyfill":491}],491:[function(_dereq_,module,exports){
+'use strict';
+
+module.exports = function symbolObservablePonyfill(root) {
+	var result;
+	var Symbol = root.Symbol;
+
+	if (typeof Symbol === 'function') {
+		if (Symbol.observable) {
+			result = Symbol.observable;
+		} else {
+			result = Symbol('observable');
+			Symbol.observable = result;
+		}
+	} else {
+		result = '@@observable';
+	}
+
+	return result;
+};
+
+},{}],492:[function(_dereq_,module,exports){
 'use strict';
 
 exports.__esModule = true;
@@ -71983,21 +74342,21 @@ exports.zoneSetActiveZone = zoneSetActiveZone;
 exports.asyncZoneSetActiveZone = asyncZoneSetActiveZone;
 exports.zoneSetActiveZoneIfEmpty = zoneSetActiveZoneIfEmpty;
 
-var _notifications = require('./notifications');
+var _notifications = _dereq_('./notifications');
 
-var _ActionTypes = require('../constants/ActionTypes');
+var _ActionTypes = _dereq_('../constants/ActionTypes');
 
 var ActionTypes = _interopRequireWildcard(_ActionTypes);
 
-var _zoneDnsRecords = require('./zoneDnsRecords');
+var _zoneDnsRecords = _dereq_('./zoneDnsRecords');
 
-var _zoneAnalytics = require('./zoneAnalytics');
+var _zoneAnalytics = _dereq_('./zoneAnalytics');
 
-var _zoneRailgun = require('./zoneRailgun');
+var _zoneRailgun = _dereq_('./zoneRailgun');
 
-var _zoneScan = require('./zoneScan');
+var _zoneScan = _dereq_('./zoneScan');
 
-var _zoneSettings = require('./zoneSettings');
+var _zoneSettings = _dereq_('./zoneSettings');
 
 function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 
@@ -72032,13 +74391,13 @@ function zoneSetActiveZoneIfEmpty(zone) {
     };
 }
 
-},{"../constants/ActionTypes":525,"./notifications":510,"./zoneAnalytics":512,"./zoneDnsRecords":513,"./zoneRailgun":516,"./zoneScan":517,"./zoneSettings":518}],507:[function(require,module,exports){
+},{"../constants/ActionTypes":511,"./notifications":496,"./zoneAnalytics":498,"./zoneDnsRecords":499,"./zoneRailgun":502,"./zoneScan":503,"./zoneSettings":504}],493:[function(_dereq_,module,exports){
 'use strict';
 
 exports.__esModule = true;
 exports.applicationInit = applicationInit;
 
-var _ActionTypes = require('../constants/ActionTypes');
+var _ActionTypes = _dereq_('../constants/ActionTypes');
 
 var ActionTypes = _interopRequireWildcard(_ActionTypes);
 
@@ -72050,7 +74409,7 @@ function applicationInit() {
     };
 }
 
-},{"../constants/ActionTypes":525}],508:[function(require,module,exports){
+},{"../constants/ActionTypes":511}],494:[function(_dereq_,module,exports){
 'use strict';
 
 exports.__esModule = true;
@@ -72058,22 +74417,25 @@ exports.configFetch = configFetch;
 exports.configFetchSuccess = configFetchSuccess;
 exports.configFetchError = configFetchError;
 exports.asyncConfigFetch = asyncConfigFetch;
+exports.configUpdateByKey = configUpdateByKey;
 
-var _cfUtilHttp = require('cf-util-http');
+var _cfUtilHttp = _dereq_('cf-util-http');
 
 var _cfUtilHttp2 = _interopRequireDefault(_cfUtilHttp);
 
-var _ActionTypes = require('../constants/ActionTypes');
+var _ActionTypes = _dereq_('../constants/ActionTypes');
 
 var ActionTypes = _interopRequireWildcard(_ActionTypes);
 
-var _intl = require('./intl');
+var _intl = _dereq_('./intl');
+
+var _notifications = _dereq_('./notifications');
 
-var _notifications = require('./notifications');
+var _Auth = _dereq_('../utils/Auth/Auth');
 
-var _Auth = require('../utils/Auth/Auth');
+var _user = _dereq_('../actions/user');
 
-var _user = require('../actions/user');
+var _config = _dereq_('../reducers/config');
 
 function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 
@@ -72107,6 +74469,15 @@ function asyncConfigFetch() {
         _cfUtilHttp2.default.get('./config.js', opts, function (response) {
             var config = JSON.parse(response.text);
             dispatch(configFetchSuccess(config));
+            if (typeof absoluteUrlBase !== 'undefined') {
+                /*
+                 * Some integrations don't work with relative paths because the URL doesn't match
+                 * the actual file path, this function allows integrations to configure a base absolute
+                 * url path to be used in components/Image. absoluteBaseUrl should be defined globally
+                 * on the page where the SPA is loaded.
+                 */
+                dispatch(configUpdateByKey(_config.ABSOLUTE_URL_BASE_KEY, absoluteUrlBase));
+            }
             dispatch((0, _intl.asyncIntlFetchTranslations)(config.locale));
             //log user in if their email is in local storage
             if ((0, _Auth.isLoggedIn)()) {
@@ -72119,7 +74490,15 @@ function asyncConfigFetch() {
     };
 }
 
-},{"../actions/user":511,"../constants/ActionTypes":525,"../utils/Auth/Auth":572,"./intl":509,"./notifications":510,"cf-util-http":120}],509:[function(require,module,exports){
+function configUpdateByKey(key, value) {
+    return {
+        type: ActionTypes.CONFIG_UPDATE_BY_KEY,
+        key: key,
+        value: value
+    };
+}
+
+},{"../actions/user":497,"../constants/ActionTypes":511,"../reducers/config":544,"../utils/Auth/Auth":559,"./intl":495,"./notifications":496,"cf-util-http":115}],495:[function(_dereq_,module,exports){
 'use strict';
 
 exports.__esModule = true;
@@ -72128,17 +74507,17 @@ exports.intlFetchTranslationsSuccess = intlFetchTranslationsSuccess;
 exports.intlFetchTranslationsError = intlFetchTranslationsError;
 exports.asyncIntlFetchTranslations = asyncIntlFetchTranslations;
 
-var _cfUtilHttp = require('cf-util-http');
+var _cfUtilHttp = _dereq_('cf-util-http');
 
 var _cfUtilHttp2 = _interopRequireDefault(_cfUtilHttp);
 
-var _ActionTypes = require('../constants/ActionTypes');
+var _ActionTypes = _dereq_('../constants/ActionTypes');
 
 var ActionTypes = _interopRequireWildcard(_ActionTypes);
 
-var _app = require('./app');
+var _app = _dereq_('./app');
 
-var _notifications = require('./notifications');
+var _notifications = _dereq_('./notifications');
 
 function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 
@@ -72181,7 +74560,7 @@ function asyncIntlFetchTranslations(locale) {
     };
 }
 
-},{"../constants/ActionTypes":525,"./app":507,"./notifications":510,"cf-util-http":120}],510:[function(require,module,exports){
+},{"../constants/ActionTypes":511,"./app":493,"./notifications":496,"cf-util-http":115}],496:[function(_dereq_,module,exports){
 "use strict";
 
 exports.__esModule = true;
@@ -72193,7 +74572,7 @@ exports.notificationAddError = notificationAddError;
 exports.notificationRemove = notificationRemove;
 exports.notificationAddClientAPIError = notificationAddClientAPIError;
 
-var _ActionTypes = require("../constants/ActionTypes");
+var _ActionTypes = _dereq_("../constants/ActionTypes");
 
 var ActionTypes = _interopRequireWildcard(_ActionTypes);
 
@@ -72254,7 +74633,7 @@ function notificationAddClientAPIError(errorAction, errorMessage) {
     };
 }
 
-},{"../constants/ActionTypes":525}],511:[function(require,module,exports){
+},{"../constants/ActionTypes":511}],497:[function(_dereq_,module,exports){
 'use strict';
 
 exports.__esModule = true;
@@ -72269,21 +74648,21 @@ exports.userSignupSuccess = userSignupSuccess;
 exports.userSignupError = userSignupError;
 exports.asyncUserSignup = asyncUserSignup;
 
-var _reduxSimpleRouter = require('redux-simple-router');
+var _reduxSimpleRouter = _dereq_('redux-simple-router');
 
-var _CFHostAPI = require('../utils/CFHostAPI/CFHostAPI');
+var _CFHostAPI = _dereq_('../utils/CFHostAPI/CFHostAPI');
 
-var _notifications = require('./notifications');
+var _notifications = _dereq_('./notifications');
 
-var _ActionTypes = require('../constants/ActionTypes');
+var _ActionTypes = _dereq_('../constants/ActionTypes');
 
 var ActionTypes = _interopRequireWildcard(_ActionTypes);
 
-var _UrlPaths = require('../constants/UrlPaths');
+var _UrlPaths = _dereq_('../constants/UrlPaths');
 
 var UrlPaths = _interopRequireWildcard(_UrlPaths);
 
-var _zones = require('./zones');
+var _zones = _dereq_('./zones');
 
 function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 
@@ -72381,7 +74760,7 @@ function asyncUserSignup(email, password) {
     };
 }
 
-},{"../constants/ActionTypes":525,"../constants/UrlPaths":527,"../utils/CFHostAPI/CFHostAPI":574,"./notifications":510,"./zones":519,"redux-simple-router":495}],512:[function(require,module,exports){
+},{"../constants/ActionTypes":511,"../constants/UrlPaths":513,"../utils/CFHostAPI/CFHostAPI":561,"./notifications":496,"./zones":505,"redux-simple-router":477}],498:[function(_dereq_,module,exports){
 'use strict';
 
 exports.__esModule = true;
@@ -72390,11 +74769,11 @@ exports.zoneFetchAnalyticsSuccess = zoneFetchAnalyticsSuccess;
 exports.zoneFetchAnalyticsError = zoneFetchAnalyticsError;
 exports.asyncZoneFetchAnalytics = asyncZoneFetchAnalytics;
 
-var _CFClientV4API = require('../utils/CFClientV4API/CFClientV4API');
+var _CFClientV4API = _dereq_('../utils/CFClientV4API/CFClientV4API');
 
-var _notifications = require('./notifications');
+var _notifications = _dereq_('./notifications');
 
-var _ActionTypes = require('../constants/ActionTypes');
+var _ActionTypes = _dereq_('../constants/ActionTypes');
 
 var ActionTypes = _interopRequireWildcard(_ActionTypes);
 
@@ -72435,7 +74814,7 @@ function asyncZoneFetchAnalytics(zoneId) {
     };
 }
 
-},{"../constants/ActionTypes":525,"../utils/CFClientV4API/CFClientV4API":573,"./notifications":510}],513:[function(require,module,exports){
+},{"../constants/ActionTypes":511,"../utils/CFClientV4API/CFClientV4API":560,"./notifications":496}],499:[function(_dereq_,module,exports){
 'use strict';
 
 exports.__esModule = true;
@@ -72453,13 +74832,13 @@ exports.dnsRecordUpdateSuccess = dnsRecordUpdateSuccess;
 exports.dnsRecordUpdateError = dnsRecordUpdateError;
 exports.asyncDNSRecordUpdate = asyncDNSRecordUpdate;
 
-var _ActionTypes = require('../constants/ActionTypes');
+var _ActionTypes = _dereq_('../constants/ActionTypes');
 
 var ActionTypes = _interopRequireWildcard(_ActionTypes);
 
-var _CFClientV4API = require('../utils/CFClientV4API/CFClientV4API');
+var _CFClientV4API = _dereq_('../utils/CFClientV4API/CFClientV4API');
 
-var _notifications = require('./notifications');
+var _notifications = _dereq_('./notifications');
 
 function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 
@@ -72579,7 +74958,7 @@ function asyncDNSRecordUpdate(zoneId, dnsRecord, proxied) {
     };
 }
 
-},{"../constants/ActionTypes":525,"../utils/CFClientV4API/CFClientV4API":573,"./notifications":510}],514:[function(require,module,exports){
+},{"../constants/ActionTypes":511,"../utils/CFClientV4API/CFClientV4API":560,"./notifications":496}],500:[function(_dereq_,module,exports){
 'use strict';
 
 exports.__esModule = true;
@@ -72596,21 +74975,21 @@ exports.zoneProvisionFullSuccess = zoneProvisionFullSuccess;
 exports.zoneProvisionFullError = zoneProvisionFullError;
 exports.asyncZoneProvisionFull = asyncZoneProvisionFull;
 
-var _CFClientV4API = require('../utils/CFClientV4API/CFClientV4API');
+var _CFClientV4API = _dereq_('../utils/CFClientV4API/CFClientV4API');
 
-var _CFHostAPI = require('../utils/CFHostAPI/CFHostAPI');
+var _CFHostAPI = _dereq_('../utils/CFHostAPI/CFHostAPI');
 
-var _notifications = require('./notifications');
+var _notifications = _dereq_('./notifications');
 
-var _ActionTypes = require('../constants/ActionTypes');
+var _ActionTypes = _dereq_('../constants/ActionTypes');
 
 var ActionTypes = _interopRequireWildcard(_ActionTypes);
 
-var _activeZone = require('./activeZone');
+var _activeZone = _dereq_('./activeZone');
 
-var _Schemas = require('../constants/Schemas');
+var _Schemas = _dereq_('../constants/Schemas');
 
-var _zones = require('./zones');
+var _zones = _dereq_('./zones');
 
 function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 
@@ -72757,7 +75136,7 @@ function asyncSetHostAPIProvisionedDomainActive(domainName) {
     };
 }
 
-},{"../constants/ActionTypes":525,"../constants/Schemas":526,"../utils/CFClientV4API/CFClientV4API":573,"../utils/CFHostAPI/CFHostAPI":574,"./activeZone":506,"./notifications":510,"./zones":519}],515:[function(require,module,exports){
+},{"../constants/ActionTypes":511,"../constants/Schemas":512,"../utils/CFClientV4API/CFClientV4API":560,"../utils/CFHostAPI/CFHostAPI":561,"./activeZone":492,"./notifications":496,"./zones":505}],501:[function(_dereq_,module,exports){
 'use strict';
 
 exports.__esModule = true;
@@ -72766,11 +75145,11 @@ exports.zonePurgeCacheSuccess = zonePurgeCacheSuccess;
 exports.zonePurgeCacheError = zonePurgeCacheError;
 exports.asyncZonePurgeCache = asyncZonePurgeCache;
 
-var _CFClientV4API = require('../utils/CFClientV4API/CFClientV4API');
+var _CFClientV4API = _dereq_('../utils/CFClientV4API/CFClientV4API');
 
-var _notifications = require('./notifications');
+var _notifications = _dereq_('./notifications');
 
-var _ActionTypes = require('../constants/ActionTypes');
+var _ActionTypes = _dereq_('../constants/ActionTypes');
 
 var ActionTypes = _interopRequireWildcard(_ActionTypes);
 
@@ -72810,12 +75189,13 @@ function asyncZonePurgeCache(zoneId) {
     };
 }
 
-},{"../constants/ActionTypes":525,"../utils/CFClientV4API/CFClientV4API":573,"./notifications":510}],516:[function(require,module,exports){
+},{"../constants/ActionTypes":511,"../utils/CFClientV4API/CFClientV4API":560,"./notifications":496}],502:[function(_dereq_,module,exports){
 'use strict';
 
+exports.__esModule = true;
+
 var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
 
-exports.__esModule = true;
 exports.zoneRailgunFetchAll = zoneRailgunFetchAll;
 exports.zoneRailgunFetchAllSuccess = zoneRailgunFetchAllSuccess;
 exports.zoneRailgunFetchAllError = zoneRailgunFetchAllError;
@@ -72825,11 +75205,11 @@ exports.zoneRailgunConnectionUpdateSuccess = zoneRailgunConnectionUpdateSuccess;
 exports.zoneRailgunConnectionUpdateError = zoneRailgunConnectionUpdateError;
 exports.asyncZoneRailgunConnectionUpdate = asyncZoneRailgunConnectionUpdate;
 
-var _CFClientV4API = require('../utils/CFClientV4API/CFClientV4API');
+var _CFClientV4API = _dereq_('../utils/CFClientV4API/CFClientV4API');
 
-var _notifications = require('./notifications');
+var _notifications = _dereq_('./notifications');
 
-var _ActionTypes = require('../constants/ActionTypes');
+var _ActionTypes = _dereq_('../constants/ActionTypes');
 
 var ActionTypes = _interopRequireWildcard(_ActionTypes);
 
@@ -72910,7 +75290,7 @@ function asyncZoneRailgunConnectionUpdate(zoneId, railgun, isConnected) {
     };
 }
 
-},{"../constants/ActionTypes":525,"../utils/CFClientV4API/CFClientV4API":573,"./notifications":510}],517:[function(require,module,exports){
+},{"../constants/ActionTypes":511,"../utils/CFClientV4API/CFClientV4API":560,"./notifications":496}],503:[function(_dereq_,module,exports){
 'use strict';
 
 exports.__esModule = true;
@@ -72923,11 +75303,11 @@ exports.zoneUpdateScanSuccess = zoneUpdateScanSuccess;
 exports.zoneUpdateScanError = zoneUpdateScanError;
 exports.asyncZoneUpdateScan = asyncZoneUpdateScan;
 
-var _CFClientV4API = require('../utils/CFClientV4API/CFClientV4API');
+var _CFClientV4API = _dereq_('../utils/CFClientV4API/CFClientV4API');
 
-var _notifications = require('./notifications');
+var _notifications = _dereq_('./notifications');
 
-var _ActionTypes = require('../constants/ActionTypes');
+var _ActionTypes = _dereq_('../constants/ActionTypes');
 
 var ActionTypes = _interopRequireWildcard(_ActionTypes);
 
@@ -73007,7 +75387,7 @@ function asyncZoneUpdateScan(zoneId, showInterstitial) {
     };
 }
 
-},{"../constants/ActionTypes":525,"../utils/CFClientV4API/CFClientV4API":573,"./notifications":510}],518:[function(require,module,exports){
+},{"../constants/ActionTypes":511,"../utils/CFClientV4API/CFClientV4API":560,"./notifications":496}],504:[function(_dereq_,module,exports){
 'use strict';
 
 exports.__esModule = true;
@@ -73020,17 +75400,17 @@ exports.zoneUpdateSettingSuccess = zoneUpdateSettingSuccess;
 exports.zoneUpdateSettingError = zoneUpdateSettingError;
 exports.asyncZoneUpdateSetting = asyncZoneUpdateSetting;
 
-var _CFClientV4API = require('../utils/CFClientV4API/CFClientV4API');
+var _CFClientV4API = _dereq_('../utils/CFClientV4API/CFClientV4API');
 
-var _CFHostAPI = require('../utils/CFHostAPI/CFHostAPI');
+var _CFHostAPI = _dereq_('../utils/CFHostAPI/CFHostAPI');
 
-var _notifications = require('./notifications');
+var _notifications = _dereq_('./notifications');
 
-var _ActionTypes = require('../constants/ActionTypes');
+var _ActionTypes = _dereq_('../constants/ActionTypes');
 
 var ActionTypes = _interopRequireWildcard(_ActionTypes);
 
-var _zoneDnsRecords = require('../actions/zoneDnsRecords');
+var _zoneDnsRecords = _dereq_('../actions/zoneDnsRecords');
 
 function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 
@@ -73110,7 +75490,7 @@ function asyncZoneUpdateSetting(settingName, zoneId, value) {
     };
 }
 
-},{"../actions/zoneDnsRecords":513,"../constants/ActionTypes":525,"../utils/CFClientV4API/CFClientV4API":573,"../utils/CFHostAPI/CFHostAPI":574,"./notifications":510}],519:[function(require,module,exports){
+},{"../actions/zoneDnsRecords":499,"../constants/ActionTypes":511,"../utils/CFClientV4API/CFClientV4API":560,"../utils/CFHostAPI/CFHostAPI":561,"./notifications":496}],505:[function(_dereq_,module,exports){
 'use strict';
 
 exports.__esModule = true;
@@ -73123,21 +75503,21 @@ exports.zoneFetchSuccess = zoneFetchSuccess;
 exports.zoneFetchError = zoneFetchError;
 exports.asyncFetchZones = asyncFetchZones;
 
-var _CFClientV4API = require('../utils/CFClientV4API/CFClientV4API');
+var _CFClientV4API = _dereq_('../utils/CFClientV4API/CFClientV4API');
 
-var _CFHostAPI = require('../utils/CFHostAPI/CFHostAPI');
+var _CFHostAPI = _dereq_('../utils/CFHostAPI/CFHostAPI');
 
-var _notifications = require('./notifications');
+var _notifications = _dereq_('./notifications');
 
-var _ActionTypes = require('../constants/ActionTypes');
+var _ActionTypes = _dereq_('../constants/ActionTypes');
 
 var ActionTypes = _interopRequireWildcard(_ActionTypes);
 
-var _activeZone = require('./activeZone');
+var _activeZone = _dereq_('./activeZone');
 
-var _Schemas = require('../constants/Schemas');
+var _Schemas = _dereq_('../constants/Schemas');
 
-var _zoneDnsRecords = require('./zoneDnsRecords');
+var _zoneDnsRecords = _dereq_('./zoneDnsRecords');
 
 function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 
@@ -73226,12 +75606,12 @@ function asyncFetchZones() {
     };
 }
 
-},{"../constants/ActionTypes":525,"../constants/Schemas":526,"../utils/CFClientV4API/CFClientV4API":573,"../utils/CFHostAPI/CFHostAPI":574,"./activeZone":506,"./notifications":510,"./zoneDnsRecords":513}],520:[function(require,module,exports){
+},{"../constants/ActionTypes":511,"../constants/Schemas":512,"../utils/CFClientV4API/CFClientV4API":560,"../utils/CFHostAPI/CFHostAPI":561,"./activeZone":492,"./notifications":496,"./zoneDnsRecords":499}],506:[function(_dereq_,module,exports){
 'use strict';
 
 exports.__esModule = true;
 
-var _react = require('react');
+var _react = _dereq_('react');
 
 var _react2 = _interopRequireDefault(_react);
 
@@ -73305,12 +75685,12 @@ CloudToggle.propTypes = {
 };
 exports.default = CloudToggle;
 
-},{"react":493}],521:[function(require,module,exports){
+},{"react":475}],507:[function(_dereq_,module,exports){
 'use strict';
 
 exports.__esModule = true;
 
-var _react = require('react');
+var _react = _dereq_('react');
 
 var _react2 = _interopRequireDefault(_react);
 
@@ -73349,16 +75729,16 @@ FeatureManager.propTypes = {
 };
 exports.default = FeatureManager;
 
-},{"react":493}],522:[function(require,module,exports){
+},{"react":475}],508:[function(_dereq_,module,exports){
 'use strict';
 
 exports.__esModule = true;
 
-var _react = require('react');
+var _react = _dereq_('react');
 
 var _react2 = _interopRequireDefault(_react);
 
-var _reactIntl = require('react-intl');
+var _reactIntl = _dereq_('react-intl');
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
@@ -73394,78 +75774,60 @@ var Loading = function (_Component) {
 
 exports.default = Loading;
 
-},{"react":493,"react-intl":276}],523:[function(require,module,exports){
+},{"react":475,"react-intl":255}],509:[function(_dereq_,module,exports){
 'use strict';
 
 exports.__esModule = true;
 
-var _react = require('react');
+var _react = _dereq_('react');
 
 var _react2 = _interopRequireDefault(_react);
 
-var _reactIntl = require('react-intl');
+var _reactIntl = _dereq_('react-intl');
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-var MarketingFeature = function (_React$Component) {
-    _inherits(MarketingFeature, _React$Component);
-
-    function MarketingFeature() {
-        _classCallCheck(this, MarketingFeature);
-
-        return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));
-    }
-
-    MarketingFeature.prototype.render = function render() {
-        /*
-         * These styles are stolen from the marketing site and aren't in our CSS
-         */
-        var iconStyles = {
-            'display': 'block',
-            'width': '40px',
-            'height': 'auto',
-            'maxWidth': '100px',
-            'margin': '0 auto'
-        };
-        var largeLinkStyles = {
-            'padding': '20px 0 0 0',
-            'textAlign': 'center',
-            'fontSize': '16px',
-            'color': '#2f7bbf',
-            'width': '100%',
-            display: 'block'
-        };
-        var columnPStyles = {
-            'padding': '10px 0 0 0',
-            'font-size': '12px',
-            'text-align': 'center'
-        };
-
-        return _react2.default.createElement(
-            'div',
-            null,
-            _react2.default.createElement('img', { src: this.props.imgSrc, style: iconStyles }),
-            _react2.default.createElement(
-                'span',
-                { style: largeLinkStyles, href: '#' },
-                _react2.default.createElement(_reactIntl.FormattedMessage, { id: this.props.titleKey })
-            ),
-            _react2.default.createElement(
-                'p',
-                { style: columnPStyles },
-                _react2.default.createElement(_reactIntl.FormattedMessage, { id: this.props.descriptionKey })
-            )
-        );
+function MarketingFeature(props) {
+    /*
+     * These styles are stolen from the marketing site and aren't in our CSS
+     */
+    var iconStyles = {
+        'display': 'block',
+        'width': '40px',
+        'height': 'auto',
+        'maxWidth': '100px',
+        'margin': '0 auto'
+    };
+    var largeLinkStyles = {
+        'padding': '20px 0 0 0',
+        'textAlign': 'center',
+        'fontSize': '16px',
+        'color': '#2f7bbf',
+        'width': '100%',
+        display: 'block'
+    };
+    var columnPStyles = {
+        'padding': '10px 0 0 0',
+        'fontSize': '12px',
+        'textAlign': 'center'
     };
 
-    return MarketingFeature;
-}(_react2.default.Component);
+    return _react2.default.createElement(
+        'div',
+        null,
+        _react2.default.createElement('img', { src: props.imgSrc, style: iconStyles }),
+        _react2.default.createElement(
+            'span',
+            { style: largeLinkStyles, href: '#' },
+            _react2.default.createElement(_reactIntl.FormattedMessage, { id: props.titleKey })
+        ),
+        _react2.default.createElement(
+            'p',
+            { style: columnPStyles },
+            _react2.default.createElement(_reactIntl.FormattedMessage, { id: props.descriptionKey })
+        )
+    );
+}
 
 MarketingFeature.propTypes = {
     imgSrc: _react.PropTypes.string.isRequired,
@@ -73474,18 +75836,18 @@ MarketingFeature.propTypes = {
 };
 exports.default = MarketingFeature;
 
-},{"react":493,"react-intl":276}],524:[function(require,module,exports){
+},{"react":475,"react-intl":255}],510:[function(_dereq_,module,exports){
 'use strict';
 
 exports.__esModule = true;
 
-var _react = require('react');
+var _react = _dereq_('react');
 
 var _react2 = _interopRequireDefault(_react);
 
-var _reactIntl = require('react-intl');
+var _reactIntl = _dereq_('react-intl');
 
-var _notifications = require('../../actions/notifications');
+var _notifications = _dereq_('../../actions/notifications');
 
 var NotificationActionCreators = _interopRequireWildcard(_notifications);
 
@@ -73555,7 +75917,7 @@ var Notification = function (_Component) {
 
 exports.default = Notification;
 
-},{"../../actions/notifications":510,"react":493,"react-intl":276}],525:[function(require,module,exports){
+},{"../../actions/notifications":496,"react":475,"react-intl":255}],511:[function(_dereq_,module,exports){
 'use strict';
 
 exports.__esModule = true;
@@ -73566,6 +75928,7 @@ var APPLICATION_INIT = exports.APPLICATION_INIT = 'APPLICATION_INIT';
 var CONFIG_FETCH = exports.CONFIG_FETCH = 'CONFIG_FETCH';
 var CONFIG_FETCH_SUCCESS = exports.CONFIG_FETCH_SUCCESS = 'CONFIG_FETCH_SUCCESS';
 var CONFIG_FETCH_ERROR = exports.CONFIG_FETCH_ERROR = 'CONFIG_FETCH_ERROR';
+var CONFIG_UPDATE_BY_KEY = exports.CONFIG_UPDATE_BY_KEY = 'CONFIG_UPDATE_BY_KEY';
 
 //dns records
 var DNS_RECORD_CLEAR_ALL = exports.DNS_RECORD_CLEAR_ALL = "DNS_RECORD_CLEAR_ALL";
@@ -73661,7 +76024,7 @@ var ZONE_RAILGUNS_CONNECTION_UPDATE = exports.ZONE_RAILGUNS_CONNECTION_UPDATE =
 var ZONE_RAILGUNS_CONNECTION_UPDATE_SUCCESSS = exports.ZONE_RAILGUNS_CONNECTION_UPDATE_SUCCESSS = "ZONES_RAILGUNS_CONNECTION_UPDATE__SUCCESS";
 var ZONE_RAILGUNS_CONNECTION_UPDATE_ERROR = exports.ZONE_RAILGUNS_CONNECTION_UPDATE_ERROR = "ZONES_RAILGUNS_CONNECTION_UPDATE_ERROR";
 
-},{}],526:[function(require,module,exports){
+},{}],512:[function(_dereq_,module,exports){
 'use strict';
 
 exports.__esModule = true;
@@ -73669,7 +76032,7 @@ exports.zoneRailgunSchema = exports.zoneSchema = undefined;
 exports.normalizeZoneGetAll = normalizeZoneGetAll;
 exports.normalizeZoneRailgunGetAll = normalizeZoneRailgunGetAll;
 
-var _normalizr = require('normalizr');
+var _normalizr = _dereq_('normalizr');
 
 var zoneSchema = exports.zoneSchema = new _normalizr.Schema('zones', { idAttribute: 'name' });
 var zoneRailgunSchema = exports.zoneRailgunSchema = new _normalizr.Schema('railguns', { idAttribute: 'id' });
@@ -73682,7 +76045,7 @@ function normalizeZoneRailgunGetAll(result) {
     return (0, _normalizr.normalize)(result, (0, _normalizr.arrayOf)(zoneRailgunSchema));
 }
 
-},{"normalizr":159}],527:[function(require,module,exports){
+},{"normalizr":156}],513:[function(_dereq_,module,exports){
 "use strict";
 
 exports.__esModule = true;
@@ -73697,26 +76060,26 @@ var SUPPORT_PAGE = exports.SUPPORT_PAGE = "https://support.cloudflare.com/hc/en-
 var TERMS_AND_CONDITIONS_PAGE = exports.TERMS_AND_CONDITIONS_PAGE = "https://www.cloudflare.com/terms";
 var PRIVACY_POLICY_PAGE = exports.PRIVACY_POLICY_PAGE = "https://www.cloudflare.com/security-policy";
 
-},{}],528:[function(require,module,exports){
+},{}],514:[function(_dereq_,module,exports){
 'use strict';
 
 exports.__esModule = true;
 
-var _react = require('react');
+var _react = _dereq_('react');
 
 var _react2 = _interopRequireDefault(_react);
 
-var _reactRedux = require('react-redux');
+var _reactRedux = _dereq_('react-redux');
 
-var _reactIntl = require('react-intl');
+var _reactIntl = _dereq_('react-intl');
 
-var _zoneProvision = require('../../actions/zoneProvision');
+var _zoneProvision = _dereq_('../../actions/zoneProvision');
 
-var _cfComponentCard = require('cf-component-card');
+var _cfComponentCard = _dereq_('cf-component-card');
 
-var _cfComponentButton = require('cf-component-button');
+var _cfComponentButton = _dereq_('cf-component-button');
 
-var _cfComponentList = require('cf-component-list');
+var _cfComponentList = _dereq_('cf-component-list');
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
@@ -73747,6 +76110,7 @@ var ActivationCheckCard = function (_Component) {
         var formatMessage = this.props.intl.formatMessage;
         var zone = this.props.zone;
 
+
         return _react2.default.createElement(
             'div',
             null,
@@ -73811,28 +76175,28 @@ function mapStateToProps(state) {
 }
 exports.default = (0, _reactIntl.injectIntl)((0, _reactRedux.connect)(mapStateToProps)(ActivationCheckCard));
 
-},{"../../actions/zoneProvision":514,"cf-component-button":5,"cf-component-card":15,"cf-component-list":57,"react":493,"react-intl":276,"react-redux":299}],529:[function(require,module,exports){
+},{"../../actions/zoneProvision":500,"cf-component-button":5,"cf-component-card":15,"cf-component-list":64,"react":475,"react-intl":255,"react-redux":277}],515:[function(_dereq_,module,exports){
 'use strict';
 
 exports.__esModule = true;
 
-var _react = require('react');
+var _react = _dereq_('react');
 
 var _react2 = _interopRequireDefault(_react);
 
-var _reactRedux = require('react-redux');
+var _reactRedux = _dereq_('react-redux');
 
-var _reactIntl = require('react-intl');
+var _reactIntl = _dereq_('react-intl');
 
-var _lodash = require('lodash');
+var _lodash = _dereq_('lodash');
 
 var _lodash2 = _interopRequireDefault(_lodash);
 
-var _cfComponentSelect = require('cf-component-select');
+var _cfComponentSelect = _dereq_('cf-component-select');
 
 var _cfComponentSelect2 = _interopRequireDefault(_cfComponentSelect);
 
-var _activeZone = require('../../actions/activeZone');
+var _activeZone = _dereq_('../../actions/activeZone');
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
@@ -73856,6 +76220,7 @@ var ActiveZoneSelector = function (_Component) {
         var dispatch = _props.dispatch;
         var zoneList = _props.zoneList;
 
+
         _lodash2.default.values(zoneList).forEach(function (zone) {
             if (zone.name === zoneName) {
                 dispatch((0, _activeZone.asyncZoneSetActiveZone)(zone));
@@ -73896,24 +76261,24 @@ function mapStateToProps(state) {
 
 exports.default = (0, _reactIntl.injectIntl)((0, _reactRedux.connect)(mapStateToProps)(ActiveZoneSelector));
 
-},{"../../actions/activeZone":506,"cf-component-select":82,"lodash":155,"react":493,"react-intl":276,"react-redux":299}],530:[function(require,module,exports){
+},{"../../actions/activeZone":492,"cf-component-select":84,"lodash":152,"react":475,"react-intl":255,"react-redux":277}],516:[function(_dereq_,module,exports){
 'use strict';
 
 exports.__esModule = true;
 
-var _react = require('react');
+var _react = _dereq_('react');
 
 var _react2 = _interopRequireDefault(_react);
 
-var _reactRedux = require('react-redux');
+var _reactRedux = _dereq_('react-redux');
 
-var _reactIntl = require('react-intl');
+var _reactIntl = _dereq_('react-intl');
 
-var _zoneSettings = require('../../actions/zoneSettings');
+var _zoneSettings = _dereq_('../../actions/zoneSettings');
 
-var _cfComponentCard = require('cf-component-card');
+var _cfComponentCard = _dereq_('cf-component-card');
 
-var _cfComponentToggle = require('cf-component-toggle');
+var _cfComponentToggle = _dereq_('cf-component-toggle');
 
 var _cfComponentToggle2 = _interopRequireDefault(_cfComponentToggle);
 
@@ -73990,30 +76355,30 @@ function mapStateToProps(state) {
 }
 exports.default = (0, _reactIntl.injectIntl)((0, _reactRedux.connect)(mapStateToProps)(AlwaysOnlineCard));
 
-},{"../../actions/zoneSettings":518,"cf-component-card":15,"cf-component-toggle":119,"react":493,"react-intl":276,"react-redux":299}],531:[function(require,module,exports){
+},{"../../actions/zoneSettings":504,"cf-component-card":15,"cf-component-toggle":113,"react":475,"react-intl":255,"react-redux":277}],517:[function(_dereq_,module,exports){
 'use strict';
 
-var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
-
 exports.__esModule = true;
 
-var _react = require('react');
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
+
+var _react = _dereq_('react');
 
 var _react2 = _interopRequireDefault(_react);
 
-var _reactRedux = require('react-redux');
+var _reactRedux = _dereq_('react-redux');
 
-var _reactIntl = require('react-intl');
+var _reactIntl = _dereq_('react-intl');
 
-var _cfComponentTabs = require('cf-component-tabs');
+var _cfComponentTabs = _dereq_('cf-component-tabs');
 
-var _cfComponentHeading = require('cf-component-heading');
+var _cfComponentHeading = _dereq_('cf-component-heading');
 
-var _reactC3Wrapper = require('react-c3-wrapper');
+var _reactC3Wrapper = _dereq_('react-c3-wrapper');
 
 var _reactC3Wrapper2 = _interopRequireDefault(_reactC3Wrapper);
 
-var _lodash = require('lodash');
+var _lodash = _dereq_('lodash');
 
 var _lodash2 = _interopRequireDefault(_lodash);
 
@@ -74180,44 +76545,46 @@ function mapStateToProps(state) {
 
 exports.default = (0, _reactIntl.injectIntl)((0, _reactRedux.connect)(mapStateToProps)(AnaltyicsPage));
 
-},{"cf-component-heading":47,"cf-component-tabs":99,"lodash":155,"react":493,"react-c3-wrapper":254,"react-intl":276,"react-redux":299}],532:[function(require,module,exports){
+},{"cf-component-heading":54,"cf-component-tabs":101,"lodash":152,"react":475,"react-c3-wrapper":236,"react-intl":255,"react-redux":277}],518:[function(_dereq_,module,exports){
 (function (global){
 'use strict';
 
 exports.__esModule = true;
 
-var _react = require('react');
+var _react = _dereq_('react');
 
 var _react2 = _interopRequireDefault(_react);
 
-var _reactRedux = require('react-redux');
+var _reactRedux = _dereq_('react-redux');
 
-var _reactIntl = require('react-intl');
+var _reactIntl = _dereq_('react-intl');
 
-var _reactGateway = require('react-gateway');
+var _reactGateway = _dereq_('react-gateway');
 
-var _cfComponentLayout = require('cf-component-layout');
+var _cfComponentLayout = _dereq_('cf-component-layout');
 
-var _ActiveZoneSelector = require('../../containers/ActiveZoneSelector/ActiveZoneSelector');
+var _ActiveZoneSelector = _dereq_('../../containers/ActiveZoneSelector/ActiveZoneSelector');
 
 var _ActiveZoneSelector2 = _interopRequireDefault(_ActiveZoneSelector);
 
-var _AppNavigation = require('../../containers/AppNavigation/AppNavigation');
+var _AppNavigation = _dereq_('../../containers/AppNavigation/AppNavigation');
 
 var _AppNavigation2 = _interopRequireDefault(_AppNavigation);
 
-var _Auth = require('../../utils/Auth/Auth');
+var _Auth = _dereq_('../../utils/Auth/Auth');
 
-var _config = require('../../actions/config');
+var _config = _dereq_('../../actions/config');
 
-var _NotificationList = require('../../containers/NotificationList/NotificationList');
+var _NotificationList = _dereq_('../../containers/NotificationList/NotificationList');
 
 var _NotificationList2 = _interopRequireDefault(_NotificationList);
 
-var _UnderAttackButton = require('../../containers/UnderAttackButton/UnderAttackButton');
+var _UnderAttackButton = _dereq_('../../containers/UnderAttackButton/UnderAttackButton');
 
 var _UnderAttackButton2 = _interopRequireDefault(_UnderAttackButton);
 
+var _config2 = _dereq_('../../selectors/config');
+
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
@@ -74228,7 +76595,7 @@ function _inherits(subClass, superClass) { if (typeof superClass !== "function"
 
 //Safari Intl Polyfill
 if (!global.Intl) {
-    require('intl');
+    _dereq_('intl');
 }
 
 var AppContainer = function (_Component) {
@@ -74241,6 +76608,8 @@ var AppContainer = function (_Component) {
     }
 
     AppContainer.prototype.render = function render() {
+        var config = this.props.state.config;
+
         return _react2.default.createElement(
             'div',
             { className: 'wrapper' },
@@ -74255,7 +76624,7 @@ var AppContainer = function (_Component) {
                 _react2.default.createElement(
                     'div',
                     { className: 'col-6' },
-                    _react2.default.createElement('img', { src: './assets/logo.svg' })
+                    _react2.default.createElement('img', { src: (0, _config2.getAbsoluteUrl)(config, "assets/logo.svg") })
                 ),
                 _react2.default.createElement(
                     'div',
@@ -74378,28 +76747,28 @@ exports.default = (0, _reactRedux.connect)(mapStateToProps)(AppWrapper);
 
 }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
 
-},{"../../actions/config":508,"../../containers/ActiveZoneSelector/ActiveZoneSelector":529,"../../containers/AppNavigation/AppNavigation":533,"../../containers/NotificationList/NotificationList":544,"../../containers/UnderAttackButton/UnderAttackButton":553,"../../utils/Auth/Auth":572,"cf-component-layout":51,"intl":151,"react":493,"react-gateway":262,"react-intl":276,"react-redux":299}],533:[function(require,module,exports){
+},{"../../actions/config":494,"../../containers/ActiveZoneSelector/ActiveZoneSelector":515,"../../containers/AppNavigation/AppNavigation":519,"../../containers/NotificationList/NotificationList":530,"../../containers/UnderAttackButton/UnderAttackButton":539,"../../selectors/config":557,"../../utils/Auth/Auth":559,"cf-component-layout":58,"intl":150,"react":475,"react-gateway":244,"react-intl":255,"react-redux":277}],519:[function(_dereq_,module,exports){
 'use strict';
 
 exports.__esModule = true;
 
-var _react = require('react');
+var _react = _dereq_('react');
 
 var _react2 = _interopRequireDefault(_react);
 
-var _reactIntl = require('react-intl');
+var _reactIntl = _dereq_('react-intl');
 
-var _reduxSimpleRouter = require('redux-simple-router');
+var _reduxSimpleRouter = _dereq_('redux-simple-router');
 
-var _cfComponentLink = require('cf-component-link');
+var _cfComponentLink = _dereq_('cf-component-link');
 
 var _cfComponentLink2 = _interopRequireDefault(_cfComponentLink);
 
-var _UrlPaths = require('../../constants/UrlPaths');
+var _UrlPaths = _dereq_('../../constants/UrlPaths');
 
 var UrlPaths = _interopRequireWildcard(_UrlPaths);
 
-var _Auth = require('../../utils/Auth/Auth');
+var _Auth = _dereq_('../../utils/Auth/Auth');
 
 function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 
@@ -74562,24 +76931,24 @@ AppNavigation.propTypes = {
 };
 exports.default = AppNavigation;
 
-},{"../../constants/UrlPaths":527,"../../utils/Auth/Auth":572,"cf-component-link":53,"react":493,"react-intl":276,"redux-simple-router":495}],534:[function(require,module,exports){
+},{"../../constants/UrlPaths":513,"../../utils/Auth/Auth":559,"cf-component-link":60,"react":475,"react-intl":255,"redux-simple-router":477}],520:[function(_dereq_,module,exports){
 'use strict';
 
 exports.__esModule = true;
 
-var _react = require('react');
+var _react = _dereq_('react');
 
 var _react2 = _interopRequireDefault(_react);
 
-var _reactRedux = require('react-redux');
+var _reactRedux = _dereq_('react-redux');
 
-var _reactIntl = require('react-intl');
+var _reactIntl = _dereq_('react-intl');
 
-var _zoneSettings = require('../../actions/zoneSettings');
+var _zoneSettings = _dereq_('../../actions/zoneSettings');
 
-var _cfComponentCard = require('cf-component-card');
+var _cfComponentCard = _dereq_('cf-component-card');
 
-var _cfComponentSelect = require('cf-component-select');
+var _cfComponentSelect = _dereq_('cf-component-select');
 
 var _cfComponentSelect2 = _interopRequireDefault(_cfComponentSelect);
 
@@ -74654,24 +77023,24 @@ function mapStateToProps(state) {
 }
 exports.default = (0, _reactIntl.injectIntl)((0, _reactRedux.connect)(mapStateToProps)(BrowserCacheTTLCard));
 
-},{"../../actions/zoneSettings":518,"cf-component-card":15,"cf-component-select":82,"react":493,"react-intl":276,"react-redux":299}],535:[function(require,module,exports){
+},{"../../actions/zoneSettings":504,"cf-component-card":15,"cf-component-select":84,"react":475,"react-intl":255,"react-redux":277}],521:[function(_dereq_,module,exports){
 'use strict';
 
 exports.__esModule = true;
 
-var _react = require('react');
+var _react = _dereq_('react');
 
 var _react2 = _interopRequireDefault(_react);
 
-var _reactRedux = require('react-redux');
+var _reactRedux = _dereq_('react-redux');
 
-var _reactIntl = require('react-intl');
+var _reactIntl = _dereq_('react-intl');
 
-var _zoneSettings = require('../../actions/zoneSettings');
+var _zoneSettings = _dereq_('../../actions/zoneSettings');
 
-var _cfComponentCard = require('cf-component-card');
+var _cfComponentCard = _dereq_('cf-component-card');
 
-var _cfComponentToggle = require('cf-component-toggle');
+var _cfComponentToggle = _dereq_('cf-component-toggle');
 
 var _cfComponentToggle2 = _interopRequireDefault(_cfComponentToggle);
 
@@ -74748,24 +77117,24 @@ function mapStateToProps(state) {
 }
 exports.default = (0, _reactIntl.injectIntl)((0, _reactRedux.connect)(mapStateToProps)(BrowserIntegrityCheckCard));
 
-},{"../../actions/zoneSettings":518,"cf-component-card":15,"cf-component-toggle":119,"react":493,"react-intl":276,"react-redux":299}],536:[function(require,module,exports){
+},{"../../actions/zoneSettings":504,"cf-component-card":15,"cf-component-toggle":113,"react":475,"react-intl":255,"react-redux":277}],522:[function(_dereq_,module,exports){
 'use strict';
 
 exports.__esModule = true;
 
-var _react = require('react');
+var _react = _dereq_('react');
 
 var _react2 = _interopRequireDefault(_react);
 
-var _reactRedux = require('react-redux');
+var _reactRedux = _dereq_('react-redux');
 
-var _reactIntl = require('react-intl');
+var _reactIntl = _dereq_('react-intl');
 
-var _zoneSettings = require('../../actions/zoneSettings');
+var _zoneSettings = _dereq_('../../actions/zoneSettings');
 
-var _cfComponentCard = require('cf-component-card');
+var _cfComponentCard = _dereq_('cf-component-card');
 
-var _cfComponentRadio = require('cf-component-radio');
+var _cfComponentRadio = _dereq_('cf-component-radio');
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
@@ -74839,24 +77208,24 @@ function mapStateToProps(state) {
 }
 exports.default = (0, _reactIntl.injectIntl)((0, _reactRedux.connect)(mapStateToProps)(CacheLevelCard));
 
-},{"../../actions/zoneSettings":518,"cf-component-card":15,"cf-component-radio":80,"react":493,"react-intl":276,"react-redux":299}],537:[function(require,module,exports){
+},{"../../actions/zoneSettings":504,"cf-component-card":15,"cf-component-radio":82,"react":475,"react-intl":255,"react-redux":277}],523:[function(_dereq_,module,exports){
 'use strict';
 
 exports.__esModule = true;
 
-var _react = require('react');
+var _react = _dereq_('react');
 
 var _react2 = _interopRequireDefault(_react);
 
-var _reactRedux = require('react-redux');
+var _reactRedux = _dereq_('react-redux');
 
-var _reactIntl = require('react-intl');
+var _reactIntl = _dereq_('react-intl');
 
-var _zoneSettings = require('../../actions/zoneSettings');
+var _zoneSettings = _dereq_('../../actions/zoneSettings');
 
-var _cfComponentCard = require('cf-component-card');
+var _cfComponentCard = _dereq_('cf-component-card');
 
-var _cfComponentSelect = require('cf-component-select');
+var _cfComponentSelect = _dereq_('cf-component-select');
 
 var _cfComponentSelect2 = _interopRequireDefault(_cfComponentSelect);
 
@@ -74932,42 +77301,42 @@ function mapStateToProps(state) {
 }
 exports.default = (0, _reactIntl.injectIntl)((0, _reactRedux.connect)(mapStateToProps)(ChallengePassageCard));
 
-},{"../../actions/zoneSettings":518,"cf-component-card":15,"cf-component-select":82,"react":493,"react-intl":276,"react-redux":299}],538:[function(require,module,exports){
+},{"../../actions/zoneSettings":504,"cf-component-card":15,"cf-component-select":84,"react":475,"react-intl":255,"react-redux":277}],524:[function(_dereq_,module,exports){
 'use strict';
 
 exports.__esModule = true;
 
-var _react = require('react');
+var _react = _dereq_('react');
 
 var _react2 = _interopRequireDefault(_react);
 
-var _reactRedux = require('react-redux');
+var _reactRedux = _dereq_('react-redux');
 
-var _reactIntl = require('react-intl');
+var _reactIntl = _dereq_('react-intl');
 
-var _lodash = require('lodash');
+var _lodash = _dereq_('lodash');
 
 var _lodash2 = _interopRequireDefault(_lodash);
 
-var _cfComponentTable = require('cf-component-table');
+var _cfComponentTable = _dereq_('cf-component-table');
 
-var _cfComponentHeading = require('cf-component-heading');
+var _cfComponentHeading = _dereq_('cf-component-heading');
 
-var _cfComponentButton = require('cf-component-button');
+var _cfComponentButton = _dereq_('cf-component-button');
 
-var _ActivationCheckCard = require('../../containers/ActivationCheckCard/ActivationCheckCard');
+var _ActivationCheckCard = _dereq_('../../containers/ActivationCheckCard/ActivationCheckCard');
 
 var _ActivationCheckCard2 = _interopRequireDefault(_ActivationCheckCard);
 
-var _DNSRecordEditor = require('../../containers/DNSRecordEditor/DNSRecordEditor');
+var _DNSRecordEditor = _dereq_('../../containers/DNSRecordEditor/DNSRecordEditor');
 
 var _DNSRecordEditor2 = _interopRequireDefault(_DNSRecordEditor);
 
-var _ZoneProvisionContainer = require('../../containers/ZoneProvisionContainer/ZoneProvisionContainer');
+var _ZoneProvisionContainer = _dereq_('../../containers/ZoneProvisionContainer/ZoneProvisionContainer');
 
 var _ZoneProvisionContainer2 = _interopRequireDefault(_ZoneProvisionContainer);
 
-var _UrlPaths = require('../../constants/UrlPaths.js');
+var _UrlPaths = _dereq_('../../constants/UrlPaths.js');
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
@@ -75000,7 +77369,7 @@ var DNSManagementPage = function (_Component) {
             isPending = zones[activeZone.name].status === 'pending';
         }
 
-        var zone = undefined;
+        var zone = void 0;
         if (!isActiveZoneNameEmpty) {
             zone = zones[activeZone.name];
         }
@@ -75111,34 +77480,34 @@ function mapStateToProps(state) {
 
 exports.default = (0, _reactIntl.injectIntl)((0, _reactRedux.connect)(mapStateToProps)(DNSManagementPage));
 
-},{"../../constants/UrlPaths.js":527,"../../containers/ActivationCheckCard/ActivationCheckCard":528,"../../containers/DNSRecordEditor/DNSRecordEditor":539,"../../containers/ZoneProvisionContainer/ZoneProvisionContainer":554,"cf-component-button":5,"cf-component-heading":47,"cf-component-table":96,"lodash":155,"react":493,"react-intl":276,"react-redux":299}],539:[function(require,module,exports){
+},{"../../constants/UrlPaths.js":513,"../../containers/ActivationCheckCard/ActivationCheckCard":514,"../../containers/DNSRecordEditor/DNSRecordEditor":525,"../../containers/ZoneProvisionContainer/ZoneProvisionContainer":540,"cf-component-button":5,"cf-component-heading":54,"cf-component-table":98,"lodash":152,"react":475,"react-intl":255,"react-redux":277}],525:[function(_dereq_,module,exports){
 'use strict';
 
 exports.__esModule = true;
 
-var _react = require('react');
+var _react = _dereq_('react');
 
 var _react2 = _interopRequireDefault(_react);
 
-var _reactRedux = require('react-redux');
+var _reactRedux = _dereq_('react-redux');
 
-var _reactIntl = require('react-intl');
+var _reactIntl = _dereq_('react-intl');
 
-var _cfComponentTable = require('cf-component-table');
+var _cfComponentTable = _dereq_('cf-component-table');
 
-var _CloudToggle = require('../../components/CloudToggle/CloudToggle');
+var _CloudToggle = _dereq_('../../components/CloudToggle/CloudToggle');
 
 var _CloudToggle2 = _interopRequireDefault(_CloudToggle);
 
-var _lodash = require('lodash');
+var _lodash = _dereq_('lodash');
 
 var _lodash2 = _interopRequireDefault(_lodash);
 
-var _Loading = require('../../components/Loading/Loading');
+var _Loading = _dereq_('../../components/Loading/Loading');
 
 var _Loading2 = _interopRequireDefault(_Loading);
 
-var _zoneDnsRecords = require('../../actions/zoneDnsRecords');
+var _zoneDnsRecords = _dereq_('../../actions/zoneDnsRecords');
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
@@ -75268,24 +77637,24 @@ function mapStateToProps(state) {
 }
 exports.default = (0, _reactIntl.injectIntl)((0, _reactRedux.connect)(mapStateToProps)(DNSRecordEditor));
 
-},{"../../actions/zoneDnsRecords":513,"../../components/CloudToggle/CloudToggle":520,"../../components/Loading/Loading":522,"cf-component-table":96,"lodash":155,"react":493,"react-intl":276,"react-redux":299}],540:[function(require,module,exports){
+},{"../../actions/zoneDnsRecords":499,"../../components/CloudToggle/CloudToggle":506,"../../components/Loading/Loading":508,"cf-component-table":98,"lodash":152,"react":475,"react-intl":255,"react-redux":277}],526:[function(_dereq_,module,exports){
 'use strict';
 
 exports.__esModule = true;
 
-var _react = require('react');
+var _react = _dereq_('react');
 
 var _react2 = _interopRequireDefault(_react);
 
-var _reactRedux = require('react-redux');
+var _reactRedux = _dereq_('react-redux');
 
-var _reactIntl = require('react-intl');
+var _reactIntl = _dereq_('react-intl');
 
-var _zoneSettings = require('../../actions/zoneSettings');
+var _zoneSettings = _dereq_('../../actions/zoneSettings');
 
-var _cfComponentCard = require('cf-component-card');
+var _cfComponentCard = _dereq_('cf-component-card');
 
-var _cfComponentToggle = require('cf-component-toggle');
+var _cfComponentToggle = _dereq_('cf-component-toggle');
 
 var _cfComponentToggle2 = _interopRequireDefault(_cfComponentToggle);
 
@@ -75362,24 +77731,24 @@ function mapStateToProps(state) {
 }
 exports.default = (0, _reactIntl.injectIntl)((0, _reactRedux.connect)(mapStateToProps)(DevelopmentModeCard));
 
-},{"../../actions/zoneSettings":518,"cf-component-card":15,"cf-component-toggle":119,"react":493,"react-intl":276,"react-redux":299}],541:[function(require,module,exports){
+},{"../../actions/zoneSettings":504,"cf-component-card":15,"cf-component-toggle":113,"react":475,"react-intl":255,"react-redux":277}],527:[function(_dereq_,module,exports){
 'use strict';
 
 exports.__esModule = true;
 
-var _react = require('react');
+var _react = _dereq_('react');
 
 var _react2 = _interopRequireDefault(_react);
 
-var _reactRedux = require('react-redux');
+var _reactRedux = _dereq_('react-redux');
 
-var _reactIntl = require('react-intl');
+var _reactIntl = _dereq_('react-intl');
 
-var _zoneSettings = require('../../actions/zoneSettings');
+var _zoneSettings = _dereq_('../../actions/zoneSettings');
 
-var _cfComponentCard = require('cf-component-card');
+var _cfComponentCard = _dereq_('cf-component-card');
 
-var _cfComponentToggle = require('cf-component-toggle');
+var _cfComponentToggle = _dereq_('cf-component-toggle');
 
 var _cfComponentToggle2 = _interopRequireDefault(_cfComponentToggle);
 
@@ -75456,36 +77825,38 @@ function mapStateToProps(state) {
 }
 exports.default = (0, _reactIntl.injectIntl)((0, _reactRedux.connect)(mapStateToProps)(IPV6Card));
 
-},{"../../actions/zoneSettings":518,"cf-component-card":15,"cf-component-toggle":119,"react":493,"react-intl":276,"react-redux":299}],542:[function(require,module,exports){
+},{"../../actions/zoneSettings":504,"cf-component-card":15,"cf-component-toggle":113,"react":475,"react-intl":255,"react-redux":277}],528:[function(_dereq_,module,exports){
 'use strict';
 
 exports.__esModule = true;
 
-var _react = require('react');
+var _react = _dereq_('react');
 
 var _react2 = _interopRequireDefault(_react);
 
-var _reactRedux = require('react-redux');
+var _reactRedux = _dereq_('react-redux');
 
-var _redux = require('redux');
+var _redux = _dereq_('redux');
 
-var _reactIntl = require('react-intl');
+var _reactIntl = _dereq_('react-intl');
 
-var _reactRouter = require('react-router');
+var _reactRouter = _dereq_('react-router');
 
-var _reduxSimpleRouter = require('redux-simple-router');
+var _reduxSimpleRouter = _dereq_('redux-simple-router');
 
-var _MarketingFeature = require('../../components/MarketingFeature/MarketingFeature');
+var _MarketingFeature = _dereq_('../../components/MarketingFeature/MarketingFeature');
 
 var _MarketingFeature2 = _interopRequireDefault(_MarketingFeature);
 
-var _user = require('../../actions/user');
+var _user = _dereq_('../../actions/user');
 
 var UserActionCreators = _interopRequireWildcard(_user);
 
-var _UrlPaths = require('../../constants/UrlPaths.js');
+var _UrlPaths = _dereq_('../../constants/UrlPaths.js');
 
-var _Auth = require('../../utils/Auth/Auth');
+var _Auth = _dereq_('../../utils/Auth/Auth');
+
+var _config = _dereq_('../../selectors/config');
 
 function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 
@@ -75518,6 +77889,8 @@ var LoginPage = function (_Component) {
         var _this2 = this;
 
         var formatMessage = this.props.intl.formatMessage;
+        var config = this.props.config;
+
 
         return _react2.default.createElement(
             'div',
@@ -75635,22 +78008,22 @@ var LoginPage = function (_Component) {
                 _react2.default.createElement(
                     'div',
                     { className: 'col-4' },
-                    _react2.default.createElement(_MarketingFeature2.default, { imgSrc: 'assets/icon-pin.svg', titleKey: 'component.marketingFeature.cdn.title', descriptionKey: 'component.marketingFeature.cdn.description' })
+                    _react2.default.createElement(_MarketingFeature2.default, { imgSrc: (0, _config.getAbsoluteUrl)(config, "assets/icon-pin.svg"), titleKey: 'component.marketingFeature.cdn.title', descriptionKey: 'component.marketingFeature.cdn.description' })
                 ),
                 _react2.default.createElement(
                     'div',
                     { className: 'col-4' },
-                    _react2.default.createElement(_MarketingFeature2.default, { imgSrc: 'assets/icon-bolt.svg', titleKey: 'component.marketingFeature.optimization.title', descriptionKey: 'component.marketingFeature.optimization.description' })
+                    _react2.default.createElement(_MarketingFeature2.default, { imgSrc: (0, _config.getAbsoluteUrl)(config, "assets/icon-bolt.svg"), titleKey: 'component.marketingFeature.optimization.title', descriptionKey: 'component.marketingFeature.optimization.description' })
                 ),
                 _react2.default.createElement(
                     'div',
                     { className: 'col-4' },
-                    _react2.default.createElement(_MarketingFeature2.default, { imgSrc: 'assets/icon-shield.svg', titleKey: 'component.marketingFeature.security.title', descriptionKey: 'component.marketingFeature.security.description' })
+                    _react2.default.createElement(_MarketingFeature2.default, { imgSrc: (0, _config.getAbsoluteUrl)(config, "assets/icon-shield.svg"), titleKey: 'component.marketingFeature.security.title', descriptionKey: 'component.marketingFeature.security.description' })
                 ),
                 _react2.default.createElement(
                     'div',
                     { className: 'col-4' },
-                    _react2.default.createElement(_MarketingFeature2.default, { imgSrc: 'assets/icon-lock.svg', titleKey: 'component.marketingFeature.ddos.title', descriptionKey: 'component.marketingFeature.ddos.description' })
+                    _react2.default.createElement(_MarketingFeature2.default, { imgSrc: (0, _config.getAbsoluteUrl)(config, "assets/icon-lock.svg"), titleKey: 'component.marketingFeature.ddos.title', descriptionKey: 'component.marketingFeature.ddos.description' })
                 )
             )
         );
@@ -75677,29 +78050,29 @@ var LoginPage = function (_Component) {
 }(_react.Component);
 
 function mapStateToProps(state) {
-    return { state: state };
+    return { config: state.config };
 }
 
 exports.default = (0, _reactIntl.injectIntl)((0, _reactRedux.connect)(mapStateToProps)(LoginPage));
 
-},{"../../actions/user":511,"../../components/MarketingFeature/MarketingFeature":523,"../../constants/UrlPaths.js":527,"../../utils/Auth/Auth":572,"react":493,"react-intl":276,"react-redux":299,"react-router":325,"redux":498,"redux-simple-router":495}],543:[function(require,module,exports){
+},{"../../actions/user":497,"../../components/MarketingFeature/MarketingFeature":509,"../../constants/UrlPaths.js":513,"../../selectors/config":557,"../../utils/Auth/Auth":559,"react":475,"react-intl":255,"react-redux":277,"react-router":307,"redux":484,"redux-simple-router":477}],529:[function(_dereq_,module,exports){
 'use strict';
 
 exports.__esModule = true;
 
-var _react = require('react');
+var _react = _dereq_('react');
 
 var _react2 = _interopRequireDefault(_react);
 
-var _reactRedux = require('react-redux');
+var _reactRedux = _dereq_('react-redux');
 
-var _reactIntl = require('react-intl');
+var _reactIntl = _dereq_('react-intl');
 
-var _zoneSettings = require('../../actions/zoneSettings');
+var _zoneSettings = _dereq_('../../actions/zoneSettings');
 
-var _cfComponentCard = require('cf-component-card');
+var _cfComponentCard = _dereq_('cf-component-card');
 
-var _cfComponentCheckbox = require('cf-component-checkbox');
+var _cfComponentCheckbox = _dereq_('cf-component-checkbox');
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
@@ -75743,6 +78116,7 @@ var MinifyCard = function (_Component) {
         var activeZoneId = _props.activeZoneId;
         var dispatch = _props.dispatch;
 
+
         this.setState({ checkboxValues: checkboxValueList });
         dispatch((0, _zoneSettings.asyncZoneUpdateSetting)(SETTING_NAME, activeZoneId, apiValueList));
     };
@@ -75750,6 +78124,7 @@ var MinifyCard = function (_Component) {
     MinifyCard.prototype.render = function render() {
         var formatMessage = this.props.intl.formatMessage;
 
+
         this.state.checkboxValues = [];
         //convert on/off to true/false
         for (var key in this.props.minifyValues) {
@@ -75800,24 +78175,24 @@ function mapStateToProps(state) {
 }
 exports.default = (0, _reactIntl.injectIntl)((0, _reactRedux.connect)(mapStateToProps)(MinifyCard));
 
-},{"../../actions/zoneSettings":518,"cf-component-card":15,"cf-component-checkbox":18,"react":493,"react-intl":276,"react-redux":299}],544:[function(require,module,exports){
+},{"../../actions/zoneSettings":504,"cf-component-card":15,"cf-component-checkbox":22,"react":475,"react-intl":255,"react-redux":277}],530:[function(_dereq_,module,exports){
 'use strict';
 
 exports.__esModule = true;
 
-var _react = require('react');
+var _react = _dereq_('react');
 
 var _react2 = _interopRequireDefault(_react);
 
-var _reactAddonsCssTransitionGroup = require('react-addons-css-transition-group');
+var _reactAddonsCssTransitionGroup = _dereq_('react-addons-css-transition-group');
 
 var _reactAddonsCssTransitionGroup2 = _interopRequireDefault(_reactAddonsCssTransitionGroup);
 
-var _Notification = require('../../components/Notification/Notification');
+var _Notification = _dereq_('../../components/Notification/Notification');
 
 var _Notification2 = _interopRequireDefault(_Notification);
 
-var _notifications = require('../../actions/notifications');
+var _notifications = _dereq_('../../actions/notifications');
 
 var NotificationActionCreators = _interopRequireWildcard(_notifications);
 
@@ -75865,58 +78240,58 @@ var NotificationList = function (_Component) {
 
 exports.default = NotificationList;
 
-},{"../../actions/notifications":510,"../../components/Notification/Notification":524,"react":493,"react-addons-css-transition-group":253}],545:[function(require,module,exports){
+},{"../../actions/notifications":496,"../../components/Notification/Notification":510,"react":475,"react-addons-css-transition-group":235}],531:[function(_dereq_,module,exports){
 'use strict';
 
 exports.__esModule = true;
 
-var _react = require('react');
+var _react = _dereq_('react');
 
 var _react2 = _interopRequireDefault(_react);
 
-var _reactRedux = require('react-redux');
+var _reactRedux = _dereq_('react-redux');
 
-var _reactIntl = require('react-intl');
+var _reactIntl = _dereq_('react-intl');
 
-var _lodash = require('lodash');
+var _lodash = _dereq_('lodash');
 
 var _lodash2 = _interopRequireDefault(_lodash);
 
-var _cfComponentHeading = require('cf-component-heading');
+var _cfComponentHeading = _dereq_('cf-component-heading');
 
-var _AlwaysOnlineCard = require('../../containers/AlwaysOnlineCard/AlwaysOnlineCard');
+var _AlwaysOnlineCard = _dereq_('../../containers/AlwaysOnlineCard/AlwaysOnlineCard');
 
 var _AlwaysOnlineCard2 = _interopRequireDefault(_AlwaysOnlineCard);
 
-var _CacheLevelCard = require('../../containers/CacheLevelCard/CacheLevelCard');
+var _CacheLevelCard = _dereq_('../../containers/CacheLevelCard/CacheLevelCard');
 
 var _CacheLevelCard2 = _interopRequireDefault(_CacheLevelCard);
 
-var _BrowserCacheTTLCard = require('../../containers/BrowserCacheTTLCard/BrowserCacheTTLCard');
+var _BrowserCacheTTLCard = _dereq_('../../containers/BrowserCacheTTLCard/BrowserCacheTTLCard');
 
 var _BrowserCacheTTLCard2 = _interopRequireDefault(_BrowserCacheTTLCard);
 
-var _DevelopmentModeCard = require('../../containers/DevelopmentModeCard/DevelopmentModeCard');
+var _DevelopmentModeCard = _dereq_('../../containers/DevelopmentModeCard/DevelopmentModeCard');
 
 var _DevelopmentModeCard2 = _interopRequireDefault(_DevelopmentModeCard);
 
-var _FeatureManager = require('../../components/FeatureManager/FeatureManager');
+var _FeatureManager = _dereq_('../../components/FeatureManager/FeatureManager');
 
 var _FeatureManager2 = _interopRequireDefault(_FeatureManager);
 
-var _IPV6Card = require('../../containers/IPV6Card/IPV6Card');
+var _IPV6Card = _dereq_('../../containers/IPV6Card/IPV6Card');
 
 var _IPV6Card2 = _interopRequireDefault(_IPV6Card);
 
-var _MinifyCard = require('../../containers/MinifyCard/MinifyCard');
+var _MinifyCard = _dereq_('../../containers/MinifyCard/MinifyCard');
 
 var _MinifyCard2 = _interopRequireDefault(_MinifyCard);
 
-var _PurgeCacheCard = require('../../containers/PurgeCacheCard/PurgeCacheCard');
+var _PurgeCacheCard = _dereq_('../../containers/PurgeCacheCard/PurgeCacheCard');
 
 var _PurgeCacheCard2 = _interopRequireDefault(_PurgeCacheCard);
 
-var _RailgunCard = require('../../containers/RailgunCard/RailgunCard');
+var _RailgunCard = _dereq_('../../containers/RailgunCard/RailgunCard');
 
 var _RailgunCard2 = _interopRequireDefault(_RailgunCard);
 
@@ -76013,26 +78388,26 @@ function mapStateToProps(state) {
 }
 exports.default = (0, _reactIntl.injectIntl)((0, _reactRedux.connect)(mapStateToProps)(PerformancePage));
 
-},{"../../components/FeatureManager/FeatureManager":521,"../../containers/AlwaysOnlineCard/AlwaysOnlineCard":530,"../../containers/BrowserCacheTTLCard/BrowserCacheTTLCard":534,"../../containers/CacheLevelCard/CacheLevelCard":536,"../../containers/DevelopmentModeCard/DevelopmentModeCard":540,"../../containers/IPV6Card/IPV6Card":541,"../../containers/MinifyCard/MinifyCard":543,"../../containers/PurgeCacheCard/PurgeCacheCard":546,"../../containers/RailgunCard/RailgunCard":547,"cf-component-heading":47,"lodash":155,"react":493,"react-intl":276,"react-redux":299}],546:[function(require,module,exports){
+},{"../../components/FeatureManager/FeatureManager":507,"../../containers/AlwaysOnlineCard/AlwaysOnlineCard":516,"../../containers/BrowserCacheTTLCard/BrowserCacheTTLCard":520,"../../containers/CacheLevelCard/CacheLevelCard":522,"../../containers/DevelopmentModeCard/DevelopmentModeCard":526,"../../containers/IPV6Card/IPV6Card":527,"../../containers/MinifyCard/MinifyCard":529,"../../containers/PurgeCacheCard/PurgeCacheCard":532,"../../containers/RailgunCard/RailgunCard":533,"cf-component-heading":54,"lodash":152,"react":475,"react-intl":255,"react-redux":277}],532:[function(_dereq_,module,exports){
 'use strict';
 
 exports.__esModule = true;
 
-var _react = require('react');
+var _react = _dereq_('react');
 
 var _react2 = _interopRequireDefault(_react);
 
-var _reactRedux = require('react-redux');
+var _reactRedux = _dereq_('react-redux');
 
-var _reactIntl = require('react-intl');
+var _reactIntl = _dereq_('react-intl');
 
-var _cfComponentButton = require('cf-component-button');
+var _cfComponentButton = _dereq_('cf-component-button');
 
-var _cfComponentCard = require('cf-component-card');
+var _cfComponentCard = _dereq_('cf-component-card');
 
-var _cfComponentModal = require('cf-component-modal');
+var _cfComponentModal = _dereq_('cf-component-modal');
 
-var _zonePurgeCache = require('../../actions/zonePurgeCache');
+var _zonePurgeCache = _dereq_('../../actions/zonePurgeCache');
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
@@ -76079,6 +78454,7 @@ var PurgeCacheCard = function (_Component) {
     PurgeCacheCard.prototype.render = function render() {
         var formatMessage = this.props.intl.formatMessage;
 
+
         return _react2.default.createElement(
             'div',
             null,
@@ -76164,34 +78540,34 @@ function mapStateToProps(state) {
 }
 exports.default = (0, _reactIntl.injectIntl)((0, _reactRedux.connect)(mapStateToProps)(PurgeCacheCard));
 
-},{"../../actions/zonePurgeCache":515,"cf-component-button":5,"cf-component-card":15,"cf-component-modal":65,"react":493,"react-intl":276,"react-redux":299}],547:[function(require,module,exports){
+},{"../../actions/zonePurgeCache":501,"cf-component-button":5,"cf-component-card":15,"cf-component-modal":72,"react":475,"react-intl":255,"react-redux":277}],533:[function(_dereq_,module,exports){
 'use strict';
 
 exports.__esModule = true;
 
-var _react = require('react');
+var _react = _dereq_('react');
 
 var _react2 = _interopRequireDefault(_react);
 
-var _reactRedux = require('react-redux');
+var _reactRedux = _dereq_('react-redux');
 
-var _reactIntl = require('react-intl');
+var _reactIntl = _dereq_('react-intl');
 
-var _lodash = require('lodash');
+var _lodash = _dereq_('lodash');
 
 var _lodash2 = _interopRequireDefault(_lodash);
 
-var _cfComponentButton = require('cf-component-button');
+var _cfComponentButton = _dereq_('cf-component-button');
 
-var _cfComponentCard = require('cf-component-card');
+var _cfComponentCard = _dereq_('cf-component-card');
 
-var _cfComponentTable = require('cf-component-table');
+var _cfComponentTable = _dereq_('cf-component-table');
 
-var _cfComponentToggle = require('cf-component-toggle');
+var _cfComponentToggle = _dereq_('cf-component-toggle');
 
 var _cfComponentToggle2 = _interopRequireDefault(_cfComponentToggle);
 
-var _zoneRailgun = require('../../actions/zoneRailgun');
+var _zoneRailgun = _dereq_('../../actions/zoneRailgun');
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
@@ -76296,7 +78672,7 @@ var RailgunCard = function (_Component) {
                                     _react2.default.createElement(
                                         _cfComponentTable.TableCell,
                                         null,
-                                        railgun.active ? _react2.default.createElement(_reactIntl.FormattedMessage, { id: 'container.railgunCard.table.active' }) : _react2.default.createElement(_reactIntl.FormattedMessage, { id: 'container.railgunCard.table.inactive' })
+                                        railgun.enabled ? _react2.default.createElement(_reactIntl.FormattedMessage, { id: 'container.railgunCard.table.active' }) : _react2.default.createElement(_reactIntl.FormattedMessage, { id: 'container.railgunCard.table.inactive' })
                                     ),
                                     _react2.default.createElement(
                                         _cfComponentTable.TableCell,
@@ -76329,28 +78705,28 @@ function mapStateToProps(state) {
 }
 exports.default = (0, _reactIntl.injectIntl)((0, _reactRedux.connect)(mapStateToProps)(RailgunCard));
 
-},{"../../actions/zoneRailgun":516,"cf-component-button":5,"cf-component-card":15,"cf-component-table":96,"cf-component-toggle":119,"lodash":155,"react":493,"react-intl":276,"react-redux":299}],548:[function(require,module,exports){
+},{"../../actions/zoneRailgun":502,"cf-component-button":5,"cf-component-card":15,"cf-component-table":98,"cf-component-toggle":113,"lodash":152,"react":475,"react-intl":255,"react-redux":277}],534:[function(_dereq_,module,exports){
 'use strict';
 
 exports.__esModule = true;
 
-var _react = require('react');
+var _react = _dereq_('react');
 
 var _react2 = _interopRequireDefault(_react);
 
-var _reactRedux = require('react-redux');
+var _reactRedux = _dereq_('react-redux');
 
-var _reactIntl = require('react-intl');
+var _reactIntl = _dereq_('react-intl');
 
-var _zoneSettings = require('../../actions/zoneSettings');
+var _zoneSettings = _dereq_('../../actions/zoneSettings');
 
-var _FeatureManager = require('../../components/FeatureManager/FeatureManager');
+var _FeatureManager = _dereq_('../../components/FeatureManager/FeatureManager');
 
 var _FeatureManager2 = _interopRequireDefault(_FeatureManager);
 
-var _cfComponentCard = require('cf-component-card');
+var _cfComponentCard = _dereq_('cf-component-card');
 
-var _cfComponentSelect = require('cf-component-select');
+var _cfComponentSelect = _dereq_('cf-component-select');
 
 var _cfComponentSelect2 = _interopRequireDefault(_cfComponentSelect);
 
@@ -76422,24 +78798,24 @@ function mapStateToProps(state) {
 }
 exports.default = (0, _reactIntl.injectIntl)((0, _reactRedux.connect)(mapStateToProps)(SSLCard));
 
-},{"../../actions/zoneSettings":518,"../../components/FeatureManager/FeatureManager":521,"cf-component-card":15,"cf-component-select":82,"react":493,"react-intl":276,"react-redux":299}],549:[function(require,module,exports){
+},{"../../actions/zoneSettings":504,"../../components/FeatureManager/FeatureManager":507,"cf-component-card":15,"cf-component-select":84,"react":475,"react-intl":255,"react-redux":277}],535:[function(_dereq_,module,exports){
 'use strict';
 
 exports.__esModule = true;
 
-var _react = require('react');
+var _react = _dereq_('react');
 
 var _react2 = _interopRequireDefault(_react);
 
-var _reactRedux = require('react-redux');
+var _reactRedux = _dereq_('react-redux');
 
-var _reactIntl = require('react-intl');
+var _reactIntl = _dereq_('react-intl');
 
-var _zoneScan = require('../../actions/zoneScan');
+var _zoneScan = _dereq_('../../actions/zoneScan');
 
-var _cfComponentCard = require('cf-component-card');
+var _cfComponentCard = _dereq_('cf-component-card');
 
-var _cfComponentToggle = require('cf-component-toggle');
+var _cfComponentToggle = _dereq_('cf-component-toggle');
 
 var _cfComponentToggle2 = _interopRequireDefault(_cfComponentToggle);
 
@@ -76514,24 +78890,24 @@ function mapStateToProps(state) {
 }
 exports.default = (0, _reactIntl.injectIntl)((0, _reactRedux.connect)(mapStateToProps)(ScanCard));
 
-},{"../../actions/zoneScan":517,"cf-component-card":15,"cf-component-toggle":119,"react":493,"react-intl":276,"react-redux":299}],550:[function(require,module,exports){
+},{"../../actions/zoneScan":503,"cf-component-card":15,"cf-component-toggle":113,"react":475,"react-intl":255,"react-redux":277}],536:[function(_dereq_,module,exports){
 'use strict';
 
 exports.__esModule = true;
 
-var _react = require('react');
+var _react = _dereq_('react');
 
 var _react2 = _interopRequireDefault(_react);
 
-var _reactRedux = require('react-redux');
+var _reactRedux = _dereq_('react-redux');
 
-var _reactIntl = require('react-intl');
+var _reactIntl = _dereq_('react-intl');
 
-var _zoneSettings = require('../../actions/zoneSettings');
+var _zoneSettings = _dereq_('../../actions/zoneSettings');
 
-var _cfComponentCard = require('cf-component-card');
+var _cfComponentCard = _dereq_('cf-component-card');
 
-var _cfComponentSelect = require('cf-component-select');
+var _cfComponentSelect = _dereq_('cf-component-select');
 
 var _cfComponentSelect2 = _interopRequireDefault(_cfComponentSelect);
 
@@ -76605,46 +78981,46 @@ function mapStateToProps(state) {
 }
 exports.default = (0, _reactIntl.injectIntl)((0, _reactRedux.connect)(mapStateToProps)(SecurityLevelCard));
 
-},{"../../actions/zoneSettings":518,"cf-component-card":15,"cf-component-select":82,"react":493,"react-intl":276,"react-redux":299}],551:[function(require,module,exports){
+},{"../../actions/zoneSettings":504,"cf-component-card":15,"cf-component-select":84,"react":475,"react-intl":255,"react-redux":277}],537:[function(_dereq_,module,exports){
 'use strict';
 
 exports.__esModule = true;
 
-var _react = require('react');
+var _react = _dereq_('react');
 
 var _react2 = _interopRequireDefault(_react);
 
-var _reactRedux = require('react-redux');
+var _reactRedux = _dereq_('react-redux');
 
-var _reactIntl = require('react-intl');
+var _reactIntl = _dereq_('react-intl');
 
-var _lodash = require('lodash');
+var _lodash = _dereq_('lodash');
 
 var _lodash2 = _interopRequireDefault(_lodash);
 
-var _cfComponentHeading = require('cf-component-heading');
+var _cfComponentHeading = _dereq_('cf-component-heading');
 
-var _BrowserIntegrityCheckCard = require('../../containers/BrowserIntegrityCheckCard/BrowserIntegrityCheckCard');
+var _BrowserIntegrityCheckCard = _dereq_('../../containers/BrowserIntegrityCheckCard/BrowserIntegrityCheckCard');
 
 var _BrowserIntegrityCheckCard2 = _interopRequireDefault(_BrowserIntegrityCheckCard);
 
-var _ChallengePassageCard = require('../../containers/ChallengePassageCard/ChallengePassageCard');
+var _ChallengePassageCard = _dereq_('../../containers/ChallengePassageCard/ChallengePassageCard');
 
 var _ChallengePassageCard2 = _interopRequireDefault(_ChallengePassageCard);
 
-var _FeatureManager = require('../../components/FeatureManager/FeatureManager');
+var _FeatureManager = _dereq_('../../components/FeatureManager/FeatureManager');
 
 var _FeatureManager2 = _interopRequireDefault(_FeatureManager);
 
-var _ScanCard = require('../../containers/ScanCard/ScanCard');
+var _ScanCard = _dereq_('../../containers/ScanCard/ScanCard');
 
 var _ScanCard2 = _interopRequireDefault(_ScanCard);
 
-var _SecurityLevelCard = require('../../containers/SecurityLevelCard/SecurityLevelCard');
+var _SecurityLevelCard = _dereq_('../../containers/SecurityLevelCard/SecurityLevelCard');
 
 var _SecurityLevelCard2 = _interopRequireDefault(_SecurityLevelCard);
 
-var _SSLCard = require('../../containers/SSLCard/SSLCard');
+var _SSLCard = _dereq_('../../containers/SSLCard/SSLCard');
 
 var _SSLCard2 = _interopRequireDefault(_SSLCard);
 
@@ -76728,32 +79104,32 @@ function mapStateToProps(state) {
 }
 exports.default = (0, _reactIntl.injectIntl)((0, _reactRedux.connect)(mapStateToProps)(SecurityPage));
 
-},{"../../components/FeatureManager/FeatureManager":521,"../../containers/BrowserIntegrityCheckCard/BrowserIntegrityCheckCard":535,"../../containers/ChallengePassageCard/ChallengePassageCard":537,"../../containers/SSLCard/SSLCard":548,"../../containers/ScanCard/ScanCard":549,"../../containers/SecurityLevelCard/SecurityLevelCard":550,"cf-component-heading":47,"lodash":155,"react":493,"react-intl":276,"react-redux":299}],552:[function(require,module,exports){
+},{"../../components/FeatureManager/FeatureManager":507,"../../containers/BrowserIntegrityCheckCard/BrowserIntegrityCheckCard":521,"../../containers/ChallengePassageCard/ChallengePassageCard":523,"../../containers/SSLCard/SSLCard":534,"../../containers/ScanCard/ScanCard":535,"../../containers/SecurityLevelCard/SecurityLevelCard":536,"cf-component-heading":54,"lodash":152,"react":475,"react-intl":255,"react-redux":277}],538:[function(_dereq_,module,exports){
 'use strict';
 
 exports.__esModule = true;
 
-var _react = require('react');
+var _react = _dereq_('react');
 
 var _react2 = _interopRequireDefault(_react);
 
-var _reactRedux = require('react-redux');
+var _reactRedux = _dereq_('react-redux');
 
-var _redux = require('redux');
+var _redux = _dereq_('redux');
 
-var _reactIntl = require('react-intl');
+var _reactIntl = _dereq_('react-intl');
 
-var _lodash = require('lodash');
+var _lodash = _dereq_('lodash');
 
 var _lodash2 = _interopRequireDefault(_lodash);
 
-var _user = require('../../actions/user');
+var _user = _dereq_('../../actions/user');
 
 var UserActionCreators = _interopRequireWildcard(_user);
 
-var _notifications = require('../../actions/notifications');
+var _notifications = _dereq_('../../actions/notifications');
 
-var _UrlPaths = require('../../constants/UrlPaths');
+var _UrlPaths = _dereq_('../../constants/UrlPaths');
 
 function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 
@@ -76779,6 +79155,7 @@ var SignUpPage = function (_Component) {
 
         var formatMessage = this.props.intl.formatMessage;
 
+
         return _react2.default.createElement(
             'section',
             { className: 'center login-form' },
@@ -76916,6 +79293,7 @@ var SignUpPage = function (_Component) {
         var dispatch = this.props.dispatch;
         var formatMessage = this.props.intl.formatMessage;
 
+
         var email = this.refs.email.value;
         var password = this.refs.password.value;
         var password2 = this.refs.password2.value;
@@ -76952,22 +79330,22 @@ function mapStateToProps(state) {
 
 exports.default = (0, _reactIntl.injectIntl)((0, _reactRedux.connect)(mapStateToProps)(SignUpPage));
 
-},{"../../actions/notifications":510,"../../actions/user":511,"../../constants/UrlPaths":527,"lodash":155,"react":493,"react-intl":276,"react-redux":299,"redux":498}],553:[function(require,module,exports){
+},{"../../actions/notifications":496,"../../actions/user":497,"../../constants/UrlPaths":513,"lodash":152,"react":475,"react-intl":255,"react-redux":277,"redux":484}],539:[function(_dereq_,module,exports){
 'use strict';
 
 exports.__esModule = true;
 
-var _react = require('react');
+var _react = _dereq_('react');
 
 var _react2 = _interopRequireDefault(_react);
 
-var _reactRedux = require('react-redux');
+var _reactRedux = _dereq_('react-redux');
 
-var _reactIntl = require('react-intl');
+var _reactIntl = _dereq_('react-intl');
 
-var _cfComponentButton = require('cf-component-button');
+var _cfComponentButton = _dereq_('cf-component-button');
 
-var _zoneSettings = require('../../actions/zoneSettings');
+var _zoneSettings = _dereq_('../../actions/zoneSettings');
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
@@ -77042,42 +79420,42 @@ function mapStateToProps(state) {
 }
 exports.default = (0, _reactIntl.injectIntl)((0, _reactRedux.connect)(mapStateToProps)(UnderAttackButton));
 
-},{"../../actions/zoneSettings":518,"cf-component-button":5,"react":493,"react-intl":276,"react-redux":299}],554:[function(require,module,exports){
+},{"../../actions/zoneSettings":504,"cf-component-button":5,"react":475,"react-intl":255,"react-redux":277}],540:[function(_dereq_,module,exports){
 'use strict';
 
 exports.__esModule = true;
 
-var _react = require('react');
+var _react = _dereq_('react');
 
 var _react2 = _interopRequireDefault(_react);
 
-var _reactRedux = require('react-redux');
+var _reactRedux = _dereq_('react-redux');
 
-var _reactIntl = require('react-intl');
+var _reactIntl = _dereq_('react-intl');
 
-var _lodash = require('lodash');
+var _lodash = _dereq_('lodash');
 
 var _lodash2 = _interopRequireDefault(_lodash);
 
-var _cfComponentButton = require('cf-component-button');
+var _cfComponentButton = _dereq_('cf-component-button');
 
-var _cfComponentLayout = require('cf-component-layout');
+var _cfComponentLayout = _dereq_('cf-component-layout');
 
-var _cfComponentModal = require('cf-component-modal');
+var _cfComponentModal = _dereq_('cf-component-modal');
 
-var _zones = require('../../actions/zones');
+var _zones = _dereq_('../../actions/zones');
 
-var _zoneProvision = require('../../actions/zoneProvision');
+var _zoneProvision = _dereq_('../../actions/zoneProvision');
 
-var _FeatureManager = require('../../components/FeatureManager/FeatureManager');
+var _FeatureManager = _dereq_('../../components/FeatureManager/FeatureManager');
 
 var _FeatureManager2 = _interopRequireDefault(_FeatureManager);
 
-var _Loading = require('../../components/Loading/Loading');
+var _Loading = _dereq_('../../components/Loading/Loading');
 
 var _Loading2 = _interopRequireDefault(_Loading);
 
-var _Schemas = require('../../constants/Schemas');
+var _Schemas = _dereq_('../../constants/Schemas');
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
@@ -77278,34 +79656,34 @@ function mapStateToProps(state) {
 
 exports.default = (0, _reactIntl.injectIntl)((0, _reactRedux.connect)(mapStateToProps)(ZoneProvisionContainer));
 
-},{"../../actions/zoneProvision":514,"../../actions/zones":519,"../../components/FeatureManager/FeatureManager":521,"../../components/Loading/Loading":522,"../../constants/Schemas":526,"cf-component-button":5,"cf-component-layout":51,"cf-component-modal":65,"lodash":155,"react":493,"react-intl":276,"react-redux":299}],555:[function(require,module,exports){
+},{"../../actions/zoneProvision":500,"../../actions/zones":505,"../../components/FeatureManager/FeatureManager":507,"../../components/Loading/Loading":508,"../../constants/Schemas":512,"cf-component-button":5,"cf-component-layout":58,"cf-component-modal":72,"lodash":152,"react":475,"react-intl":255,"react-redux":277}],541:[function(_dereq_,module,exports){
 'use strict';
 
-var _react = require('react');
+var _react = _dereq_('react');
 
 var _react2 = _interopRequireDefault(_react);
 
-var _reactDom = require('react-dom');
+var _reactDom = _dereq_('react-dom');
 
 var _reactDom2 = _interopRequireDefault(_reactDom);
 
-var _reactRedux = require('react-redux');
+var _reactRedux = _dereq_('react-redux');
 
-var _reactRouter = require('react-router');
+var _reactRouter = _dereq_('react-router');
 
-var _configureStore = require('./store/configureStore');
+var _configureStore = _dereq_('./store/configureStore');
 
 var _configureStore2 = _interopRequireDefault(_configureStore);
 
-var _routes = require('./routes');
+var _routes = _dereq_('./routes');
 
 var _routes2 = _interopRequireDefault(_routes);
 
-var _createHashHistory = require('history/lib/createHashHistory');
+var _createHashHistory = _dereq_('history/lib/createHashHistory');
 
 var _createHashHistory2 = _interopRequireDefault(_createHashHistory);
 
-var _cfUtilHttp = require('cf-util-http');
+var _cfUtilHttp = _dereq_('cf-util-http');
 
 var _cfUtilHttp2 = _interopRequireDefault(_cfUtilHttp);
 
@@ -77330,15 +79708,16 @@ _reactDom2.default.render(_react2.default.createElement(
     )
 ), document.getElementById('root'));
 
-},{"./routes":570,"./store/configureStore":571,"cf-util-http":120,"history/lib/createHashHistory":134,"react":493,"react-dom":257,"react-redux":299,"react-router":325}],556:[function(require,module,exports){
+},{"./routes":556,"./store/configureStore":558,"cf-util-http":115,"history/lib/createHashHistory":133,"react":475,"react-dom":239,"react-redux":277,"react-router":307}],542:[function(_dereq_,module,exports){
 "use strict";
 
+exports.__esModule = true;
+
 var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
 
-exports.__esModule = true;
 exports.activeZoneReducer = activeZoneReducer;
 
-var _ActionTypes = require("../constants/ActionTypes");
+var _ActionTypes = _dereq_("../constants/ActionTypes");
 
 var ActionTypes = _interopRequireWildcard(_ActionTypes);
 
@@ -77364,15 +79743,16 @@ function activeZoneReducer() {
     }
 }
 
-},{"../constants/ActionTypes":525}],557:[function(require,module,exports){
+},{"../constants/ActionTypes":511}],543:[function(_dereq_,module,exports){
 'use strict';
 
+exports.__esModule = true;
+
 var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
 
-exports.__esModule = true;
 exports.appReducer = appReducer;
 
-var _ActionTypes = require('../constants/ActionTypes');
+var _ActionTypes = _dereq_('../constants/ActionTypes');
 
 var ActionTypes = _interopRequireWildcard(_ActionTypes);
 
@@ -77396,15 +79776,17 @@ function appReducer() {
     }
 }
 
-},{"../constants/ActionTypes":525}],558:[function(require,module,exports){
-'use strict';
+},{"../constants/ActionTypes":511}],544:[function(_dereq_,module,exports){
+"use strict";
+
+exports.__esModule = true;
+exports.ABSOLUTE_URL_BASE_KEY = undefined;
 
 var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
 
-exports.__esModule = true;
 exports.configReducer = configReducer;
 
-var _ActionTypes = require('../constants/ActionTypes');
+var _ActionTypes = _dereq_("../constants/ActionTypes");
 
 var ActionTypes = _interopRequireWildcard(_ActionTypes);
 
@@ -77415,7 +79797,11 @@ var initialState = {
     isFetching: false
 };
 
+var ABSOLUTE_URL_BASE_KEY = exports.ABSOLUTE_URL_BASE_KEY = "absoluteUrlBase";
+
 function configReducer() {
+    var _extends2;
+
     var state = arguments.length <= 0 || arguments[0] === undefined ? initialState : arguments[0];
     var action = arguments[1];
 
@@ -77433,45 +79819,49 @@ function configReducer() {
             return _extends({}, state, {
                 isFetching: false
             });
+        case ActionTypes.CONFIG_UPDATE_BY_KEY:
+            return _extends({}, state, {
+                config: _extends({}, state.config, (_extends2 = {}, _extends2[action.key] = action.value, _extends2))
+            });
         default:
             return state;
     }
 }
 
-},{"../constants/ActionTypes":525}],559:[function(require,module,exports){
+},{"../constants/ActionTypes":511}],545:[function(_dereq_,module,exports){
 'use strict';
 
 exports.__esModule = true;
 
-var _redux = require('redux');
+var _redux = _dereq_('redux');
 
-var _reduxSimpleRouter = require('redux-simple-router');
+var _reduxSimpleRouter = _dereq_('redux-simple-router');
 
-var _activeZone = require('./activeZone');
+var _activeZone = _dereq_('./activeZone');
 
-var _app = require('./app');
+var _app = _dereq_('./app');
 
-var _config = require('./config');
+var _config = _dereq_('./config');
 
-var _zoneDnsRecords = require('./zoneDnsRecords.js');
+var _zoneDnsRecords = _dereq_('./zoneDnsRecords.js');
 
-var _intl = require('./intl');
+var _intl = _dereq_('./intl');
 
-var _notifications = require('./notifications');
+var _notifications = _dereq_('./notifications');
 
-var _user = require('./user');
+var _user = _dereq_('./user');
 
-var _zoneAnalytics = require('./zoneAnalytics');
+var _zoneAnalytics = _dereq_('./zoneAnalytics');
 
-var _zonePurgeCache = require('./zonePurgeCache');
+var _zonePurgeCache = _dereq_('./zonePurgeCache');
 
-var _zoneRailgun = require('./zoneRailgun');
+var _zoneRailgun = _dereq_('./zoneRailgun');
 
-var _zoneScan = require('./zoneScan');
+var _zoneScan = _dereq_('./zoneScan');
 
-var _zoneSettings = require('./zoneSettings');
+var _zoneSettings = _dereq_('./zoneSettings');
 
-var _zones = require('./zones');
+var _zones = _dereq_('./zones');
 
 var rootReducer = (0, _redux.combineReducers)({
     activeZone: _activeZone.activeZoneReducer,
@@ -77492,15 +79882,16 @@ var rootReducer = (0, _redux.combineReducers)({
 
 exports.default = rootReducer;
 
-},{"./activeZone":556,"./app":557,"./config":558,"./intl":560,"./notifications":561,"./user":562,"./zoneAnalytics":563,"./zoneDnsRecords.js":564,"./zonePurgeCache":565,"./zoneRailgun":566,"./zoneScan":567,"./zoneSettings":568,"./zones":569,"redux":498,"redux-simple-router":495}],560:[function(require,module,exports){
+},{"./activeZone":542,"./app":543,"./config":544,"./intl":546,"./notifications":547,"./user":548,"./zoneAnalytics":549,"./zoneDnsRecords.js":550,"./zonePurgeCache":551,"./zoneRailgun":552,"./zoneScan":553,"./zoneSettings":554,"./zones":555,"redux":484,"redux-simple-router":477}],546:[function(_dereq_,module,exports){
 "use strict";
 
+exports.__esModule = true;
+
 var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
 
-exports.__esModule = true;
 exports.intlReducer = intlReducer;
 
-var _ActionTypes = require("../constants/ActionTypes");
+var _ActionTypes = _dereq_("../constants/ActionTypes");
 
 var ActionTypes = _interopRequireWildcard(_ActionTypes);
 
@@ -77536,13 +79927,13 @@ function intlReducer() {
     }
 }
 
-},{"../constants/ActionTypes":525}],561:[function(require,module,exports){
+},{"../constants/ActionTypes":511}],547:[function(_dereq_,module,exports){
 'use strict';
 
 exports.__esModule = true;
 exports.notificationsReducer = notificationsReducer;
 
-var _ActionTypes = require('../constants/ActionTypes');
+var _ActionTypes = _dereq_('../constants/ActionTypes');
 
 var ActionTypes = _interopRequireWildcard(_ActionTypes);
 
@@ -77571,19 +79962,20 @@ function notificationsReducer() {
     }
 }
 
-},{"../constants/ActionTypes":525}],562:[function(require,module,exports){
+},{"../constants/ActionTypes":511}],548:[function(_dereq_,module,exports){
 'use strict';
 
+exports.__esModule = true;
+
 var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
 
-exports.__esModule = true;
 exports.userReducer = userReducer;
 
-var _ActionTypes = require('../constants/ActionTypes');
+var _ActionTypes = _dereq_('../constants/ActionTypes');
 
 var ActionTypes = _interopRequireWildcard(_ActionTypes);
 
-var _Auth = require('../utils/Auth/Auth');
+var _Auth = _dereq_('../utils/Auth/Auth');
 
 function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 
@@ -77634,19 +80026,20 @@ function userReducer() {
     }
 }
 
-},{"../constants/ActionTypes":525,"../utils/Auth/Auth":572}],563:[function(require,module,exports){
+},{"../constants/ActionTypes":511,"../utils/Auth/Auth":559}],549:[function(_dereq_,module,exports){
 'use strict';
 
+exports.__esModule = true;
+
 var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
 
-exports.__esModule = true;
 exports.zoneAnalyticsReducer = zoneAnalyticsReducer;
 
-var _ActionTypes = require('../constants/ActionTypes');
+var _ActionTypes = _dereq_('../constants/ActionTypes');
 
 var ActionTypes = _interopRequireWildcard(_ActionTypes);
 
-var _lodash = require('lodash');
+var _lodash = _dereq_('lodash');
 
 var _lodash2 = _interopRequireDefault(_lodash);
 
@@ -77715,21 +80108,22 @@ function buildZoneAnalyticsData(zoneAnalyticsResponse) {
     return data;
 }
 
-},{"../constants/ActionTypes":525,"lodash":155}],564:[function(require,module,exports){
+},{"../constants/ActionTypes":511,"lodash":152}],550:[function(_dereq_,module,exports){
 'use strict';
 
+exports.__esModule = true;
+
 var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
 
-exports.__esModule = true;
 exports.dnsRecordsReducer = dnsRecordsReducer;
 
-var _normalizr = require('normalizr');
+var _normalizr = _dereq_('normalizr');
 
-var _lodash = require('lodash');
+var _lodash = _dereq_('lodash');
 
 var _lodash2 = _interopRequireDefault(_lodash);
 
-var _ActionTypes = require('../constants/ActionTypes');
+var _ActionTypes = _dereq_('../constants/ActionTypes');
 
 var ActionTypes = _interopRequireWildcard(_ActionTypes);
 
@@ -77809,19 +80203,20 @@ function patchDnsRecord(zoneId, dnsRecordList, dnsRecord) {
     return dnsRecordList;
 }
 
-},{"../constants/ActionTypes":525,"lodash":155,"normalizr":159}],565:[function(require,module,exports){
+},{"../constants/ActionTypes":511,"lodash":152,"normalizr":156}],551:[function(_dereq_,module,exports){
 'use strict';
 
+exports.__esModule = true;
+
 var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
 
-exports.__esModule = true;
 exports.zonePurgeCacheReducer = zonePurgeCacheReducer;
 
-var _ActionTypes = require('../constants/ActionTypes');
+var _ActionTypes = _dereq_('../constants/ActionTypes');
 
 var ActionTypes = _interopRequireWildcard(_ActionTypes);
 
-var _lodash = require('lodash');
+var _lodash = _dereq_('lodash');
 
 var _lodash2 = _interopRequireDefault(_lodash);
 
@@ -77855,23 +80250,24 @@ function zonePurgeCacheReducer() {
     }
 }
 
-},{"../constants/ActionTypes":525,"lodash":155}],566:[function(require,module,exports){
+},{"../constants/ActionTypes":511,"lodash":152}],552:[function(_dereq_,module,exports){
 'use strict';
 
+exports.__esModule = true;
+
 var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
 
-exports.__esModule = true;
 exports.zoneRailgunReducer = zoneRailgunReducer;
 
-var _lodash = require('lodash');
+var _lodash = _dereq_('lodash');
 
 var _lodash2 = _interopRequireDefault(_lodash);
 
-var _ActionTypes = require('../constants/ActionTypes');
+var _ActionTypes = _dereq_('../constants/ActionTypes');
 
 var ActionTypes = _interopRequireWildcard(_ActionTypes);
 
-var _Schemas = require('../constants/Schemas');
+var _Schemas = _dereq_('../constants/Schemas');
 
 function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 
@@ -77930,21 +80326,22 @@ function getPatchedEntities(state, action) {
     return patchedEntities;
 }
 
-},{"../constants/ActionTypes":525,"../constants/Schemas":526,"lodash":155}],567:[function(require,module,exports){
+},{"../constants/ActionTypes":511,"../constants/Schemas":512,"lodash":152}],553:[function(_dereq_,module,exports){
 'use strict';
 
+exports.__esModule = true;
+
 var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
 
-exports.__esModule = true;
 exports.zoneScanReducer = zoneScanReducer;
 
-var _normalizr = require('normalizr');
+var _normalizr = _dereq_('normalizr');
 
-var _lodash = require('lodash');
+var _lodash = _dereq_('lodash');
 
 var _lodash2 = _interopRequireDefault(_lodash);
 
-var _ActionTypes = require('../constants/ActionTypes');
+var _ActionTypes = _dereq_('../constants/ActionTypes');
 
 var ActionTypes = _interopRequireWildcard(_ActionTypes);
 
@@ -78001,21 +80398,22 @@ function patchEntity(zoneId, zoneScan, state) {
     return entities;
 }
 
-},{"../constants/ActionTypes":525,"lodash":155,"normalizr":159}],568:[function(require,module,exports){
+},{"../constants/ActionTypes":511,"lodash":152,"normalizr":156}],554:[function(_dereq_,module,exports){
 'use strict';
 
+exports.__esModule = true;
+
 var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
 
-exports.__esModule = true;
 exports.zoneSettingsReducer = zoneSettingsReducer;
 
-var _normalizr = require('normalizr');
+var _normalizr = _dereq_('normalizr');
 
-var _lodash = require('lodash');
+var _lodash = _dereq_('lodash');
 
 var _lodash2 = _interopRequireDefault(_lodash);
 
-var _ActionTypes = require('../constants/ActionTypes');
+var _ActionTypes = _dereq_('../constants/ActionTypes');
 
 var ActionTypes = _interopRequireWildcard(_ActionTypes);
 
@@ -78077,23 +80475,24 @@ function patchSetting(zoneId, setting, state) {
     return patchedEntities;
 }
 
-},{"../constants/ActionTypes":525,"lodash":155,"normalizr":159}],569:[function(require,module,exports){
+},{"../constants/ActionTypes":511,"lodash":152,"normalizr":156}],555:[function(_dereq_,module,exports){
 'use strict';
 
+exports.__esModule = true;
+
 var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
 
-exports.__esModule = true;
 exports.zonesReducer = zonesReducer;
 
-var _lodash = require('lodash');
+var _lodash = _dereq_('lodash');
 
 var _lodash2 = _interopRequireDefault(_lodash);
 
-var _ActionTypes = require('../constants/ActionTypes');
+var _ActionTypes = _dereq_('../constants/ActionTypes');
 
 var ActionTypes = _interopRequireWildcard(_ActionTypes);
 
-var _Schemas = require('../constants/Schemas');
+var _Schemas = _dereq_('../constants/Schemas');
 
 function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
 
@@ -78170,48 +80569,48 @@ function zonesReducer() {
     }
 }
 
-},{"../constants/ActionTypes":525,"../constants/Schemas":526,"lodash":155}],570:[function(require,module,exports){
+},{"../constants/ActionTypes":511,"../constants/Schemas":512,"lodash":152}],556:[function(_dereq_,module,exports){
 'use strict';
 
 exports.__esModule = true;
 
-var _react = require('react');
+var _react = _dereq_('react');
 
 var _react2 = _interopRequireDefault(_react);
 
-var _reactRouter = require('react-router');
+var _reactRouter = _dereq_('react-router');
 
-var _UrlPaths = require('./constants/UrlPaths');
+var _UrlPaths = _dereq_('./constants/UrlPaths');
 
 var UrlPaths = _interopRequireWildcard(_UrlPaths);
 
-var _Auth = require('./utils/Auth/Auth');
+var _Auth = _dereq_('./utils/Auth/Auth');
 
-var _AnaltyicsPage = require('./containers/AnalyticsPage/AnaltyicsPage');
+var _AnaltyicsPage = _dereq_('./containers/AnalyticsPage/AnaltyicsPage');
 
 var _AnaltyicsPage2 = _interopRequireDefault(_AnaltyicsPage);
 
-var _App = require('./containers/App/App');
+var _App = _dereq_('./containers/App/App');
 
 var _App2 = _interopRequireDefault(_App);
 
-var _DNSManagementPage = require('./containers/DNSManagementPage/DNSManagementPage');
+var _DNSManagementPage = _dereq_('./containers/DNSManagementPage/DNSManagementPage');
 
 var _DNSManagementPage2 = _interopRequireDefault(_DNSManagementPage);
 
-var _LoginPage = require('./containers/LoginPage/LoginPage');
+var _LoginPage = _dereq_('./containers/LoginPage/LoginPage');
 
 var _LoginPage2 = _interopRequireDefault(_LoginPage);
 
-var _PerformancePage = require('./containers/PerformancePage/PerformancePage');
+var _PerformancePage = _dereq_('./containers/PerformancePage/PerformancePage');
 
 var _PerformancePage2 = _interopRequireDefault(_PerformancePage);
 
-var _SecurityPage = require('./containers/SecurityPage/SecurityPage');
+var _SecurityPage = _dereq_('./containers/SecurityPage/SecurityPage');
 
 var _SecurityPage2 = _interopRequireDefault(_SecurityPage);
 
-var _SignUpPage = require('./containers/SignUpPage/SignUpPage');
+var _SignUpPage = _dereq_('./containers/SignUpPage/SignUpPage');
 
 var _SignUpPage2 = _interopRequireDefault(_SignUpPage);
 
@@ -78227,6 +80626,7 @@ function requireAuth(nextState, replaceState) {
 
 /* containers */
 
+
 exports.default = _react2.default.createElement(
     _reactRouter.Route,
     { path: '/', component: _App2.default },
@@ -78239,27 +80639,40 @@ exports.default = _react2.default.createElement(
     _react2.default.createElement(_reactRouter.Route, { path: UrlPaths.SECURITY_PAGE, component: _SecurityPage2.default, onEnter: requireAuth })
 );
 
-},{"./constants/UrlPaths":527,"./containers/AnalyticsPage/AnaltyicsPage":531,"./containers/App/App":532,"./containers/DNSManagementPage/DNSManagementPage":538,"./containers/LoginPage/LoginPage":542,"./containers/PerformancePage/PerformancePage":545,"./containers/SecurityPage/SecurityPage":551,"./containers/SignUpPage/SignUpPage":552,"./utils/Auth/Auth":572,"react":493,"react-router":325}],571:[function(require,module,exports){
+},{"./constants/UrlPaths":513,"./containers/AnalyticsPage/AnaltyicsPage":517,"./containers/App/App":518,"./containers/DNSManagementPage/DNSManagementPage":524,"./containers/LoginPage/LoginPage":528,"./containers/PerformancePage/PerformancePage":531,"./containers/SecurityPage/SecurityPage":537,"./containers/SignUpPage/SignUpPage":538,"./utils/Auth/Auth":559,"react":475,"react-router":307}],557:[function(_dereq_,module,exports){
+'use strict';
+
+exports.__esModule = true;
+exports.getAbsoluteUrl = getAbsoluteUrl;
+
+var _config = _dereq_('../reducers/config');
+
+function getAbsoluteUrl(config, url) {
+    var baseUrl = typeof config.config[_config.ABSOLUTE_URL_BASE_KEY] !== 'undefined' ? config.config[_config.ABSOLUTE_URL_BASE_KEY] : "";
+    return baseUrl + url;
+}
+
+},{"../reducers/config":544}],558:[function(_dereq_,module,exports){
 'use strict';
 
 exports.__esModule = true;
 exports.default = configureStore;
 
-var _redux = require('redux');
+var _redux = _dereq_('redux');
 
-var _reduxThunk = require('redux-thunk');
+var _reduxThunk = _dereq_('redux-thunk');
 
 var _reduxThunk2 = _interopRequireDefault(_reduxThunk);
 
-var _reduxLogger = require('redux-logger');
+var _reduxLogger = _dereq_('redux-logger');
 
 var _reduxLogger2 = _interopRequireDefault(_reduxLogger);
 
-var _reducers = require('../reducers');
+var _reducers = _dereq_('../reducers');
 
 var _reducers2 = _interopRequireDefault(_reducers);
 
-var _reduxSimpleRouter = require('redux-simple-router');
+var _reduxSimpleRouter = _dereq_('redux-simple-router');
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
@@ -78274,7 +80687,7 @@ function configureStore(history, initialState) {
     return store;
 }
 
-},{"../reducers":559,"redux":498,"redux-logger":494,"redux-simple-router":495,"redux-thunk":496}],572:[function(require,module,exports){
+},{"../reducers":545,"redux":484,"redux-logger":476,"redux-simple-router":477,"redux-thunk":478}],559:[function(_dereq_,module,exports){
 'use strict';
 
 exports.__esModule = true;
@@ -78282,7 +80695,7 @@ exports.isLoggedIn = isLoggedIn;
 exports.getEmail = getEmail;
 exports.setEmail = setEmail;
 
-var _lodash = require('lodash');
+var _lodash = _dereq_('lodash');
 
 var _lodash2 = _interopRequireDefault(_lodash);
 
@@ -78303,7 +80716,7 @@ function setEmail(email) {
     localStorage.cfEmail = email;
 }
 
-},{"lodash":155}],573:[function(require,module,exports){
+},{"lodash":152}],560:[function(_dereq_,module,exports){
 'use strict';
 
 exports.__esModule = true;
@@ -78324,7 +80737,7 @@ exports.zoneRailgunPatch = zoneRailgunPatch;
 exports.zoneScanGet = zoneScanGet;
 exports.zoneScanPut = zoneScanPut;
 
-var _cfUtilHttp = require('cf-util-http');
+var _cfUtilHttp = _dereq_('cf-util-http');
 
 var _cfUtilHttp2 = _interopRequireDefault(_cfUtilHttp);
 
@@ -78673,7 +81086,7 @@ function zoneScanPut(zoneId, showInterstitial, onSuccess, onError) {
     return _cfUtilHttp2.default.put(ENDPOINT + "/zones/" + zoneId + "/scan", opts, onSuccess, onError);
 }
 
-},{"cf-util-http":120}],574:[function(require,module,exports){
+},{"cf-util-http":115}],561:[function(_dereq_,module,exports){
 'use strict';
 
 exports.__esModule = true;
@@ -78684,7 +81097,7 @@ exports.userAuth = userAuth;
 exports.partialZoneSet = partialZoneSet;
 exports.fullZoneSet = fullZoneSet;
 
-var _cfUtilHttp = require('cf-util-http');
+var _cfUtilHttp = _dereq_('cf-util-http');
 
 var _cfUtilHttp2 = _interopRequireDefault(_cfUtilHttp);
 
@@ -78854,7 +81267,7 @@ function send(method, opts, onSuccess, onError) {
     return _cfUtilHttp2.default.request(method, ENDPOINT, opts, onSuccess, onError);
 }
 
-},{"cf-util-http":120}]},{},[555])
-
+},{"cf-util-http":115}]},{},[541])
 
+ })();
 //# sourceMappingURL=compiled.js.map
diff --git a/compiled.js.map b/compiled.js.map
index 84186c47..29b2657f 100644
--- a/compiled.js.map
+++ b/compiled.js.map
@@ -1 +1 @@
-{"version":3,"sources":["node_modules/browserify/node_modules/browser-pack/_prelude.js","node_modules/browserify/node_modules/browser-resolve/empty.js","node_modules/browserify/node_modules/process/browser.js","node_modules/cf-component-button/lib/Button.js","node_modules/cf-component-button/lib/ButtonGroup.js","node_modules/cf-component-button/lib/index.js","node_modules/cf-component-card/lib/Card.js","node_modules/cf-component-card/lib/CardContent.js","node_modules/cf-component-card/lib/CardControl.js","node_modules/cf-component-card/lib/CardDrawers.js","node_modules/cf-component-card/lib/CardLoadingText.js","node_modules/cf-component-card/lib/CardMessages.js","node_modules/cf-component-card/lib/CardSection.js","node_modules/cf-component-card/lib/CardToolbar.js","node_modules/cf-component-card/lib/CardToolbarLink.js","node_modules/cf-component-card/lib/index.js","node_modules/cf-component-checkbox/lib/Checkbox.js","node_modules/cf-component-checkbox/lib/CheckboxGroup.js","node_modules/cf-component-checkbox/lib/index.js","node_modules/cf-component-checkbox/node_modules/lodash/_arrayMap.js","node_modules/cf-component-checkbox/node_modules/lodash/_baseHas.js","node_modules/cf-component-checkbox/node_modules/lodash/_baseIndexOf.js","node_modules/cf-component-checkbox/node_modules/lodash/_baseKeys.js","node_modules/cf-component-checkbox/node_modules/lodash/_baseProperty.js","node_modules/cf-component-checkbox/node_modules/lodash/_baseTimes.js","node_modules/cf-component-checkbox/node_modules/lodash/_baseValues.js","node_modules/cf-component-checkbox/node_modules/lodash/_getLength.js","node_modules/cf-component-checkbox/node_modules/lodash/_indexKeys.js","node_modules/cf-component-checkbox/node_modules/lodash/_indexOfNaN.js","node_modules/cf-component-checkbox/node_modules/lodash/_isIndex.js","node_modules/cf-component-checkbox/node_modules/lodash/_isPrototype.js","node_modules/cf-component-checkbox/node_modules/lodash/includes.js","node_modules/cf-component-checkbox/node_modules/lodash/isArguments.js","node_modules/cf-component-checkbox/node_modules/lodash/isArray.js","node_modules/cf-component-checkbox/node_modules/lodash/isArrayLike.js","node_modules/cf-component-checkbox/node_modules/lodash/isArrayLikeObject.js","node_modules/cf-component-checkbox/node_modules/lodash/isFunction.js","node_modules/cf-component-checkbox/node_modules/lodash/isLength.js","node_modules/cf-component-checkbox/node_modules/lodash/isObject.js","node_modules/cf-component-checkbox/node_modules/lodash/isObjectLike.js","node_modules/cf-component-checkbox/node_modules/lodash/isString.js","node_modules/cf-component-checkbox/node_modules/lodash/keys.js","node_modules/cf-component-checkbox/node_modules/lodash/toInteger.js","node_modules/cf-component-checkbox/node_modules/lodash/toNumber.js","node_modules/cf-component-checkbox/node_modules/lodash/values.js","node_modules/cf-component-heading/lib/Heading.js","node_modules/cf-component-heading/lib/HeadingCaption.js","node_modules/cf-component-heading/lib/index.js","node_modules/cf-component-layout/lib/LayoutColumn.js","node_modules/cf-component-layout/lib/LayoutContainer.js","node_modules/cf-component-layout/lib/LayoutRow.js","node_modules/cf-component-layout/lib/index.js","node_modules/cf-component-link/lib/Link.js","node_modules/cf-component-link/lib/index.js","node_modules/cf-component-link/node_modules/cf-util-route-handler/lib/index.js","node_modules/cf-component-list/lib/List.js","node_modules/cf-component-list/lib/ListItem.js","node_modules/cf-component-list/lib/index.js","node_modules/cf-component-modal/lib/Modal.js","node_modules/cf-component-modal/lib/ModalActions.js","node_modules/cf-component-modal/lib/ModalBody.js","node_modules/cf-component-modal/lib/ModalClose.js","node_modules/cf-component-modal/lib/ModalFooter.js","node_modules/cf-component-modal/lib/ModalHeader.js","node_modules/cf-component-modal/lib/ModalTitle.js","node_modules/cf-component-modal/lib/index.js","node_modules/cf-component-modal/node_modules/react-gateway/lib/Gateway.js","node_modules/cf-component-modal/node_modules/react-gateway/lib/GatewayDest.js","node_modules/cf-component-modal/node_modules/react-gateway/lib/GatewayProvider.js","node_modules/cf-component-modal/node_modules/react-gateway/lib/GatewayRegistry.js","node_modules/cf-component-modal/node_modules/react-gateway/lib/index.js","node_modules/cf-component-modal/node_modules/react-modal2/lib/Modal.js","node_modules/cf-component-modal/node_modules/react-modal2/lib/index.js","node_modules/cf-component-modal/node_modules/react-modal2/node_modules/a11y-focus-scope/index.js","node_modules/cf-component-modal/node_modules/react-modal2/node_modules/a11y-focus-scope/node_modules/focusin/focusin.js","node_modules/cf-component-modal/node_modules/react-modal2/node_modules/a11y-focus-scope/node_modules/tabbable/index.js","node_modules/cf-component-modal/node_modules/react-modal2/node_modules/a11y-focus-store/index.js","node_modules/cf-component-modal/node_modules/react-modal2/node_modules/exenv/index.js","node_modules/cf-component-radio/lib/Radio.js","node_modules/cf-component-radio/lib/RadioGroup.js","node_modules/cf-component-radio/lib/index.js","node_modules/cf-component-select/lib/Select.js","node_modules/cf-component-select/lib/index.js","node_modules/cf-component-select/node_modules/react-select/lib/Option.js","node_modules/cf-component-select/node_modules/react-select/lib/Select.js","node_modules/cf-component-select/node_modules/react-select/lib/SingleValue.js","node_modules/cf-component-select/node_modules/react-select/lib/Value.js","node_modules/cf-component-select/node_modules/react-select/node_modules/classnames/index.js","node_modules/cf-component-select/node_modules/react-select/node_modules/react-input-autosize/lib/AutosizeInput.js","node_modules/cf-component-table/lib/Table.js","node_modules/cf-component-table/lib/TableBody.js","node_modules/cf-component-table/lib/TableCell.js","node_modules/cf-component-table/lib/TableFoot.js","node_modules/cf-component-table/lib/TableHead.js","node_modules/cf-component-table/lib/TableHeadCell.js","node_modules/cf-component-table/lib/TableRow.js","node_modules/cf-component-table/lib/index.js","node_modules/cf-component-tabs/lib/Tabs.js","node_modules/cf-component-tabs/lib/TabsPanel.js","node_modules/cf-component-tabs/lib/index.js","node_modules/cf-component-tabs/node_modules/cf-component-select/lib/Select.js","node_modules/cf-component-tabs/node_modules/cf-component-select/lib/index.js","node_modules/cf-component-tabs/node_modules/cf-component-viewport/lib/Viewport.js","node_modules/cf-component-tabs/node_modules/cf-component-viewport/lib/buildMediaQuery.js","node_modules/cf-component-tabs/node_modules/cf-component-viewport/lib/index.js","node_modules/cf-component-tabs/node_modules/cf-component-viewport/node_modules/react-responsive/node_modules/hyphenate-style-name/index.js","node_modules/cf-component-tabs/node_modules/cf-component-viewport/node_modules/react-responsive/node_modules/matchmedia/index.js","node_modules/cf-component-tabs/node_modules/cf-component-viewport/node_modules/react-responsive/node_modules/matchmedia/node_modules/css-mediaquery/index.js","node_modules/cf-component-tabs/node_modules/cf-component-viewport/node_modules/react-responsive/node_modules/object-assign/index.js","node_modules/cf-component-tabs/node_modules/cf-component-viewport/node_modules/react-responsive/src/index.js","node_modules/cf-component-tabs/node_modules/cf-component-viewport/node_modules/react-responsive/src/mediaQuery.js","node_modules/cf-component-tabs/node_modules/cf-component-viewport/node_modules/react-responsive/src/toQuery.js","node_modules/cf-component-toggle/lib/Toggle.js","node_modules/cf-component-toggle/lib/index.js","node_modules/cf-util-http/lib/index.js","node_modules/cf-util-http/node_modules/cf-util-logger/lib/index.js","node_modules/cf-util-http/node_modules/cf-util-logger/node_modules/debug/browser.js","node_modules/cf-util-http/node_modules/cf-util-logger/node_modules/debug/debug.js","node_modules/cf-util-http/node_modules/cf-util-logger/node_modules/debug/node_modules/ms/index.js","node_modules/cf-util-http/node_modules/superagent/lib/client.js","node_modules/cf-util-http/node_modules/superagent/node_modules/component-emitter/index.js","node_modules/cf-util-http/node_modules/superagent/node_modules/reduce-component/index.js","node_modules/history/lib/Actions.js","node_modules/history/lib/AsyncUtils.js","node_modules/history/lib/DOMStateStorage.js","node_modules/history/lib/DOMUtils.js","node_modules/history/lib/ExecutionEnvironment.js","node_modules/history/lib/createDOMHistory.js","node_modules/history/lib/createHashHistory.js","node_modules/history/lib/createHistory.js","node_modules/history/lib/createLocation.js","node_modules/history/lib/createMemoryHistory.js","node_modules/history/lib/deprecate.js","node_modules/history/lib/extractPath.js","node_modules/history/lib/parsePath.js","node_modules/history/lib/runTransitionHook.js","node_modules/history/lib/useBasename.js","node_modules/history/lib/useQueries.js","node_modules/history/node_modules/deep-equal/index.js","node_modules/history/node_modules/deep-equal/lib/is_arguments.js","node_modules/history/node_modules/deep-equal/lib/keys.js","node_modules/history/node_modules/invariant/browser.js","node_modules/history/node_modules/query-string/index.js","node_modules/history/node_modules/query-string/node_modules/strict-uri-encode/index.js","node_modules/history/node_modules/warning/browser.js","node_modules/intl/index.js","node_modules/intl/lib/cldr.js","node_modules/intl/lib/core.js","node_modules/intl/lib/exp.js","node_modules/lodash/index.js","node_modules/normalizr/lib/EntitySchema.js","node_modules/normalizr/lib/IterableSchema.js","node_modules/normalizr/lib/UnionSchema.js","node_modules/normalizr/lib/index.js","node_modules/normalizr/node_modules/lodash/_Hash.js","node_modules/normalizr/node_modules/lodash/_Map.js","node_modules/normalizr/node_modules/lodash/_MapCache.js","node_modules/normalizr/node_modules/lodash/_Set.js","node_modules/normalizr/node_modules/lodash/_Stack.js","node_modules/normalizr/node_modules/lodash/_Symbol.js","node_modules/normalizr/node_modules/lodash/_Uint8Array.js","node_modules/normalizr/node_modules/lodash/_WeakMap.js","node_modules/normalizr/node_modules/lodash/_arraySome.js","node_modules/normalizr/node_modules/lodash/_assocDelete.js","node_modules/normalizr/node_modules/lodash/_assocGet.js","node_modules/normalizr/node_modules/lodash/_assocHas.js","node_modules/normalizr/node_modules/lodash/_assocIndexOf.js","node_modules/normalizr/node_modules/lodash/_assocSet.js","node_modules/normalizr/node_modules/lodash/_baseFor.js","node_modules/normalizr/node_modules/lodash/_baseForOwn.js","node_modules/normalizr/node_modules/lodash/_baseGet.js","node_modules/normalizr/node_modules/lodash/_baseHasIn.js","node_modules/normalizr/node_modules/lodash/_baseIsEqual.js","node_modules/normalizr/node_modules/lodash/_baseIsEqualDeep.js","node_modules/normalizr/node_modules/lodash/_baseIsMatch.js","node_modules/normalizr/node_modules/lodash/_baseIteratee.js","node_modules/normalizr/node_modules/lodash/_baseMatches.js","node_modules/normalizr/node_modules/lodash/_baseMatchesProperty.js","node_modules/normalizr/node_modules/lodash/_basePropertyDeep.js","node_modules/normalizr/node_modules/lodash/_baseSlice.js","node_modules/normalizr/node_modules/lodash/_baseToPairs.js","node_modules/normalizr/node_modules/lodash/_baseToPath.js","node_modules/normalizr/node_modules/lodash/_checkGlobal.js","node_modules/normalizr/node_modules/lodash/_createBaseFor.js","node_modules/normalizr/node_modules/lodash/_equalArrays.js","node_modules/normalizr/node_modules/lodash/_equalByTag.js","node_modules/normalizr/node_modules/lodash/_equalObjects.js","node_modules/normalizr/node_modules/lodash/_getMatchData.js","node_modules/normalizr/node_modules/lodash/_getNative.js","node_modules/normalizr/node_modules/lodash/_getTag.js","node_modules/normalizr/node_modules/lodash/_hasPath.js","node_modules/normalizr/node_modules/lodash/_hashDelete.js","node_modules/normalizr/node_modules/lodash/_hashGet.js","node_modules/normalizr/node_modules/lodash/_hashHas.js","node_modules/normalizr/node_modules/lodash/_hashSet.js","node_modules/normalizr/node_modules/lodash/_isHostObject.js","node_modules/normalizr/node_modules/lodash/_isKey.js","node_modules/normalizr/node_modules/lodash/_isKeyable.js","node_modules/normalizr/node_modules/lodash/_isStrictComparable.js","node_modules/normalizr/node_modules/lodash/_mapClear.js","node_modules/normalizr/node_modules/lodash/_mapDelete.js","node_modules/normalizr/node_modules/lodash/_mapGet.js","node_modules/normalizr/node_modules/lodash/_mapHas.js","node_modules/normalizr/node_modules/lodash/_mapSet.js","node_modules/normalizr/node_modules/lodash/_mapToArray.js","node_modules/normalizr/node_modules/lodash/_nativeCreate.js","node_modules/normalizr/node_modules/lodash/_parent.js","node_modules/normalizr/node_modules/lodash/_root.js","node_modules/normalizr/node_modules/lodash/_setToArray.js","node_modules/normalizr/node_modules/lodash/_stackClear.js","node_modules/normalizr/node_modules/lodash/_stackDelete.js","node_modules/normalizr/node_modules/lodash/_stackGet.js","node_modules/normalizr/node_modules/lodash/_stackHas.js","node_modules/normalizr/node_modules/lodash/_stackSet.js","node_modules/normalizr/node_modules/lodash/_stringToPath.js","node_modules/normalizr/node_modules/lodash/eq.js","node_modules/normalizr/node_modules/lodash/get.js","node_modules/normalizr/node_modules/lodash/hasIn.js","node_modules/normalizr/node_modules/lodash/identity.js","node_modules/normalizr/node_modules/lodash/isEqual.js","node_modules/normalizr/node_modules/lodash/isNative.js","node_modules/normalizr/node_modules/lodash/isSymbol.js","node_modules/normalizr/node_modules/lodash/isTypedArray.js","node_modules/normalizr/node_modules/lodash/last.js","node_modules/normalizr/node_modules/lodash/mapValues.js","node_modules/normalizr/node_modules/lodash/property.js","node_modules/normalizr/node_modules/lodash/toPairs.js","node_modules/normalizr/node_modules/lodash/toString.js","node_modules/react-addons-css-transition-group/index.js","node_modules/react-c3-wrapper/lib/index.js","node_modules/react-c3-wrapper/node_modules/c3/c3.js","node_modules/react-c3-wrapper/node_modules/c3/node_modules/d3/d3.js","node_modules/react-dom/index.js","node_modules/react-intl/lib/components/date.js","node_modules/react-intl/lib/components/group.js","node_modules/react-intl/lib/components/html-message.js","node_modules/react-intl/lib/components/intl.js","node_modules/react-intl/lib/components/message.js","node_modules/react-intl/lib/components/number.js","node_modules/react-intl/lib/components/plural.js","node_modules/react-intl/lib/components/relative.js","node_modules/react-intl/lib/components/time.js","node_modules/react-intl/lib/en.js","node_modules/react-intl/lib/format.js","node_modules/react-intl/lib/inject.js","node_modules/react-intl/lib/plural.js","node_modules/react-intl/lib/react-intl.js","node_modules/react-intl/lib/types.js","node_modules/react-intl/lib/utils.js","node_modules/react-intl/node_modules/intl-format-cache/index.js","node_modules/react-intl/node_modules/intl-format-cache/lib/es5.js","node_modules/react-intl/node_modules/intl-format-cache/lib/memoizer.js","node_modules/react-intl/node_modules/intl-messageformat/index.js","node_modules/react-intl/node_modules/intl-messageformat/lib/compiler.js","node_modules/react-intl/node_modules/intl-messageformat/lib/core.js","node_modules/react-intl/node_modules/intl-messageformat/lib/en.js","node_modules/react-intl/node_modules/intl-messageformat/lib/es5.js","node_modules/react-intl/node_modules/intl-messageformat/lib/main.js","node_modules/react-intl/node_modules/intl-messageformat/lib/utils.js","node_modules/react-intl/node_modules/intl-messageformat/node_modules/intl-messageformat-parser/index.js","node_modules/react-intl/node_modules/intl-messageformat/node_modules/intl-messageformat-parser/lib/parser.js","node_modules/react-intl/node_modules/intl-relativeformat/index.js","node_modules/react-intl/node_modules/intl-relativeformat/lib/core.js","node_modules/react-intl/node_modules/intl-relativeformat/lib/diff.js","node_modules/react-intl/node_modules/intl-relativeformat/lib/en.js","node_modules/react-intl/node_modules/intl-relativeformat/lib/es5.js","node_modules/react-redux/lib/components/Provider.js","node_modules/react-redux/lib/components/connect.js","node_modules/react-redux/lib/index.js","node_modules/react-redux/lib/utils/isPlainObject.js","node_modules/react-redux/lib/utils/shallowEqual.js","node_modules/react-redux/lib/utils/storeShape.js","node_modules/react-redux/lib/utils/wrapActionCreators.js","node_modules/react-redux/node_modules/hoist-non-react-statics/index.js","node_modules/react-redux/node_modules/invariant/browser.js","node_modules/react-router/lib/AsyncUtils.js","node_modules/react-router/lib/History.js","node_modules/react-router/lib/IndexLink.js","node_modules/react-router/lib/IndexRedirect.js","node_modules/react-router/lib/IndexRoute.js","node_modules/react-router/lib/Lifecycle.js","node_modules/react-router/lib/Link.js","node_modules/react-router/lib/PatternUtils.js","node_modules/react-router/lib/PropTypes.js","node_modules/react-router/lib/Redirect.js","node_modules/react-router/lib/Route.js","node_modules/react-router/lib/RouteContext.js","node_modules/react-router/lib/RouteUtils.js","node_modules/react-router/lib/Router.js","node_modules/react-router/lib/RoutingContext.js","node_modules/react-router/lib/TransitionUtils.js","node_modules/react-router/lib/computeChangedRoutes.js","node_modules/react-router/lib/getComponents.js","node_modules/react-router/lib/getRouteParams.js","node_modules/react-router/lib/index.js","node_modules/react-router/lib/isActive.js","node_modules/react-router/lib/match.js","node_modules/react-router/lib/matchRoutes.js","node_modules/react-router/lib/useRoutes.js","node_modules/react-router/node_modules/invariant/browser.js","node_modules/react-router/node_modules/warning/browser.js","node_modules/react/lib/AutoFocusUtils.js","node_modules/react/lib/BeforeInputEventPlugin.js","node_modules/react/lib/CSSProperty.js","node_modules/react/lib/CSSPropertyOperations.js","node_modules/react/lib/CallbackQueue.js","node_modules/react/lib/ChangeEventPlugin.js","node_modules/react/lib/ClientReactRootIndex.js","node_modules/react/lib/DOMChildrenOperations.js","node_modules/react/lib/DOMProperty.js","node_modules/react/lib/DOMPropertyOperations.js","node_modules/react/lib/Danger.js","node_modules/react/lib/DefaultEventPluginOrder.js","node_modules/react/lib/EnterLeaveEventPlugin.js","node_modules/react/lib/EventConstants.js","node_modules/react/lib/EventPluginHub.js","node_modules/react/lib/EventPluginRegistry.js","node_modules/react/lib/EventPluginUtils.js","node_modules/react/lib/EventPropagators.js","node_modules/react/lib/FallbackCompositionState.js","node_modules/react/lib/HTMLDOMPropertyConfig.js","node_modules/react/lib/LinkedValueUtils.js","node_modules/react/lib/Object.assign.js","node_modules/react/lib/PooledClass.js","node_modules/react/lib/React.js","node_modules/react/lib/ReactBrowserComponentMixin.js","node_modules/react/lib/ReactBrowserEventEmitter.js","node_modules/react/lib/ReactCSSTransitionGroup.js","node_modules/react/lib/ReactCSSTransitionGroupChild.js","node_modules/react/lib/ReactChildReconciler.js","node_modules/react/lib/ReactChildren.js","node_modules/react/lib/ReactClass.js","node_modules/react/lib/ReactComponent.js","node_modules/react/lib/ReactComponentBrowserEnvironment.js","node_modules/react/lib/ReactComponentEnvironment.js","node_modules/react/lib/ReactCompositeComponent.js","node_modules/react/lib/ReactCurrentOwner.js","node_modules/react/lib/ReactDOM.js","node_modules/react/lib/ReactDOMButton.js","node_modules/react/lib/ReactDOMComponent.js","node_modules/react/lib/ReactDOMFactories.js","node_modules/react/lib/ReactDOMFeatureFlags.js","node_modules/react/lib/ReactDOMIDOperations.js","node_modules/react/lib/ReactDOMInput.js","node_modules/react/lib/ReactDOMOption.js","node_modules/react/lib/ReactDOMSelect.js","node_modules/react/lib/ReactDOMSelection.js","node_modules/react/lib/ReactDOMServer.js","node_modules/react/lib/ReactDOMTextComponent.js","node_modules/react/lib/ReactDOMTextarea.js","node_modules/react/lib/ReactDefaultBatchingStrategy.js","node_modules/react/lib/ReactDefaultInjection.js","node_modules/react/lib/ReactDefaultPerf.js","node_modules/react/lib/ReactDefaultPerfAnalysis.js","node_modules/react/lib/ReactElement.js","node_modules/react/lib/ReactElementValidator.js","node_modules/react/lib/ReactEmptyComponent.js","node_modules/react/lib/ReactEmptyComponentRegistry.js","node_modules/react/lib/ReactErrorUtils.js","node_modules/react/lib/ReactEventEmitterMixin.js","node_modules/react/lib/ReactEventListener.js","node_modules/react/lib/ReactInjection.js","node_modules/react/lib/ReactInputSelection.js","node_modules/react/lib/ReactInstanceHandles.js","node_modules/react/lib/ReactInstanceMap.js","node_modules/react/lib/ReactIsomorphic.js","node_modules/react/lib/ReactMarkupChecksum.js","node_modules/react/lib/ReactMount.js","node_modules/react/lib/ReactMultiChild.js","node_modules/react/lib/ReactMultiChildUpdateTypes.js","node_modules/react/lib/ReactNativeComponent.js","node_modules/react/lib/ReactNoopUpdateQueue.js","node_modules/react/lib/ReactOwner.js","node_modules/react/lib/ReactPerf.js","node_modules/react/lib/ReactPropTypeLocationNames.js","node_modules/react/lib/ReactPropTypeLocations.js","node_modules/react/lib/ReactPropTypes.js","node_modules/react/lib/ReactReconcileTransaction.js","node_modules/react/lib/ReactReconciler.js","node_modules/react/lib/ReactRef.js","node_modules/react/lib/ReactRootIndex.js","node_modules/react/lib/ReactServerBatchingStrategy.js","node_modules/react/lib/ReactServerRendering.js","node_modules/react/lib/ReactServerRenderingTransaction.js","node_modules/react/lib/ReactTransitionChildMapping.js","node_modules/react/lib/ReactTransitionEvents.js","node_modules/react/lib/ReactTransitionGroup.js","node_modules/react/lib/ReactUpdateQueue.js","node_modules/react/lib/ReactUpdates.js","node_modules/react/lib/ReactVersion.js","node_modules/react/lib/SVGDOMPropertyConfig.js","node_modules/react/lib/SelectEventPlugin.js","node_modules/react/lib/ServerReactRootIndex.js","node_modules/react/lib/SimpleEventPlugin.js","node_modules/react/lib/SyntheticClipboardEvent.js","node_modules/react/lib/SyntheticCompositionEvent.js","node_modules/react/lib/SyntheticDragEvent.js","node_modules/react/lib/SyntheticEvent.js","node_modules/react/lib/SyntheticFocusEvent.js","node_modules/react/lib/SyntheticInputEvent.js","node_modules/react/lib/SyntheticKeyboardEvent.js","node_modules/react/lib/SyntheticMouseEvent.js","node_modules/react/lib/SyntheticTouchEvent.js","node_modules/react/lib/SyntheticUIEvent.js","node_modules/react/lib/SyntheticWheelEvent.js","node_modules/react/lib/Transaction.js","node_modules/react/lib/ViewportMetrics.js","node_modules/react/lib/accumulateInto.js","node_modules/react/lib/adler32.js","node_modules/react/lib/canDefineProperty.js","node_modules/react/lib/dangerousStyleValue.js","node_modules/react/lib/deprecated.js","node_modules/react/lib/escapeTextContentForBrowser.js","node_modules/react/lib/findDOMNode.js","node_modules/react/lib/flattenChildren.js","node_modules/react/lib/forEachAccumulated.js","node_modules/react/lib/getEventCharCode.js","node_modules/react/lib/getEventKey.js","node_modules/react/lib/getEventModifierState.js","node_modules/react/lib/getEventTarget.js","node_modules/react/lib/getIteratorFn.js","node_modules/react/lib/getNodeForCharacterOffset.js","node_modules/react/lib/getTextContentAccessor.js","node_modules/react/lib/instantiateReactComponent.js","node_modules/react/lib/isEventSupported.js","node_modules/react/lib/isTextInputElement.js","node_modules/react/lib/onlyChild.js","node_modules/react/lib/quoteAttributeValueForBrowser.js","node_modules/react/lib/renderSubtreeIntoContainer.js","node_modules/react/lib/setInnerHTML.js","node_modules/react/lib/setTextContent.js","node_modules/react/lib/shouldUpdateReactComponent.js","node_modules/react/lib/traverseAllChildren.js","node_modules/react/lib/validateDOMNesting.js","node_modules/react/node_modules/fbjs/lib/CSSCore.js","node_modules/react/node_modules/fbjs/lib/EventListener.js","node_modules/react/node_modules/fbjs/lib/ExecutionEnvironment.js","node_modules/react/node_modules/fbjs/lib/camelize.js","node_modules/react/node_modules/fbjs/lib/camelizeStyleName.js","node_modules/react/node_modules/fbjs/lib/containsNode.js","node_modules/react/node_modules/fbjs/lib/createArrayFromMixed.js","node_modules/react/node_modules/fbjs/lib/createNodesFromMarkup.js","node_modules/react/node_modules/fbjs/lib/emptyFunction.js","node_modules/react/node_modules/fbjs/lib/emptyObject.js","node_modules/react/node_modules/fbjs/lib/focusNode.js","node_modules/react/node_modules/fbjs/lib/getActiveElement.js","node_modules/react/node_modules/fbjs/lib/getMarkupWrap.js","node_modules/react/node_modules/fbjs/lib/getUnboundedScrollPosition.js","node_modules/react/node_modules/fbjs/lib/hyphenate.js","node_modules/react/node_modules/fbjs/lib/hyphenateStyleName.js","node_modules/react/node_modules/fbjs/lib/invariant.js","node_modules/react/node_modules/fbjs/lib/isNode.js","node_modules/react/node_modules/fbjs/lib/isTextNode.js","node_modules/react/node_modules/fbjs/lib/keyMirror.js","node_modules/react/node_modules/fbjs/lib/keyOf.js","node_modules/react/node_modules/fbjs/lib/mapObject.js","node_modules/react/node_modules/fbjs/lib/memoizeStringOnly.js","node_modules/react/node_modules/fbjs/lib/performance.js","node_modules/react/node_modules/fbjs/lib/performanceNow.js","node_modules/react/node_modules/fbjs/lib/shallowEqual.js","node_modules/react/node_modules/fbjs/lib/toArray.js","node_modules/react/node_modules/fbjs/lib/warning.js","node_modules/react/react.js","node_modules/redux-logger/lib/index.js","node_modules/redux-simple-router/lib/index.js","node_modules/redux-thunk/lib/index.js","node_modules/redux/lib/createStore.js","node_modules/redux/lib/index.js","node_modules/redux/lib/utils/applyMiddleware.js","node_modules/redux/lib/utils/bindActionCreators.js","node_modules/redux/lib/utils/combineReducers.js","node_modules/redux/lib/utils/compose.js","node_modules/redux/lib/utils/isPlainObject.js","node_modules/redux/lib/utils/mapValues.js","node_modules/redux/lib/utils/pick.js","src/js/actions/activeZone.js","src/js/actions/app.js","src/js/actions/config.js","src/js/actions/intl.js","src/js/actions/notifications.js","src/js/actions/user.js","src/js/actions/zoneAnalytics.js","src/js/actions/zoneDnsRecords.js","src/js/actions/zoneProvision.js","src/js/actions/zonePurgeCache.js","src/js/actions/zoneRailgun.js","src/js/actions/zoneScan.js","src/js/actions/zoneSettings.js","src/js/actions/zones.js","src/js/components/CloudToggle/CloudToggle.js","src/js/components/FeatureManager/FeatureManager.js","src/js/components/Loading/Loading.js","src/js/components/MarketingFeature/MarketingFeature.js","src/js/components/Notification/Notification.js","src/js/constants/ActionTypes.js","src/js/constants/Schemas.js","src/js/constants/UrlPaths.js","src/js/containers/ActivationCheckCard/ActivationCheckCard.js","src/js/containers/ActiveZoneSelector/ActiveZoneSelector.js","src/js/containers/AlwaysOnlineCard/AlwaysOnlineCard.js","src/js/containers/AnalyticsPage/AnaltyicsPage.js","src/js/containers/App/App.js","src/js/containers/AppNavigation/AppNavigation.js","src/js/containers/BrowserCacheTTLCard/BrowserCacheTTLCard.js","src/js/containers/BrowserIntegrityCheckCard/BrowserIntegrityCheckCard.js","src/js/containers/CacheLevelCard/CacheLevelCard.js","src/js/containers/ChallengePassageCard/ChallengePassageCard.js","src/js/containers/DNSManagementPage/DNSManagementPage.js","src/js/containers/DNSRecordEditor/DNSRecordEditor.js","src/js/containers/DevelopmentModeCard/DevelopmentModeCard.js","src/js/containers/IPV6Card/IPV6Card.js","src/js/containers/LoginPage/LoginPage.js","src/js/containers/MinifyCard/MinifyCard.js","src/js/containers/NotificationList/NotificationList.js","src/js/containers/PerformancePage/PerformancePage.js","src/js/containers/PurgeCacheCard/PurgeCacheCard.js","src/js/containers/RailgunCard/RailgunCard.js","src/js/containers/SSLCard/SSLCard.js","src/js/containers/ScanCard/ScanCard.js","src/js/containers/SecurityLevelCard/SecurityLevelCard.js","src/js/containers/SecurityPage/SecurityPage.js","src/js/containers/SignUpPage/SignUpPage.js","src/js/containers/UnderAttackButton/UnderAttackButton.js","src/js/containers/ZoneProvisionContainer/ZoneProvisionContainer.js","src/js/index.js","src/js/reducers/activeZone.js","src/js/reducers/app.js","src/js/reducers/config.js","src/js/reducers/index.js","src/js/reducers/intl.js","src/js/reducers/notifications.js","src/js/reducers/user.js","src/js/reducers/zoneAnalytics.js","src/js/reducers/zoneDnsRecords.js","src/js/reducers/zonePurgeCache.js","src/js/reducers/zoneRailgun.js","src/js/reducers/zoneScan.js","src/js/reducers/zoneSettings.js","src/js/reducers/zones.js","src/js/routes.js","src/js/store/configureStore.js","src/js/utils/Auth/Auth.js","src/js/utils/CFClientV4API/CFClientV4API.js","src/js/utils/CFHostAPI/CFHostAPI.js"],"names":[],"mappings":"AAAA;ACAA;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1EA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjCA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACl7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7CA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxDA;AACA;AACA;;;;;;;;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;AACA;AACA;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvqCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/EA;AACA;AACA;AACA;AACA;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACvPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC1JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC3IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC3KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AC5DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACv5FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACtGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC/jYA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AClFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC1EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9CA;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACz4NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjtSA;AACA;AACA;AACA;;;;;;;;;;;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC5LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACzFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACjFA;AACA;AACA;AACA;AACA;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvQA;AACA;AACA;AACA;AACA;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5zCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7CA;AACA;AACA;AACA;AACA;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC1EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACrEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACzQA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;ACxEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;ACrEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AClKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AClOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACpDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AC1GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;ACjHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;ACpKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC3IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC1HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AC3LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AClSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC5DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC1IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AC9KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC5FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AChIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;ACzOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AChOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AChJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC3FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;ACtRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AC3NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;ACzMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACtIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACrOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACrIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACtHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACpKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACzHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACrLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AClwBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACzHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACrrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC3FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;ACj8BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AChLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AC7FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;ACxJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;ACrFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC3LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AC9HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AChHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AChGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACxMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;ACtPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACxRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC5EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC3HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC7SA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACzEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;ACj1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC/eA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AC7FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;ACrHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AC1FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AC/FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AClFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC5MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AChQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC9NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC1kBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AChLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACtOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC/GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AC5LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AC1WA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AChGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACnFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACpFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACnFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC9FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACxDA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AClIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;QCbgB,iBAAiB,GAAjB,iBAAiB;QAOjB,sBAAsB,GAAtB,sBAAsB;QAgBtB,wBAAwB,GAAxB,wBAAwB;;;;;;IA9B5B,WAAW;;;;;;;;;;;;;;AAOhB,SAAS,iBAAiB,CAAC,IAAI,EAAE;AACpC,WAAO;AACH,YAAI,EAAE,WAAW,CAAC,qBAAqB;AACvC,YAAI,EAAJ,IAAI;KACP,CAAA;CACJ;;AAEM,SAAS,sBAAsB,CAAC,IAAI,EAAE;AACzC,WAAO,UAAA,QAAQ,EAAI;AACf,gBAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC;AAClC,YAAI,OAAO,IAAI,CAAC,EAAE,KAAK,WAAW,EAAE;;AAEhC,gBAAG,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE;AACzB,wBAAQ,CAAC,oBAnBhB,uBAAuB,EAmBiB,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3C,wBAAQ,CAAC,iBAlBhB,wBAAwB,EAkBiB,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;aAC/C;AACD,oBAA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","file":"compiled.js","sourceRoot":"/source/","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 1) {\n        for (var i = 1; i < arguments.length; i++) {\n            args[i - 1] = arguments[i];\n        }\n    }\n    queue.push(new Item(fun, args));\n    if (queue.length === 1 && !draining) {\n        setTimeout(drainQueue, 0);\n    }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n    this.fun = fun;\n    this.array = array;\n}\nItem.prototype.run = function () {\n    this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\n\nprocess.binding = function (name) {\n    throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n    throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","'use strict';\n\nvar React = require('react');\nvar PropTypes = React.PropTypes;\n\nfunction Button(props) {\n  var className = 'cf-btn cf-btn--' + props.type;\n\n  return React.createElement(\n    'button',\n    {\n      className: className,\n      disabled: props.disabled,\n      onClick: props.onClick },\n    props.children\n  );\n}\n\nButton.propTypes = {\n  onClick: PropTypes.func.isRequired,\n  type: PropTypes.oneOf(['default', 'primary', 'success', 'warning', 'error']).isRequired,\n  disabled: PropTypes.bool\n};\nButton.defaultProps = {\n  type: 'default'\n};\n;\n\nmodule.exports = Button;","'use strict';\n\nvar React = require('react');\n\nfunction ButtonGroup(props) {\n  return React.createElement(\n    'div',\n    { className: 'cf-btn__group' },\n    props.children\n  );\n}\n\n;\n\nmodule.exports = ButtonGroup;","'use strict';\n\nexports.Button = require('./Button');\nexports.ButtonGroup = require('./ButtonGroup');","\"use strict\";\n\nexports.__esModule = true;\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Card = (function (_React$Component) {\n  _inherits(Card, _React$Component);\n\n  function Card() {\n    _classCallCheck(this, Card);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  Card.prototype.render = function render() {\n    return _react2.default.createElement(\n      \"section\",\n      { className: \"cf-card\" },\n      this.props.children\n    );\n  };\n\n  return Card;\n})(_react2.default.Component);\n\nexports.default = Card;","\"use strict\";\n\nexports.__esModule = true;\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar CardContent = (function (_React$Component) {\n  _inherits(CardContent, _React$Component);\n\n  function CardContent() {\n    _classCallCheck(this, CardContent);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  CardContent.prototype.render = function render() {\n    return _react2.default.createElement(\n      \"div\",\n      { className: \"cf-card__content\" },\n      _react2.default.createElement(\n        \"h3\",\n        { className: \"cf-card__title\" },\n        this.props.title\n      ),\n      this.props.children\n    );\n  };\n\n  return CardContent;\n})(_react2.default.Component);\n\nCardContent.propTypes = {\n  title: _react2.default.PropTypes.any.isRequired\n};\nexports.default = CardContent;","\"use strict\";\n\nexports.__esModule = true;\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar CardControl = (function (_React$Component) {\n  _inherits(CardControl, _React$Component);\n\n  function CardControl() {\n    _classCallCheck(this, CardControl);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  CardControl.prototype.render = function render() {\n    return _react2.default.createElement(\n      \"div\",\n      { className: \"cf-card__control\" },\n      this.props.children\n    );\n  };\n\n  return CardControl;\n})(_react2.default.Component);\n\nexports.default = CardControl;","'use strict';\n\nexports.__esModule = true;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _CardSection = require('./CardSection');\n\nvar _CardSection2 = _interopRequireDefault(_CardSection);\n\nvar _CardToolbar = require('./CardToolbar');\n\nvar _CardToolbar2 = _interopRequireDefault(_CardToolbar);\n\nvar _CardToolbarLink = require('./CardToolbarLink');\n\nvar _CardToolbarLink2 = _interopRequireDefault(_CardToolbarLink);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar UNIQUE_ID = 0;\n\nvar CardDrawers = (function (_React$Component) {\n  _inherits(CardDrawers, _React$Component);\n\n  function CardDrawers() {\n    var _temp, _this, _ret;\n\n    _classCallCheck(this, CardDrawers);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this._cardId = UNIQUE_ID++, _temp), _possibleConstructorReturn(_this, _ret);\n  }\n\n  CardDrawers.prototype.render = function render() {\n    var _this2 = this;\n\n    var links = [];\n    var drawers = [];\n\n    this.props.drawers.forEach(function (drawer) {\n      var isActive = drawer.id === _this2.props.active;\n      var id = 'card-' + _this2._cardId + '-drawer-' + drawer.id;\n\n      links.push(_react2.default.createElement(\n        _CardToolbarLink2.default,\n        {\n          key: drawer.id,\n          id: id,\n          isActive: isActive,\n          onClick: _this2.props.onClick.bind(_this2, drawer.id) },\n        drawer.name\n      ));\n\n      var className = 'cf-card__drawer';\n\n      if (isActive) {\n        className += ' cf-card__drawer--active';\n      }\n\n      drawers.push(_react2.default.createElement(\n        'div',\n        {\n          key: drawer.id,\n          role: 'tabpanel',\n          'aria-labelledby': id,\n          'aria-hidden': isActive ? 'false' : 'true',\n          className: className },\n        isActive && drawer.content\n      ));\n    });\n\n    var containerClassName = 'cf-card__drawers_container';\n\n    if (this.props.active) {\n      containerClassName += ' cf-card__drawers_container--open';\n    }\n\n    return _react2.default.createElement(\n      _CardSection2.default,\n      null,\n      _react2.default.createElement(_CardToolbar2.default, { controls: this.props.controls, links: links }),\n      _react2.default.createElement(\n        'div',\n        { className: containerClassName },\n        drawers\n      )\n    );\n  };\n\n  return CardDrawers;\n})(_react2.default.Component);\n\nCardDrawers.propTypes = {\n  onClick: _react.PropTypes.func.isRequired,\n\n  active: _react.PropTypes.string,\n  drawers: _react.PropTypes.arrayOf(_react.PropTypes.shape({\n    id: _react.PropTypes.string.isRequired,\n    name: _react.PropTypes.string.isRequired,\n    content: _react.PropTypes.any.isRequired\n  })).isRequired,\n\n  // for an optional control to put on the left side of the toolbar\n  controls: _react.PropTypes.any\n};\nexports.default = CardDrawers;","\"use strict\";\n\nexports.__esModule = true;\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar CardLoadingText = (function (_React$Component) {\n  _inherits(CardLoadingText, _React$Component);\n\n  function CardLoadingText() {\n    _classCallCheck(this, CardLoadingText);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  CardLoadingText.prototype.render = function render() {\n    return _react2.default.createElement(\"div\", { className: \"cf-card__loading_text\" });\n  };\n\n  return CardLoadingText;\n})(_react2.default.Component);\n\nexports.default = CardLoadingText;","'use strict';\n\nexports.__esModule = true;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar CardMessages = (function (_React$Component) {\n  _inherits(CardMessages, _React$Component);\n\n  function CardMessages() {\n    _classCallCheck(this, CardMessages);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  CardMessages.prototype.render = function render() {\n    return _react2.default.createElement(\n      'div',\n      { className: 'cf-card__messages' },\n      this.props.messages.map(function (message) {\n        return _react2.default.createElement(\n          'div',\n          { role: 'alert', className: 'cf-card__message cf-card__message--' + message.type },\n          message.content\n        );\n      })\n    );\n  };\n\n  return CardMessages;\n})(_react2.default.Component);\n\nCardMessages.propTypes = {\n  messages: _react.PropTypes.arrayOf(_react.PropTypes.shape({\n    type: _react.PropTypes.oneOf(['info', 'success', 'error', 'warning']),\n    content: _react.PropTypes.any.isRequired\n  }))\n};\nexports.default = CardMessages;","'use strict';\n\nexports.__esModule = true;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar CardSection = (function (_React$Component) {\n  _inherits(CardSection, _React$Component);\n\n  function CardSection() {\n    _classCallCheck(this, CardSection);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  CardSection.prototype.render = function render() {\n    return _react2.default.createElement(\n      'div',\n      { className: 'cf-card__section cf-card__section--' + this.props.status },\n      this.props.children\n    );\n  };\n\n  return CardSection;\n})(_react2.default.Component);\n\nCardSection.propTypes = {\n  status: _react2.default.PropTypes.oneOf(['default', 'error'])\n};\nCardSection.defaultProps = {\n  status: 'default'\n};\nexports.default = CardSection;","\"use strict\";\n\nexports.__esModule = true;\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar CardToolbar = (function (_React$Component) {\n  _inherits(CardToolbar, _React$Component);\n\n  function CardToolbar() {\n    _classCallCheck(this, CardToolbar);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  CardToolbar.prototype.render = function render() {\n    return _react2.default.createElement(\n      \"div\",\n      { className: \"cf-card__toolbar\" },\n      _react2.default.createElement(\n        \"div\",\n        { className: \"cf-card__toolbar_controls\" },\n        this.props.controls\n      ),\n      _react2.default.createElement(\n        \"div\",\n        { className: \"cf-card__toolbar_links\", role: \"tablist\" },\n        this.props.links\n      )\n    );\n  };\n\n  return CardToolbar;\n})(_react2.default.Component);\n\nCardToolbar.propTypes = {\n  controls: _react2.default.PropTypes.any,\n  links: _react2.default.PropTypes.any\n};\nexports.default = CardToolbar;","'use strict';\n\nexports.__esModule = true;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar CardToolbarLink = (function (_React$Component) {\n  _inherits(CardToolbarLink, _React$Component);\n\n  function CardToolbarLink() {\n    var _temp, _this, _ret;\n\n    _classCallCheck(this, CardToolbarLink);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.handleClick = function (e) {\n      e.preventDefault();\n      _this.props.onClick();\n    }, _temp), _possibleConstructorReturn(_this, _ret);\n  }\n\n  CardToolbarLink.prototype.render = function render() {\n    var className = 'cf-card__toolbar_link';\n\n    if (this.props.isActive) {\n      className += ' cf-card__toolbar_link--open';\n    }\n\n    return _react2.default.createElement(\n      'a',\n      { href: '#', role: 'tab', id: this.props.id, className: className, onClick: this.handleClick },\n      this.props.children\n    );\n  };\n\n  return CardToolbarLink;\n})(_react2.default.Component);\n\nCardToolbarLink.propTypes = {\n  onClick: _react2.default.PropTypes.func.isRequired,\n  isActive: _react2.default.PropTypes.bool.isRequired,\n  id: _react2.default.PropTypes.string\n};\nexports.default = CardToolbarLink;","'use strict';\n\nexports.__esModule = true;\nexports.CardSection = exports.CardMessages = exports.CardLoadingText = exports.CardDrawers = exports.CardControl = exports.CardContent = exports.Card = undefined;\n\nvar _Card2 = require('./Card');\n\nvar _Card3 = _interopRequireDefault(_Card2);\n\nvar _CardContent2 = require('./CardContent');\n\nvar _CardContent3 = _interopRequireDefault(_CardContent2);\n\nvar _CardControl2 = require('./CardControl');\n\nvar _CardControl3 = _interopRequireDefault(_CardControl2);\n\nvar _CardDrawers2 = require('./CardDrawers');\n\nvar _CardDrawers3 = _interopRequireDefault(_CardDrawers2);\n\nvar _CardLoadingText2 = require('./CardLoadingText');\n\nvar _CardLoadingText3 = _interopRequireDefault(_CardLoadingText2);\n\nvar _CardMessages2 = require('./CardMessages');\n\nvar _CardMessages3 = _interopRequireDefault(_CardMessages2);\n\nvar _CardSection2 = require('./CardSection');\n\nvar _CardSection3 = _interopRequireDefault(_CardSection2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.Card = _Card3.default;\nexports.CardContent = _CardContent3.default;\nexports.CardControl = _CardControl3.default;\nexports.CardDrawers = _CardDrawers3.default;\nexports.CardLoadingText = _CardLoadingText3.default;\nexports.CardMessages = _CardMessages3.default;\nexports.CardSection = _CardSection3.default;","'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar React = require('react');\nvar PropTypes = React.PropTypes;\n\nvar Checkbox = function (_React$Component) {\n  _inherits(Checkbox, _React$Component);\n\n  function Checkbox() {\n    var _temp, _this, _ret;\n\n    _classCallCheck(this, Checkbox);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.handleChange = function (e) {\n      _this.props.onChange(e.target.checked);\n    }, _temp), _possibleConstructorReturn(_this, _ret);\n  }\n\n  Checkbox.prototype.render = function render() {\n    var className = 'cf-checkbox';\n\n    if (this.props.checked) {\n      className += ' cf-checkbox--checked';\n    }\n\n    return React.createElement(\n      'label',\n      { htmlFor: this.props.name, className: className },\n      React.createElement('input', { type: 'checkbox',\n        className: 'cf-checkbox__input',\n        id: this.props.name,\n        name: this.props.name,\n        value: this.props.value,\n        checked: this.props.checked,\n        onChange: this.handleChange }),\n      this.props.label && React.createElement(\n        'span',\n        { className: 'cf-checkbox__label' },\n        this.props.label\n      )\n    );\n  };\n\n  return Checkbox;\n}(React.Component);\n\nCheckbox.propTypes = {\n  label: PropTypes.oneOfType([PropTypes.string, PropTypes.oneOf([false])]).isRequired,\n  name: PropTypes.string.isRequired,\n  value: PropTypes.string.isRequired,\n  checked: PropTypes.bool.isRequired,\n  onChange: PropTypes.func.isRequired\n};\n\nmodule.exports = Checkbox;","'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar React = require('react');\nvar PropTypes = React.PropTypes;\n\nvar Checkbox = require('./Checkbox');\nvar includes = require('lodash/includes');\n\nvar CheckboxGroup = function (_React$Component) {\n  _inherits(CheckboxGroup, _React$Component);\n\n  function CheckboxGroup() {\n    var _temp, _this, _ret;\n\n    _classCallCheck(this, CheckboxGroup);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.handleChange = function (value, checked) {\n      var values = _this.props.options.filter(function (option) {\n        if (option.value === value) {\n          return checked;\n        }\n\n        return includes(_this.props.values, option.value);\n      }).map(function (option) {\n        return option.value;\n      });\n\n      _this.props.onChange(values);\n    }, _temp), _possibleConstructorReturn(_this, _ret);\n  }\n\n  CheckboxGroup.prototype.render = function render() {\n    var _this2 = this;\n\n    return React.createElement(\n      'div',\n      { className: 'cf-checkbox__group' },\n      this.props.options.map(function (option) {\n        return React.createElement(Checkbox, {\n          key: option.name,\n          label: option.label,\n          name: option.name,\n          value: option.value,\n          checked: includes(_this2.props.values, option.value),\n          onChange: function onChange(val) {\n            return _this2.handleChange(option.value, val);\n          } });\n      })\n    );\n  };\n\n  return CheckboxGroup;\n}(React.Component);\n\nCheckboxGroup.propTypes = {\n  values: PropTypes.arrayOf(PropTypes.string).isRequired,\n  onChange: PropTypes.func.isRequired,\n  options: PropTypes.arrayOf(PropTypes.shape({\n    label: PropTypes.oneOfType([PropTypes.string, PropTypes.oneOf([false])]).isRequired,\n    name: PropTypes.string.isRequired,\n    value: PropTypes.string.isRequired\n  })).isRequired\n};\n\nmodule.exports = CheckboxGroup;","'use strict';\n\nexports.Checkbox = require('./Checkbox');\nexports.CheckboxGroup = require('./CheckboxGroup');","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n  var index = -1,\n      length = array.length,\n      result = Array(length);\n\n  while (++index < length) {\n    result[index] = iteratee(array[index], index, array);\n  }\n  return result;\n}\n\nmodule.exports = arrayMap;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar getPrototypeOf = Object.getPrototypeOf;\n\n/**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHas(object, key) {\n  // Avoid a bug in IE 10-11 where objects with a [[Prototype]] of `null`,\n  // that are composed entirely of index properties, return `false` for\n  // `hasOwnProperty` checks of them.\n  return hasOwnProperty.call(object, key) ||\n    (typeof object == 'object' && key in object && getPrototypeOf(object) === null);\n}\n\nmodule.exports = baseHas;\n","var indexOfNaN = require('./_indexOfNaN');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to search.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n  if (value !== value) {\n    return indexOfNaN(array, fromIndex);\n  }\n  var index = fromIndex - 1,\n      length = array.length;\n\n  while (++index < length) {\n    if (array[index] === value) {\n      return index;\n    }\n  }\n  return -1;\n}\n\nmodule.exports = baseIndexOf;\n","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = Object.keys;\n\n/**\n * The base implementation of `_.keys` which doesn't skip the constructor\n * property of prototypes or treat sparse arrays as dense.\n *\n * @private\n * @type Function\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n  return nativeKeys(Object(object));\n}\n\nmodule.exports = baseKeys;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new function.\n */\nfunction baseProperty(key) {\n  return function(object) {\n    return object == null ? undefined : object[key];\n  };\n}\n\nmodule.exports = baseProperty;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n  return result;\n}\n\nmodule.exports = baseTimes;\n","var arrayMap = require('./_arrayMap');\n\n/**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\nfunction baseValues(object, props) {\n  return arrayMap(props, function(key) {\n    return object[key];\n  });\n}\n\nmodule.exports = baseValues;\n","var baseProperty = require('./_baseProperty');\n\n/**\n * Gets the \"length\" property value of `object`.\n *\n * **Note:** This function is used to avoid a [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792)\n * that affects Safari on at least iOS 8.1-8.3 ARM64.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {*} Returns the \"length\" value.\n */\nvar getLength = baseProperty('length');\n\nmodule.exports = getLength;\n","var baseTimes = require('./_baseTimes'),\n    isArguments = require('./isArguments'),\n    isArray = require('./isArray'),\n    isLength = require('./isLength'),\n    isString = require('./isString');\n\n/**\n * Creates an array of index keys for `object` values of arrays,\n * `arguments` objects, and strings, otherwise `null` is returned.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array|null} Returns index keys, else `null`.\n */\nfunction indexKeys(object) {\n  var length = object ? object.length : undefined;\n  if (isLength(length) &&\n      (isArray(object) || isString(object) || isArguments(object))) {\n    return baseTimes(length, String);\n  }\n  return null;\n}\n\nmodule.exports = indexKeys;\n","/**\n * Gets the index at which the first occurrence of `NaN` is found in `array`.\n *\n * @private\n * @param {Array} array The array to search.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched `NaN`, else `-1`.\n */\nfunction indexOfNaN(array, fromIndex, fromRight) {\n  var length = array.length,\n      index = fromIndex + (fromRight ? 0 : -1);\n\n  while ((fromRight ? index-- : ++index < length)) {\n    var other = array[index];\n    if (other !== other) {\n      return index;\n    }\n  }\n  return -1;\n}\n\nmodule.exports = indexOfNaN;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  value = (typeof value == 'number' || reIsUint.test(value)) ? +value : -1;\n  length = length == null ? MAX_SAFE_INTEGER : length;\n  return value > -1 && value % 1 == 0 && value < length;\n}\n\nmodule.exports = isIndex;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n  var Ctor = value && value.constructor,\n      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n  return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var baseIndexOf = require('./_baseIndexOf'),\n    isArrayLike = require('./isArrayLike'),\n    isString = require('./isString'),\n    toInteger = require('./toInteger'),\n    values = require('./values');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Checks if `value` is in `collection`. If `collection` is a string it's checked\n * for a substring of `value`, otherwise [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @category Collection\n * @param {Array|Object|string} collection The collection to search.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for functions like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'user': 'fred', 'age': 40 }, 'fred');\n * // => true\n *\n * _.includes('pebbles', 'eb');\n * // => true\n */\nfunction includes(collection, value, fromIndex, guard) {\n  collection = isArrayLike(collection) ? collection : values(collection);\n  fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n  var length = collection.length;\n  if (fromIndex < 0) {\n    fromIndex = nativeMax(length + fromIndex, 0);\n  }\n  return isString(collection)\n    ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n    : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n}\n\nmodule.exports = includes;\n","var isArrayLikeObject = require('./isArrayLikeObject');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n  // Safari 8.1 incorrectly makes `arguments.callee` enumerable in strict mode.\n  return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n    (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\nmodule.exports = isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @type Function\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var getLength = require('./_getLength'),\n    isFunction = require('./isFunction'),\n    isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @type Function\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null &&\n    !(typeof value == 'function' && isFunction(value)) && isLength(getLength(value));\n}\n\nmodule.exports = isArrayLike;\n","var isArrayLike = require('./isArrayLike'),\n    isObjectLike = require('./isObjectLike');\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @type Function\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object, else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n  return isObjectLike(value) && isArrayLike(value);\n}\n\nmodule.exports = isArrayLikeObject;\n","var isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 8 which returns 'object' for typed array constructors, and\n  // PhantomJS 1.9 which returns 'function' for `NodeList` instances.\n  var tag = isObject(value) ? objectToString.call(value) : '';\n  return tag == funcTag || tag == genTag;\n}\n\nmodule.exports = isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This function is loosely based on [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","/**\n * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.\n * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var isArray = require('./isArray'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n  return typeof value == 'string' ||\n    (!isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag);\n}\n\nmodule.exports = isString;\n","var baseHas = require('./_baseHas'),\n    baseKeys = require('./_baseKeys'),\n    indexKeys = require('./_indexKeys'),\n    isArrayLike = require('./isArrayLike'),\n    isIndex = require('./_isIndex'),\n    isPrototype = require('./_isPrototype');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/6.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n  var isProto = isPrototype(object);\n  if (!(isProto || isArrayLike(object))) {\n    return baseKeys(object);\n  }\n  var indexes = indexKeys(object),\n      skipIndexes = !!indexes,\n      result = indexes || [],\n      length = result.length;\n\n  for (var key in object) {\n    if (baseHas(object, key) &&\n        !(skipIndexes && (key == 'length' || isIndex(key, length))) &&\n        !(isProto && key == 'constructor')) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = keys;\n","var toNumber = require('./toNumber');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n    MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This function is loosely based on [`ToInteger`](http://www.ecma-international.org/ecma-262/6.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3');\n * // => 3\n */\nfunction toInteger(value) {\n  if (!value) {\n    return value === 0 ? value : 0;\n  }\n  value = toNumber(value);\n  if (value === INFINITY || value === -INFINITY) {\n    var sign = (value < 0 ? -1 : 1);\n    return sign * MAX_INTEGER;\n  }\n  var remainder = value % 1;\n  return value === value ? (remainder ? value - remainder : value) : 0;\n}\n\nmodule.exports = toInteger;\n","var isFunction = require('./isFunction'),\n    isObject = require('./isObject');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3);\n * // => 3\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3');\n * // => 3\n */\nfunction toNumber(value) {\n  if (isObject(value)) {\n    var other = isFunction(value.valueOf) ? value.valueOf() : value;\n    value = isObject(other) ? (other + '') : other;\n  }\n  if (typeof value != 'string') {\n    return value === 0 ? value : +value;\n  }\n  value = value.replace(reTrim, '');\n  var isBinary = reIsBinary.test(value);\n  return (isBinary || reIsOctal.test(value))\n    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n    : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","var baseValues = require('./_baseValues'),\n    keys = require('./keys');\n\n/**\n * Creates an array of the own enumerable property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\nfunction values(object) {\n  return object ? baseValues(object, keys(object)) : [];\n}\n\nmodule.exports = values;\n","'use strict';\n\nvar React = require('react');\nvar PropTypes = React.PropTypes;\n\nfunction Heading(props) {\n  var tagName = 'h' + props.size;\n  var className = 'cf-heading cf-heading--' + props.size;\n  return React.createElement(tagName, { className: className }, props.children);\n}\n\nHeading.propTypes = {\n  size: PropTypes.oneOf([1, 2, 3, 4, 5, 6]).isRequired\n};\n\n\nmodule.exports = Heading;","\"use strict\";\n\nvar React = require('react');\n\nfunction HeadingCaption(props) {\n  return React.createElement(\n    \"small\",\n    { className: \"cf-heading__caption\" },\n    props.children\n  );\n}\n\nmodule.exports = HeadingCaption;","'use strict';\n\nexports.Heading = require('./Heading');\nexports.HeadingCaption = require('./HeadingCaption');","'use strict';\n\nvar React = require('react');\nvar PropTypes = React.PropTypes;\n\nfunction LayoutColumn(props) {\n  var width = (props.width * 100).toPrecision(5) + '%';\n  return React.createElement(\n    'div',\n    { className: 'cf-layout__column', style: { width: width } },\n    props.children\n  );\n}\n\nLayoutColumn.propTypes = {\n  width: PropTypes.number.isRequired\n};\n\n\nmodule.exports = LayoutColumn;","\"use strict\";\n\nvar React = require('react');\n\nfunction LayoutContainer(props) {\n  return React.createElement(\n    \"div\",\n    { className: \"cf-layout__container\" },\n    props.children\n  );\n}\n\nmodule.exports = LayoutContainer;","\"use strict\";\n\nvar React = require('react');\n\nfunction LayoutRow(props) {\n  return React.createElement(\n    \"div\",\n    { className: \"cf-layout__row\" },\n    props.children\n  );\n}\n\nmodule.exports = LayoutRow;","'use strict';\n\nexports.LayoutContainer = require('./LayoutContainer');\nexports.LayoutRow = require('./LayoutRow');\nexports.LayoutColumn = require('./LayoutColumn');","'use strict';\n\nexports.__esModule = true;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _cfUtilRouteHandler = require('cf-util-route-handler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Link = (function (_React$Component) {\n  _inherits(Link, _React$Component);\n\n  function Link(props, context) {\n    _classCallCheck(this, Link);\n\n    if (!props.to && !props.onClick) {\n      throw new Error(' requires either a `to` or `onClick` prop');\n    }\n\n    var _this = _possibleConstructorReturn(this, _React$Component.call(this, props, context));\n\n    _this.handleClick = function (e) {\n      e.preventDefault();\n\n      if (_this.props.disabled) {\n        return;\n      }\n\n      if (_this.props.to) {\n        (0, _cfUtilRouteHandler.routeTo)(_this.props.to);\n      } else {\n        _this.props.onClick(e);\n      }\n    };\n\n    return _this;\n  }\n\n  Link.prototype.render = function render() {\n    var _props = this.props;\n    var tagName = _props.tagName;\n    var to = _props.to;\n    var children = _props.children;\n    var className = _props.className;\n    var disabled = _props.disabled;\n\n    var props = _objectWithoutProperties(_props, ['tagName', 'to', 'children', 'className', 'disabled']);\n\n    if (!props.href && tagName === 'a') {\n      props.href = to || '#!';\n    }\n\n    if (!props.role) {\n      if (to && tagName !== 'a') {\n        props.role = 'link';\n      } else if (!to) {\n        props.role = 'button';\n      }\n    }\n\n    props.className = 'cf-link';\n\n    if (disabled) {\n      props.className += ' cf-link--disabled';\n      props.disabled = true;\n    }\n\n    if (className) {\n      props.className += ' ' + className;\n    }\n\n    props.onClick = this.handleClick;\n\n    return _react2.default.createElement(tagName, props, children);\n  };\n\n  return Link;\n})(_react2.default.Component);\n\nLink.propTypes = {\n  to: _react.PropTypes.string,\n  onClick: _react.PropTypes.func,\n  tagName: _react.PropTypes.string,\n  disabled: _react.PropTypes.bool\n};\nLink.defaultProps = {\n  tagName: 'a'\n};\nexports.default = Link;","'use strict';\n\nexports.__esModule = true;\nexports.default = undefined;\n\nvar _Link = require('./Link');\n\nvar _Link2 = _interopRequireDefault(_Link);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _Link2.default;","'use strict';\n\nexports.__esModule = true;\nexports.handleRoutes = handleRoutes;\nexports.routeTo = routeTo;\nvar handler = undefined;\n\nfunction handleRoutes(callback) {\n  if (handler) {\n    throw new Error('Only one handler is allowed at a time');\n  }\n\n  handler = callback;\n}\n\nfunction routeTo(url) {\n  if (!handler) {\n    throw new Error('A handler needs to be setup before you can route');\n  }\n\n  handler(url);\n}","'use strict';\n\nvar React = require('react');\nvar PropTypes = React.PropTypes;\n\nfunction List(props) {\n  var tagName = 'ul';\n  var className = 'cf-list';\n\n  if (props.ordered) {\n    tagName = 'ol';\n    className += ' cf-list--ordered';\n  }\n\n  if (props.unstyled) {\n    className += ' cf-list--unstyled';\n  }\n\n  return React.createElement(tagName, { className: className }, props.children);\n}\n\nList.propTypes = {\n  ordered: PropTypes.bool,\n  unstyled: PropTypes.bool\n};\nList.defaultProps = {\n  ordered: false,\n  unstyled: false\n};\n\nmodule.exports = List;","\"use strict\";\n\nvar React = require('react');\n\nfunction ListItem(props) {\n  return React.createElement(\n    \"li\",\n    { className: \"cf-list__item\" },\n    props.children\n  );\n}\n\nmodule.exports = ListItem;","'use strict';\n\nexports.List = require('./List');\nexports.ListItem = require('./ListItem');","'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar React = require('react');\nvar PropTypes = React.PropTypes;\n\nvar ReactModal2 = require('react-modal2').default;\n\nvar _require = require('react-gateway');\n\nvar Gateway = _require.Gateway;\n\nvar ReactCSSTransitionGroup = require('react-addons-css-transition-group');\n\nvar Modal = function (_React$Component) {\n  _inherits(Modal, _React$Component);\n\n  function Modal() {\n    _classCallCheck(this, Modal);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  Modal.prototype.render = function render() {\n    var modalClassName = 'cf-modal';\n\n    if (this.props.type === 'confirm') {\n      modalClassName += ' cf-modal--confirm';\n    }\n\n    return React.createElement(\n      Gateway,\n      { into: 'modal' },\n      React.createElement(\n        ReactCSSTransitionGroup,\n        {\n          transitionName: 'cf-transition-modal',\n          transitionAppear: true,\n          transitionAppearTimeout: 200,\n          transitionEnterTimeout: 200,\n          transitionLeaveTimeout: 200 },\n        this.props.isOpen && React.createElement(\n          'div',\n          { className: 'cf-modal__backdrop-scroller' },\n          React.createElement(\n            'div',\n            { className: 'cf-modal__backdrop-outer' },\n            React.createElement(\n              ReactModal2,\n              {\n                ref: 'modal',\n                key: 'modal',\n                backdropClassName: 'cf-modal__backdrop',\n                modalClassName: modalClassName,\n                closeOnEsc: this.props.closeOnEsc,\n                closeOnBackdropClick: this.props.closeOnBackdropClick,\n                onClose: this.props.onRequestClose },\n              this.props.children\n            )\n          )\n        )\n      )\n    );\n  };\n\n  return Modal;\n}(React.Component);\n\nModal.propTypes = {\n  type: PropTypes.oneOf(['confirm']),\n  isOpen: PropTypes.bool.isRequired,\n  onRequestClose: PropTypes.func.isRequired,\n  closeOnEsc: PropTypes.bool,\n  closeOnBackdropClick: PropTypes.bool\n};\nModal.defaultProps = {\n  closeOnEsc: true,\n  closeOnBackdropClick: true\n};\n\nmodule.exports = Modal;","\"use strict\";\n\nvar React = require('react');\n\nfunction ModalActions(props) {\n  return React.createElement(\n    \"div\",\n    { className: \"cf-modal__actions\" },\n    props.children\n  );\n}\n\nmodule.exports = ModalActions;","\"use strict\";\n\nvar React = require('react');\n\nfunction ModalBody(props) {\n  return React.createElement(\n    \"div\",\n    { className: \"cf-modal__body\" },\n    props.children\n  );\n}\n\nmodule.exports = ModalBody;","\"use strict\";\n\nvar React = require('react');\nvar PropTypes = React.PropTypes;\n\nfunction ModalClose(props) {\n  return React.createElement(\"span\", { className: \"cf-modal__close\", onClick: props.onClick });\n}\n\nModalClose.propTypes = {\n  onClick: PropTypes.func.isRequired\n};\n\nmodule.exports = ModalClose;","'use strict';\n\nvar React = require('react');\nvar PropTypes = React.PropTypes;\n\nfunction ModalFooter(props) {\n  var className = 'cf-modal__footer';\n\n  if (props.simple) {\n    className += ' cf-modal__footer--simple';\n  }\n\n  return React.createElement(\n    'div',\n    { className: className },\n    props.children\n  );\n}\n\nModalFooter.propTypes = {\n  simple: PropTypes.bool\n};\nModalFooter.defaultProps = {\n  simple: false\n};\n\nmodule.exports = ModalFooter;","\"use strict\";\n\nvar React = require('react');\n\nfunction ModalHeader(props) {\n  return React.createElement(\n    \"header\",\n    { className: \"cf-modal__header\" },\n    props.children\n  );\n}\n\nmodule.exports = ModalHeader;","\"use strict\";\n\nvar React = require('react');\n\nfunction ModalTitle(props) {\n  return React.createElement(\n    \"h4\",\n    { className: \"cf-modal__title\" },\n    props.children\n  );\n}\n\nmodule.exports = ModalTitle;","'use strict';\n\nexports.Modal = require('./Modal');\nexports.ModalActions = require('./ModalActions');\nexports.ModalBody = require('./ModalBody');\nexports.ModalClose = require('./ModalClose');\nexports.ModalFooter = require('./ModalFooter');\nexports.ModalHeader = require('./ModalHeader');\nexports.ModalTitle = require('./ModalTitle');","'use strict';\n\nexports.__esModule = true;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _GatewayRegistry = require('./GatewayRegistry');\n\nvar _GatewayRegistry2 = _interopRequireDefault(_GatewayRegistry);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Gateway = (function (_React$Component) {\n  _inherits(Gateway, _React$Component);\n\n  function Gateway(props, context) {\n    _classCallCheck(this, Gateway);\n\n    var _this = _possibleConstructorReturn(this, _React$Component.call(this, props, context));\n\n    _this.gatewayRegistry = context.gatewayRegistry;\n    return _this;\n  }\n\n  Gateway.prototype.componentWillMount = function componentWillMount() {\n    this.renderIntoGatewayNode(this.props);\n  };\n\n  Gateway.prototype.componentWillReceiveProps = function componentWillReceiveProps(props) {\n    this.gatewayRegistry.clearChild(this.props.into);\n    this.renderIntoGatewayNode(props);\n  };\n\n  Gateway.prototype.componentWillUnmount = function componentWillUnmount() {\n    this.gatewayRegistry.removeChild(this.props.into);\n  };\n\n  Gateway.prototype.renderIntoGatewayNode = function renderIntoGatewayNode(props) {\n    delete props.ref;\n    this.gatewayRegistry.addChild(this.props.into, props.children);\n  };\n\n  Gateway.prototype.render = function render() {\n    return null;\n  };\n\n  return Gateway;\n})(_react2.default.Component);\n\nGateway.contextTypes = {\n  gatewayRegistry: _react2.default.PropTypes.instanceOf(_GatewayRegistry2.default).isRequired\n};\nGateway.propTypes = {\n  into: _react2.default.PropTypes.string.isRequired,\n  children: _react2.default.PropTypes.oneOfType([_react2.default.PropTypes.element, _react2.default.PropTypes.string])\n};\nexports.default = Gateway;","'use strict';\n\nexports.__esModule = true;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _GatewayRegistry = require('./GatewayRegistry');\n\nvar _GatewayRegistry2 = _interopRequireDefault(_GatewayRegistry);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar GatewayDest = (function (_React$Component) {\n  _inherits(GatewayDest, _React$Component);\n\n  function GatewayDest(props, context) {\n    _classCallCheck(this, GatewayDest);\n\n    var _this = _possibleConstructorReturn(this, _React$Component.call(this, props, context));\n\n    _this.state = {\n      child: null\n    };\n\n    _this.gatewayRegistry = context.gatewayRegistry;\n    return _this;\n  }\n\n  GatewayDest.prototype.componentWillMount = function componentWillMount() {\n    this.gatewayRegistry.addContainer(this.props.name, this);\n  };\n\n  GatewayDest.prototype.componentWillUnmount = function componentWillUnmount() {\n    this.gatewayRegistry.removeContainer(this.props.name, this);\n  };\n\n  GatewayDest.prototype.render = function render() {\n    var _props = this.props;\n    var tagName = _props.tagName;\n\n    var attrs = _objectWithoutProperties(_props, ['tagName']);\n\n    delete attrs.name;\n    return _react2.default.createElement(tagName, attrs, this.state.child);\n  };\n\n  return GatewayDest;\n})(_react2.default.Component);\n\nGatewayDest.contextTypes = {\n  gatewayRegistry: _react2.default.PropTypes.instanceOf(_GatewayRegistry2.default).isRequired\n};\nGatewayDest.propTypes = {\n  name: _react2.default.PropTypes.string.isRequired,\n  tagName: _react2.default.PropTypes.string\n};\nGatewayDest.defaultProps = {\n  tagName: 'div'\n};\nexports.default = GatewayDest;","'use strict';\n\nexports.__esModule = true;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _GatewayRegistry = require('./GatewayRegistry');\n\nvar _GatewayRegistry2 = _interopRequireDefault(_GatewayRegistry);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar GatewayProvider = (function (_React$Component) {\n  _inherits(GatewayProvider, _React$Component);\n\n  GatewayProvider.prototype.getChildContext = function getChildContext() {\n    return {\n      gatewayRegistry: this.gatewayRegistry\n    };\n  };\n\n  function GatewayProvider(props, context) {\n    _classCallCheck(this, GatewayProvider);\n\n    var _this = _possibleConstructorReturn(this, _React$Component.call(this, props, context));\n\n    _this.gatewayRegistry = new _GatewayRegistry2.default();\n    return _this;\n  }\n\n  GatewayProvider.prototype.render = function render() {\n    return this.props.children;\n  };\n\n  return GatewayProvider;\n})(_react2.default.Component);\n\nGatewayProvider.childContextTypes = {\n  gatewayRegistry: _react2.default.PropTypes.instanceOf(_GatewayRegistry2.default).isRequired\n};\nGatewayProvider.propTypes = {\n  children: _react2.default.PropTypes.element\n};\nexports.default = GatewayProvider;","'use strict';\n\nexports.__esModule = true;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar GatewayRegistry = (function () {\n  function GatewayRegistry() {\n    _classCallCheck(this, GatewayRegistry);\n\n    this._containers = {};\n    this._children = {};\n  }\n\n  GatewayRegistry.prototype._renderContainer = function _renderContainer(name) {\n    if (!this._containers[name]) {\n      return;\n    }\n\n    this._containers[name].setState({\n      child: this._children[name]\n    });\n  };\n\n  GatewayRegistry.prototype.addContainer = function addContainer(name, container) {\n    this._containers[name] = container;\n    this._renderContainer(name);\n  };\n\n  GatewayRegistry.prototype.removeContainer = function removeContainer(name) {\n    this._containers[name] = null;\n  };\n\n  GatewayRegistry.prototype.addChild = function addChild(name, child) {\n    if (this._children[name]) {\n      console.warn('Only a single Gateway can be rendered at a time into a GatewayDest.' + ('You rendered multiple into \"' + name + '\"'));\n    }\n    this._children[name] = child;\n    this._renderContainer(name);\n  };\n\n  GatewayRegistry.prototype.clearChild = function clearChild(name) {\n    this._children[name] = null;\n  };\n\n  GatewayRegistry.prototype.removeChild = function removeChild(name) {\n    this.clearChild(name);\n    this._renderContainer(name);\n  };\n\n  return GatewayRegistry;\n})();\n\nexports.default = GatewayRegistry;","'use strict';\n\nexports.__esModule = true;\nexports.GatewayProvider = exports.GatewayDest = exports.Gateway = undefined;\n\nvar _Gateway2 = require('./Gateway');\n\nvar _Gateway3 = _interopRequireDefault(_Gateway2);\n\nvar _GatewayDest2 = require('./GatewayDest');\n\nvar _GatewayDest3 = _interopRequireDefault(_GatewayDest2);\n\nvar _GatewayProvider2 = require('./GatewayProvider');\n\nvar _GatewayProvider3 = _interopRequireDefault(_GatewayProvider2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.Gateway = _Gateway3.default;\nexports.GatewayDest = _GatewayDest3.default;\nexports.GatewayProvider = _GatewayProvider3.default;","'use strict';\n\nexports.__esModule = true;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _a11yFocusScope = require('a11y-focus-scope');\n\nvar _a11yFocusScope2 = _interopRequireDefault(_a11yFocusScope);\n\nvar _a11yFocusStore = require('a11y-focus-store');\n\nvar _a11yFocusStore2 = _interopRequireDefault(_a11yFocusStore);\n\nvar _exenv = require('exenv');\n\nvar _exenv2 = _interopRequireDefault(_exenv);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction setFocusOn(applicationElement, element) {\n  _a11yFocusStore2.default.storeFocus();\n  if (applicationElement) applicationElement.setAttribute('aria-hidden', 'true');\n  _a11yFocusScope2.default.scopeFocus(element);\n}\n\nfunction resetFocus(applicationElement) {\n  _a11yFocusScope2.default.unscopeFocus();\n  if (applicationElement) applicationElement.removeAttribute('aria-hidden');\n  _a11yFocusStore2.default.restoreFocus();\n}\n\nvar ReactModal2 = (function (_React$Component) {\n  _inherits(ReactModal2, _React$Component);\n\n  function ReactModal2() {\n    var _temp, _this, _ret;\n\n    _classCallCheck(this, ReactModal2);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.handleDocumentKeydown = function (event) {\n      if (_this.props.closeOnEsc && event.keyCode === 27) {\n        _this.props.onClose();\n      }\n    }, _this.handleBackdropClick = function () {\n      if (_this.props.closeOnBackdropClick) {\n        _this.props.onClose();\n      }\n    }, _this.handleModalClick = function (event) {\n      event.stopPropagation();\n    }, _temp), _possibleConstructorReturn(_this, _ret);\n  }\n\n  ReactModal2.getApplicationElement = function getApplicationElement() {\n    console.warn('`ReactModal2.getApplicationElement` needs to be set for accessibility reasons');\n  };\n\n  ReactModal2.prototype.componentDidMount = function componentDidMount() {\n    if (_exenv2.default.canUseDOM) {\n      setFocusOn(ReactModal2.getApplicationElement(), this.refs.modal);\n      document.addEventListener('keydown', this.handleDocumentKeydown);\n    }\n  };\n\n  ReactModal2.prototype.componentWillUnmount = function componentWillUnmount() {\n    if (_exenv2.default.canUseDOM) {\n      resetFocus(ReactModal2.getApplicationElement());\n      document.removeEventListener('keydown', this.handleDocumentKeydown);\n    }\n  };\n\n  ReactModal2.prototype.render = function render() {\n    return _react2.default.createElement(\n      'div',\n      { ref: 'backdrop',\n        className: this.props.backdropClassName,\n        style: this.props.backdropStyles,\n        onClick: this.handleBackdropClick },\n      _react2.default.createElement(\n        'div',\n        { ref: 'modal',\n          className: this.props.modalClassName,\n          style: this.props.modalStyles,\n          onClick: this.handleModalClick,\n          tabIndex: '-1' },\n        this.props.children\n      )\n    );\n  };\n\n  return ReactModal2;\n})(_react2.default.Component);\n\nReactModal2.propTypes = {\n  onClose: _react2.default.PropTypes.func.isRequired,\n\n  closeOnEsc: _react2.default.PropTypes.bool,\n  closeOnBackdropClick: _react2.default.PropTypes.bool,\n\n  backdropClassName: _react2.default.PropTypes.string,\n  backdropStyles: _react2.default.PropTypes.object,\n\n  modalClassName: _react2.default.PropTypes.string,\n  modalStyles: _react2.default.PropTypes.object\n};\nReactModal2.defaultProps = {\n  closeOnEsc: true,\n  closeOnBackdropClick: true\n};\nexports.default = ReactModal2;","'use strict';\n\nexports.__esModule = true;\nexports.default = undefined;\n\nvar _Modal = require('./Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _Modal2.default;","'use strict';\n\nvar tabbable = require('tabbable');\nvar focusin = require('focusin');\nvar polyfilled = false;\n\nfunction init(element) {\n\n  // lazily polyfill focusin for firefox\n  if (!polyfilled) {\n    focusin.polyfill();\n    polyfilled = true;\n  }\n\n  function focus() {\n    (tabbable(element)[0] || element).focus()\n  }\n\n  function onFocusIn(event) {\n    if (element !== event.target && !element.contains(event.target)) {\n      focus();\n    }\n  }\n\n  focus();\n\n  document.addEventListener('focusin', onFocusIn);\n\n  return function teardown() {\n    document.removeEventListener('focusin', onFocusIn);\n  };\n}\n\nvar teardownFn;\n\nexports.scopeFocus = function(element) {\n  if (teardownFn) teardownFn();\n  teardownFn = init(element);\n};\n\nexports.unscopeFocus = function() {\n  if (teardownFn) teardownFn();\n  teardownFn = null;\n};\n","/* from https://gist.github.com/nuxodin/9250e56a3ce6c0446efa */\n\nfunction polyfill () {\n  var w = window\n  var d = w.document\n\n  if (w.onfocusin === undefined) {\n    d.addEventListener('focus', addPolyfill, true)\n    d.addEventListener('blur', addPolyfill, true)\n    d.addEventListener('focusin', removePolyfill, true)\n    d.addEventListener('focusout', removePolyfill, true)\n  }\n\n  function addPolyfill (e) {\n    var type = e.type === 'focus' ? 'focusin' : 'focusout'\n    var event = new window.CustomEvent(type, { bubbles: true, cancelable: false })\n    event.c1Generated = true\n    e.target.dispatchEvent(event)\n  }\n\n  function removePolyfill (e) {\n    if (!e.c1Generated) {\n      d.removeEventListener('focus', addPolyfill, true)\n      d.removeEventListener('blur', addPolyfill, true)\n      d.removeEventListener('focusin', removePolyfill, true)\n      d.removeEventListener('focusout', removePolyfill, true)\n    }\n    setTimeout(function () {\n      d.removeEventListener('focusin', removePolyfill, true)\n      d.removeEventListener('focusout', removePolyfill, true)\n    })\n  }\n}\n\nmodule.exports = {\n  polyfill: polyfill\n}\n","module.exports = function(el) {\n  var basicTabbables = [];\n  var orderedTabbables = [];\n\n  var candidateNodelist = el.querySelectorAll('input, select, a, textarea, button, [tabindex]');\n  var candidates = Array.prototype.slice.call(candidateNodelist);\n\n  var candidate, candidateIndex;\n  for (var i = 0, l = candidates.length; i < l; i++) {\n    candidate = candidates[i];\n    candidateIndex = candidate.tabIndex;\n\n    if (\n      candidateIndex < 0\n      || (candidate.tagName === 'INPUT' && candidate.type === 'hidden')\n      || (candidate.tagName === 'A' && !candidate.href && !candidate.tabIndex)\n      || candidate.disabled\n      || isHidden(candidate)\n    ) {\n      continue;\n    }\n\n    if (candidateIndex === 0) {\n      basicTabbables.push(candidate);\n    } else {\n      orderedTabbables.push({\n        tabIndex: candidateIndex,\n        node: candidate,\n      });\n    }\n  }\n\n  var tabbableNodes = orderedTabbables\n    .sort(function(a, b) {\n      return a.tabIndex - b.tabIndex;\n    })\n    .map(function(a) {\n      return a.node\n    });\n\n  Array.prototype.push.apply(tabbableNodes, basicTabbables);\n\n  return tabbableNodes;\n}\n\nvar nodeCache = {};\nvar nodeCacheIndex = 1;\nfunction isHidden(node) {\n  if (node === document.documentElement) {\n    return false;\n  }\n\n  if (node.tabbableCacheIndex) {\n    return nodeCache[node.tabbableCacheIndex];\n  }\n\n  var result = false;\n  var style = window.getComputedStyle(node);\n  if (style.visibility === 'hidden' || style.display === 'none') {\n    result = true;\n  } else if (node.parentNode) {\n    result = isHidden(node.parentNode);\n  }\n\n  node.tabbableCacheIndex = nodeCacheIndex;\n  nodeCache[node.tabbableCacheIndex] = result;\n  nodeCacheIndex++;\n\n  return result;\n}\n","'use strict';\n\nvar storedFocusElement;\n\nexports.storeFocus = function() {\n  storedFocusElement = document.activeElement;\n};\n\nexports.clearStoredFocus = function() {\n  storedFocusElement = null;\n};\n\nexports.restoreFocus = function() {\n  if (!storedFocusElement) return;\n  try { storedFocusElement.focus(); } catch (err) {}\n  storedFocusElement = null;\n};\n","/*!\n  Copyright (c) 2015 Jed Watson.\n  Based on code that is Copyright 2013-2015, Facebook, Inc.\n  All rights reserved.\n*/\n\n(function () {\n\t'use strict';\n\n\tvar canUseDOM = !!(\n\t\ttypeof window !== 'undefined' &&\n\t\twindow.document &&\n\t\twindow.document.createElement\n\t);\n\n\tvar ExecutionEnvironment = {\n\n\t\tcanUseDOM: canUseDOM,\n\n\t\tcanUseWorkers: typeof Worker !== 'undefined',\n\n\t\tcanUseEventListeners:\n\t\t\tcanUseDOM && !!(window.addEventListener || window.attachEvent),\n\n\t\tcanUseViewport: canUseDOM && !!window.screen\n\n\t};\n\n\tif (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\tdefine(function () {\n\t\t\treturn ExecutionEnvironment;\n\t\t});\n\t} else if (typeof module !== 'undefined' && module.exports) {\n\t\tmodule.exports = ExecutionEnvironment;\n\t} else {\n\t\twindow.ExecutionEnvironment = ExecutionEnvironment;\n\t}\n\n}());\n","'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar React = require('react');\nvar PropTypes = React.PropTypes;\n\nvar Radio = function (_React$Component) {\n  _inherits(Radio, _React$Component);\n\n  function Radio() {\n    var _temp, _this, _ret;\n\n    _classCallCheck(this, Radio);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.handleChange = function (e) {\n      _this.props.onChange(e.target.value);\n    }, _temp), _possibleConstructorReturn(_this, _ret);\n  }\n\n  Radio.prototype.render = function render() {\n    var className = 'cf-radio';\n\n    if (this.props.checked) {\n      className += ' cf-radio--checked';\n    }\n\n    return React.createElement(\n      'label',\n      { htmlFor: this.props.name, className: className },\n      React.createElement('input', { type: 'radio',\n        className: 'cf-radio__input',\n        id: this.props.name,\n        name: this.props.name,\n        value: this.props.value,\n        checked: this.props.checked,\n        onChange: this.handleChange }),\n      this.props.label && React.createElement(\n        'span',\n        { className: 'cf-radio__label' },\n        this.props.label\n      )\n    );\n  };\n\n  return Radio;\n}(React.Component);\n\nRadio.propTypes = {\n  label: PropTypes.oneOfType([PropTypes.string, PropTypes.oneOf([false])]).isRequired,\n  name: PropTypes.string.isRequired,\n  value: PropTypes.string.isRequired,\n  checked: PropTypes.bool.isRequired,\n  onChange: PropTypes.func.isRequired\n};\n\nmodule.exports = Radio;","'use strict';\n\nvar React = require('react');\nvar PropTypes = React.PropTypes;\n\nvar Radio = require('./Radio');\n\nfunction RadioGroup(props) {\n  return React.createElement(\n    'div',\n    { className: 'cf-radio__group' },\n    props.options.map(function (option) {\n      return React.createElement(Radio, {\n        key: option.name,\n        label: option.label,\n        name: option.name,\n        value: option.value,\n        checked: props.value === option.value,\n        onChange: props.onChange });\n    })\n  );\n}\n\nRadioGroup.propTypes = {\n  value: PropTypes.string.isRequired,\n  onChange: PropTypes.func.isRequired,\n  options: PropTypes.arrayOf(PropTypes.shape({\n    label: PropTypes.oneOfType([PropTypes.string, PropTypes.oneOf([false])]).isRequired,\n    name: PropTypes.string.isRequired,\n    value: PropTypes.string.isRequired\n  })).isRequired\n};\n\nmodule.exports = RadioGroup;","'use strict';\n\nexports.Radio = require('./Radio');\nexports.RadioGroup = require('./RadioGroup');","'use strict';\n\nexports.__esModule = true;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactSelect = require('react-select');\n\nvar _reactSelect2 = _interopRequireDefault(_reactSelect);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Select = (function (_React$Component) {\n  _inherits(Select, _React$Component);\n\n  function Select() {\n    _classCallCheck(this, Select);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  Select.prototype.render = function render() {\n    return _react2.default.createElement(\n      'div',\n      { className: 'cf-select' },\n      this.props.label && _react2.default.createElement(\n        'label',\n        null,\n        this.props.label\n      ),\n      _react2.default.createElement(_reactSelect2.default\n      // Simplify if this isnt a searchable select\n      , { searchable: this.props.searchable,\n        clearable: this.props.searchable,\n        backspaceRemoves: this.props.searchable,\n\n        onChange: this.props.onChange,\n        onBlur: this.props.onBlur,\n        onFocus: this.props.onFocus,\n\n        multi: this.props.multi,\n        value: this.props.value,\n        options: this.props.options,\n        placeholder: this.props.placeholder })\n    );\n  };\n\n  return Select;\n})(_react2.default.Component);\n\nSelect.propTypes = {\n  label: _react2.default.PropTypes.string,\n\n  onChange: _react2.default.PropTypes.func.isRequired,\n  onBlur: _react2.default.PropTypes.func,\n  onFocus: _react2.default.PropTypes.func,\n\n  multi: _react2.default.PropTypes.bool,\n  searchable: _react2.default.PropTypes.bool,\n\n  value: _react2.default.PropTypes.any,\n  options: _react2.default.PropTypes.arrayOf(_react2.default.PropTypes.shape({\n    label: _react2.default.PropTypes.string.isRequired,\n    value: _react2.default.PropTypes.any.isRequired\n  })),\n  placeholder: _react2.default.PropTypes.string\n};\nSelect.defaultProps = {\n  multi: false,\n  searchable: false\n};\nexports.default = Select;","'use strict';\n\nexports.__esModule = true;\nexports.default = undefined;\n\nvar _Select = require('./Select');\n\nvar _Select2 = _interopRequireDefault(_Select);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _Select2.default;","'use strict';\n\nvar React = require('react');\nvar classes = require('classnames');\n\nvar Option = React.createClass({\n\tdisplayName: 'Option',\n\n\tpropTypes: {\n\t\taddLabelText: React.PropTypes.string, // string rendered in case of allowCreate option passed to ReactSelect\n\t\tclassName: React.PropTypes.string, // className (based on mouse position)\n\t\tmouseDown: React.PropTypes.func, // method to handle click on option element\n\t\tmouseEnter: React.PropTypes.func, // method to handle mouseEnter on option element\n\t\tmouseLeave: React.PropTypes.func, // method to handle mouseLeave on option element\n\t\toption: React.PropTypes.object.isRequired, // object that is base for that option\n\t\trenderFunc: React.PropTypes.func // method passed to ReactSelect component to render label text\n\t},\n\tblockEvent: function blockEvent(event) {\n\t\tevent.preventDefault();\n\t\tif (event.target.tagName !== 'A' || !('href' in event.target)) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (event.target.target) {\n\t\t\twindow.open(event.target.href);\n\t\t} else {\n\t\t\twindow.location.href = event.target.href;\n\t\t}\n\t},\n\thandleMouseDown: function handleMouseDown(e) {\n\t\tthis.props.mouseDown(this.props.option, e);\n\t},\n\thandleMouseEnter: function handleMouseEnter(e) {\n\t\tthis.props.mouseEnter(this.props.option, e);\n\t},\n\thandleMouseLeave: function handleMouseLeave(e) {\n\t\tthis.props.mouseLeave(this.props.option, e);\n\t},\n\trender: function render() {\n\t\tvar option = this.props.option;\n\t\tvar label = option.create ? this.props.addLabelText.replace('{label}', option.label) : this.props.renderFunc(option);\n\t\tvar optionClasses = classes(this.props.className, option.className);\n\n\t\treturn option.disabled ? React.createElement(\n\t\t\t'div',\n\t\t\t{ className: optionClasses,\n\t\t\t\tonMouseDown: this.blockEvent,\n\t\t\t\tonClick: this.blockEvent },\n\t\t\tlabel\n\t\t) : React.createElement(\n\t\t\t'div',\n\t\t\t{ className: optionClasses,\n\t\t\t\tstyle: option.style,\n\t\t\t\tonMouseDown: this.handleMouseDown,\n\t\t\t\tonMouseEnter: this.handleMouseEnter,\n\t\t\t\tonMouseLeave: this.handleMouseLeave,\n\t\t\t\tonClick: this.handleMouseDown,\n\t\t\t\ttitle: option.title },\n\t\t\tlabel\n\t\t);\n\t}\n});\n\nmodule.exports = Option;","/* disable some rules until we refactor more completely; fixing them now would\n   cause conflicts with some open PRs unnecessarily. */\n/* eslint react/jsx-sort-prop-types: 0, react/sort-comp: 0, react/prop-types: 0 */\n\n'use strict';\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar React = require('react');\nvar ReactDOM = require('react-dom');\nvar Input = require('react-input-autosize');\nvar classes = require('classnames');\nvar Value = require('./Value');\nvar SingleValue = require('./SingleValue');\nvar Option = require('./Option');\n\nvar requestId = 0;\n\nvar Select = React.createClass({\n\n\tdisplayName: 'Select',\n\n\tpropTypes: {\n\t\taddLabelText: React.PropTypes.string, // placeholder displayed when you want to add a label on a multi-value input\n\t\tallowCreate: React.PropTypes.bool, // whether to allow creation of new entries\n\t\tasyncOptions: React.PropTypes.func, // function to call to get options\n\t\tautoload: React.PropTypes.bool, // whether to auto-load the default async options set\n\t\tbackspaceRemoves: React.PropTypes.bool, // whether backspace removes an item if there is no text input\n\t\tcacheAsyncResults: React.PropTypes.bool, // whether to allow cache\n\t\tclassName: React.PropTypes.string, // className for the outer element\n\t\tclearAllText: React.PropTypes.string, // title for the \"clear\" control when multi: true\n\t\tclearValueText: React.PropTypes.string, // title for the \"clear\" control\n\t\tclearable: React.PropTypes.bool, // should it be possible to reset value\n\t\tdelimiter: React.PropTypes.string, // delimiter to use to join multiple values\n\t\tdisabled: React.PropTypes.bool, // whether the Select is disabled or not\n\t\tfilterOption: React.PropTypes.func, // method to filter a single option  (option, filterString)\n\t\tfilterOptions: React.PropTypes.func, // method to filter the options array: function ([options], filterString, [values])\n\t\tignoreCase: React.PropTypes.bool, // whether to perform case-insensitive filtering\n\t\tinputProps: React.PropTypes.object, // custom attributes for the Input (in the Select-control) e.g: {'data-foo': 'bar'}\n\t\tisLoading: React.PropTypes.bool, // whether the Select is loading externally or not (such as options being loaded)\n\t\tlabelKey: React.PropTypes.string, // path of the label value in option objects\n\t\tmatchPos: React.PropTypes.string, // (any|start) match the start or entire string when filtering\n\t\tmatchProp: React.PropTypes.string, // (any|label|value) which option property to filter on\n\t\tmulti: React.PropTypes.bool, // multi-value input\n\t\tname: React.PropTypes.string, // field name, for hidden  tag\n\t\tnewOptionCreator: React.PropTypes.func, // factory to create new options when allowCreate set\n\t\tnoResultsText: React.PropTypes.string, // placeholder displayed when there are no matching search results\n\t\tonBlur: React.PropTypes.func, // onBlur handler: function (event) {}\n\t\tonChange: React.PropTypes.func, // onChange handler: function (newValue) {}\n\t\tonFocus: React.PropTypes.func, // onFocus handler: function (event) {}\n\t\tonInputChange: React.PropTypes.func, // onInputChange handler: function (inputValue) {}\n\t\tonOptionLabelClick: React.PropTypes.func, // onCLick handler for value labels: function (value, event) {}\n\t\toptionComponent: React.PropTypes.func, // option component to render in dropdown\n\t\toptionRenderer: React.PropTypes.func, // optionRenderer: function (option) {}\n\t\toptions: React.PropTypes.array, // array of options\n\t\tplaceholder: React.PropTypes.string, // field placeholder, displayed when there's no value\n\t\tsearchable: React.PropTypes.bool, // whether to enable searching feature or not\n\t\tsearchingText: React.PropTypes.string, // message to display whilst options are loading via asyncOptions\n\t\tsearchPromptText: React.PropTypes.string, // label to prompt for search input\n\t\tsingleValueComponent: React.PropTypes.func, // single value component when multiple is set to false\n\t\tvalue: React.PropTypes.any, // initial field value\n\t\tvalueComponent: React.PropTypes.func, // value component to render in multiple mode\n\t\tvalueKey: React.PropTypes.string, // path of the label value in option objects\n\t\tvalueRenderer: React.PropTypes.func // valueRenderer: function (option) {}\n\t},\n\n\tgetDefaultProps: function getDefaultProps() {\n\t\treturn {\n\t\t\taddLabelText: 'Add \"{label}\"?',\n\t\t\tallowCreate: false,\n\t\t\tasyncOptions: undefined,\n\t\t\tautoload: true,\n\t\t\tbackspaceRemoves: true,\n\t\t\tcacheAsyncResults: true,\n\t\t\tclassName: undefined,\n\t\t\tclearAllText: 'Clear all',\n\t\t\tclearValueText: 'Clear value',\n\t\t\tclearable: true,\n\t\t\tdelimiter: ',',\n\t\t\tdisabled: false,\n\t\t\tignoreCase: true,\n\t\t\tinputProps: {},\n\t\t\tisLoading: false,\n\t\t\tlabelKey: 'label',\n\t\t\tmatchPos: 'any',\n\t\t\tmatchProp: 'any',\n\t\t\tname: undefined,\n\t\t\tnewOptionCreator: undefined,\n\t\t\tnoResultsText: 'No results found',\n\t\t\tonChange: undefined,\n\t\t\tonInputChange: undefined,\n\t\t\tonOptionLabelClick: undefined,\n\t\t\toptionComponent: Option,\n\t\t\toptions: undefined,\n\t\t\tplaceholder: 'Select...',\n\t\t\tsearchable: true,\n\t\t\tsearchingText: 'Searching...',\n\t\t\tsearchPromptText: 'Type to search',\n\t\t\tsingleValueComponent: SingleValue,\n\t\t\tvalue: undefined,\n\t\t\tvalueComponent: Value,\n\t\t\tvalueKey: 'value'\n\t\t};\n\t},\n\n\tgetInitialState: function getInitialState() {\n\t\treturn {\n\t\t\t/*\n    * set by getStateFromValue on componentWillMount:\n    * - value\n    * - values\n    * - filteredOptions\n    * - inputValue\n    * - placeholder\n    * - focusedOption\n   */\n\t\t\tisFocused: false,\n\t\t\tisLoading: false,\n\t\t\tisOpen: false,\n\t\t\toptions: this.props.options\n\t\t};\n\t},\n\n\tcomponentWillMount: function componentWillMount() {\n\t\tvar _this = this;\n\n\t\tthis._optionsCache = {};\n\t\tthis._optionsFilterString = '';\n\t\tthis._closeMenuIfClickedOutside = function (event) {\n\t\t\tif (!_this.state.isOpen) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar menuElem = ReactDOM.findDOMNode(_this.refs.selectMenuContainer);\n\t\t\tvar controlElem = ReactDOM.findDOMNode(_this.refs.control);\n\n\t\t\tvar eventOccuredOutsideMenu = _this.clickedOutsideElement(menuElem, event);\n\t\t\tvar eventOccuredOutsideControl = _this.clickedOutsideElement(controlElem, event);\n\n\t\t\t// Hide dropdown menu if click occurred outside of menu\n\t\t\tif (eventOccuredOutsideMenu && eventOccuredOutsideControl) {\n\t\t\t\t_this.setState({\n\t\t\t\t\tisOpen: false\n\t\t\t\t}, _this._unbindCloseMenuIfClickedOutside);\n\t\t\t}\n\t\t};\n\t\tthis._bindCloseMenuIfClickedOutside = function () {\n\t\t\tif (!document.addEventListener && document.attachEvent) {\n\t\t\t\tdocument.attachEvent('onclick', _this._closeMenuIfClickedOutside);\n\t\t\t} else {\n\t\t\t\tdocument.addEventListener('click', _this._closeMenuIfClickedOutside);\n\t\t\t}\n\t\t};\n\t\tthis._unbindCloseMenuIfClickedOutside = function () {\n\t\t\tif (!document.removeEventListener && document.detachEvent) {\n\t\t\t\tdocument.detachEvent('onclick', _this._closeMenuIfClickedOutside);\n\t\t\t} else {\n\t\t\t\tdocument.removeEventListener('click', _this._closeMenuIfClickedOutside);\n\t\t\t}\n\t\t};\n\t\tthis.setState(this.getStateFromValue(this.props.value));\n\t},\n\n\tcomponentDidMount: function componentDidMount() {\n\t\tif (this.props.asyncOptions && this.props.autoload) {\n\t\t\tthis.autoloadAsyncOptions();\n\t\t}\n\t},\n\n\tcomponentWillUnmount: function componentWillUnmount() {\n\t\tclearTimeout(this._blurTimeout);\n\t\tclearTimeout(this._focusTimeout);\n\t\tif (this.state.isOpen) {\n\t\t\tthis._unbindCloseMenuIfClickedOutside();\n\t\t}\n\t},\n\n\tcomponentWillReceiveProps: function componentWillReceiveProps(newProps) {\n\t\tvar _this2 = this;\n\n\t\tvar optionsChanged = false;\n\t\tif (JSON.stringify(newProps.options) !== JSON.stringify(this.props.options)) {\n\t\t\toptionsChanged = true;\n\t\t\tthis.setState({\n\t\t\t\toptions: newProps.options,\n\t\t\t\tfilteredOptions: this.filterOptions(newProps.options)\n\t\t\t});\n\t\t}\n\t\tif (newProps.value !== this.state.value || newProps.placeholder !== this.props.placeholder || optionsChanged) {\n\t\t\tvar setState = function setState(newState) {\n\t\t\t\t_this2.setState(_this2.getStateFromValue(newProps.value, newState && newState.options || newProps.options, newProps.placeholder));\n\t\t\t};\n\t\t\tif (this.props.asyncOptions) {\n\t\t\t\tthis.loadAsyncOptions(newProps.value, {}, setState);\n\t\t\t} else {\n\t\t\t\tsetState();\n\t\t\t}\n\t\t}\n\t},\n\n\tcomponentDidUpdate: function componentDidUpdate() {\n\t\tvar _this3 = this;\n\n\t\tif (!this.props.disabled && this._focusAfterUpdate) {\n\t\t\tclearTimeout(this._blurTimeout);\n\t\t\tclearTimeout(this._focusTimeout);\n\t\t\tthis._focusTimeout = setTimeout(function () {\n\t\t\t\tif (!_this3.isMounted()) return;\n\t\t\t\t_this3.getInputNode().focus();\n\t\t\t\t_this3._focusAfterUpdate = false;\n\t\t\t}, 50);\n\t\t}\n\t\tif (this._focusedOptionReveal) {\n\t\t\tif (this.refs.focused && this.refs.menu) {\n\t\t\t\tvar focusedDOM = ReactDOM.findDOMNode(this.refs.focused);\n\t\t\t\tvar menuDOM = ReactDOM.findDOMNode(this.refs.menu);\n\t\t\t\tvar focusedRect = focusedDOM.getBoundingClientRect();\n\t\t\t\tvar menuRect = menuDOM.getBoundingClientRect();\n\n\t\t\t\tif (focusedRect.bottom > menuRect.bottom || focusedRect.top < menuRect.top) {\n\t\t\t\t\tmenuDOM.scrollTop = focusedDOM.offsetTop + focusedDOM.clientHeight - menuDOM.offsetHeight;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._focusedOptionReveal = false;\n\t\t}\n\t},\n\n\tfocus: function focus() {\n\t\tthis.getInputNode().focus();\n\t},\n\n\tclickedOutsideElement: function clickedOutsideElement(element, event) {\n\t\tvar eventTarget = event.target ? event.target : event.srcElement;\n\t\twhile (eventTarget != null) {\n\t\t\tif (eventTarget === element) return false;\n\t\t\teventTarget = eventTarget.offsetParent;\n\t\t}\n\t\treturn true;\n\t},\n\n\tgetStateFromValue: function getStateFromValue(value, options, placeholder) {\n\t\tvar _this4 = this;\n\n\t\tif (!options) {\n\t\t\toptions = this.state.options;\n\t\t}\n\t\tif (!placeholder) {\n\t\t\tplaceholder = this.props.placeholder;\n\t\t}\n\n\t\t// reset internal filter string\n\t\tthis._optionsFilterString = '';\n\n\t\tvar values = this.initValuesArray(value, options);\n\t\tvar filteredOptions = this.filterOptions(options, values);\n\n\t\tvar focusedOption;\n\t\tvar valueForState = null;\n\t\tif (!this.props.multi && values.length) {\n\t\t\tfocusedOption = values[0];\n\t\t\tvalueForState = values[0][this.props.valueKey];\n\t\t} else {\n\t\t\tfocusedOption = this.getFirstFocusableOption(filteredOptions);\n\t\t\tvalueForState = values.map(function (v) {\n\t\t\t\treturn v[_this4.props.valueKey];\n\t\t\t}).join(this.props.delimiter);\n\t\t}\n\n\t\treturn {\n\t\t\tvalue: valueForState,\n\t\t\tvalues: values,\n\t\t\tinputValue: '',\n\t\t\tfilteredOptions: filteredOptions,\n\t\t\tplaceholder: !this.props.multi && values.length ? values[0][this.props.labelKey] : placeholder,\n\t\t\tfocusedOption: focusedOption\n\t\t};\n\t},\n\n\tgetFirstFocusableOption: function getFirstFocusableOption(options) {\n\t\tfor (var optionIndex = 0; optionIndex < options.length; ++optionIndex) {\n\t\t\tif (!options[optionIndex].disabled) {\n\t\t\t\treturn options[optionIndex];\n\t\t\t}\n\t\t}\n\t},\n\n\tinitValuesArray: function initValuesArray(values, options) {\n\t\tvar _this5 = this;\n\n\t\tif (!Array.isArray(values)) {\n\t\t\tif (typeof values === 'string') {\n\t\t\t\tvalues = values === '' ? [] : this.props.multi ? values.split(this.props.delimiter) : [values];\n\t\t\t} else {\n\t\t\t\tvalues = values !== undefined && values !== null ? [values] : [];\n\t\t\t}\n\t\t}\n\t\treturn values.map(function (val) {\n\t\t\tif (typeof val === 'string' || typeof val === 'number') {\n\t\t\t\tvar _ref;\n\n\t\t\t\tfor (var key in options) {\n\t\t\t\t\tif (options.hasOwnProperty(key) && options[key] && (options[key][_this5.props.valueKey] === val || typeof options[key][_this5.props.valueKey] === 'number' && options[key][_this5.props.valueKey].toString() === val)) {\n\t\t\t\t\t\treturn options[key];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn _ref = {}, _defineProperty(_ref, _this5.props.valueKey, val), _defineProperty(_ref, _this5.props.labelKey, val), _ref;\n\t\t\t} else {\n\t\t\t\treturn val;\n\t\t\t}\n\t\t});\n\t},\n\n\tsetValue: function setValue(value, focusAfterUpdate) {\n\t\tif (focusAfterUpdate || focusAfterUpdate === undefined) {\n\t\t\tthis._focusAfterUpdate = true;\n\t\t}\n\t\tvar newState = this.getStateFromValue(value);\n\t\tnewState.isOpen = false;\n\t\tthis.fireChangeEvent(newState);\n\t\tthis.setState(newState);\n\t},\n\n\tselectValue: function selectValue(value) {\n\t\tif (!this.props.multi) {\n\t\t\tthis.setValue(value);\n\t\t} else if (value) {\n\t\t\tthis.addValue(value);\n\t\t}\n\t\tthis._unbindCloseMenuIfClickedOutside();\n\t},\n\n\taddValue: function addValue(value) {\n\t\tthis.setValue(this.state.values.concat(value));\n\t},\n\n\tpopValue: function popValue() {\n\t\tthis.setValue(this.state.values.slice(0, this.state.values.length - 1));\n\t},\n\n\tremoveValue: function removeValue(valueToRemove) {\n\t\tthis.setValue(this.state.values.filter(function (value) {\n\t\t\treturn value !== valueToRemove;\n\t\t}));\n\t},\n\n\tclearValue: function clearValue(event) {\n\t\t// if the event was triggered by a mousedown and not the primary\n\t\t// button, ignore it.\n\t\tif (event && event.type === 'mousedown' && event.button !== 0) {\n\t\t\treturn;\n\t\t}\n\t\tevent.stopPropagation();\n\t\tevent.preventDefault();\n\t\tthis.setValue(null);\n\t},\n\n\tresetValue: function resetValue() {\n\t\tthis.setValue(this.state.value === '' ? null : this.state.value);\n\t},\n\n\tgetInputNode: function getInputNode() {\n\t\tvar input = this.refs.input;\n\t\treturn this.props.searchable ? input : ReactDOM.findDOMNode(input);\n\t},\n\n\tfireChangeEvent: function fireChangeEvent(newState) {\n\t\tif (newState.value !== this.state.value && this.props.onChange) {\n\t\t\tthis.props.onChange(newState.value, newState.values);\n\t\t}\n\t},\n\n\thandleMouseDown: function handleMouseDown(event) {\n\t\t// if the event was triggered by a mousedown and not the primary\n\t\t// button, or if the component is disabled, ignore it.\n\t\tif (this.props.disabled || event.type === 'mousedown' && event.button !== 0) {\n\t\t\treturn;\n\t\t}\n\t\tevent.stopPropagation();\n\t\tevent.preventDefault();\n\n\t\t// for the non-searchable select, close the dropdown when button is clicked\n\t\tif (this.state.isOpen && !this.props.searchable) {\n\t\t\tthis.setState({\n\t\t\t\tisOpen: false\n\t\t\t}, this._unbindCloseMenuIfClickedOutside);\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.state.isFocused) {\n\t\t\tthis.setState({\n\t\t\t\tisOpen: true\n\t\t\t}, this._bindCloseMenuIfClickedOutside);\n\t\t} else {\n\t\t\tthis._openAfterFocus = true;\n\t\t\tthis.getInputNode().focus();\n\t\t}\n\t},\n\n\thandleMouseDownOnMenu: function handleMouseDownOnMenu(event) {\n\t\t// if the event was triggered by a mousedown and not the primary\n\t\t// button, or if the component is disabled, ignore it.\n\t\tif (this.props.disabled || event.type === 'mousedown' && event.button !== 0) {\n\t\t\treturn;\n\t\t}\n\t\tevent.stopPropagation();\n\t\tevent.preventDefault();\n\t},\n\n\thandleMouseDownOnArrow: function handleMouseDownOnArrow(event) {\n\t\t// if the event was triggered by a mousedown and not the primary\n\t\t// button, or if the component is disabled, ignore it.\n\t\tif (this.props.disabled || event.type === 'mousedown' && event.button !== 0) {\n\t\t\treturn;\n\t\t}\n\t\t// If not focused, handleMouseDown will handle it\n\t\tif (!this.state.isOpen) {\n\t\t\treturn;\n\t\t}\n\t\tevent.stopPropagation();\n\t\tevent.preventDefault();\n\t\tthis.setState({\n\t\t\tisOpen: false\n\t\t}, this._unbindCloseMenuIfClickedOutside);\n\t},\n\n\thandleInputFocus: function handleInputFocus(event) {\n\t\tvar _this6 = this;\n\n\t\tvar newIsOpen = this.state.isOpen || this._openAfterFocus;\n\t\tthis.setState({\n\t\t\tisFocused: true,\n\t\t\tisOpen: newIsOpen\n\t\t}, function () {\n\t\t\tif (newIsOpen) {\n\t\t\t\t_this6._bindCloseMenuIfClickedOutside();\n\t\t\t} else {\n\t\t\t\t_this6._unbindCloseMenuIfClickedOutside();\n\t\t\t}\n\t\t});\n\t\tthis._openAfterFocus = false;\n\t\tif (this.props.onFocus) {\n\t\t\tthis.props.onFocus(event);\n\t\t}\n\t},\n\n\thandleInputBlur: function handleInputBlur(event) {\n\t\tvar _this7 = this;\n\n\t\tvar menuDOM = ReactDOM.findDOMNode(this.refs.menu);\n\t\tif (document.activeElement.isEqualNode(menuDOM)) {\n\t\t\treturn;\n\t\t}\n\t\tthis._blurTimeout = setTimeout(function () {\n\t\t\tif (_this7._focusAfterUpdate || !_this7.isMounted()) return;\n\t\t\t_this7.setState({\n\t\t\t\tinputValue: '',\n\t\t\t\tisFocused: false,\n\t\t\t\tisOpen: false\n\t\t\t});\n\t\t}, 50);\n\t\tif (this.props.onBlur) {\n\t\t\tthis.props.onBlur(event);\n\t\t}\n\t},\n\n\thandleKeyDown: function handleKeyDown(event) {\n\t\tif (this.props.disabled) return;\n\t\tswitch (event.keyCode) {\n\t\t\tcase 8:\n\t\t\t\t// backspace\n\t\t\t\tif (!this.state.inputValue && this.props.backspaceRemoves) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tthis.popValue();\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\tcase 9:\n\t\t\t\t// tab\n\t\t\t\tif (event.shiftKey || !this.state.isOpen || !this.state.focusedOption) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.selectFocusedOption();\n\t\t\t\tbreak;\n\t\t\tcase 13:\n\t\t\t\t// enter\n\t\t\t\tif (!this.state.isOpen) return;\n\t\t\t\tthis.selectFocusedOption();\n\t\t\t\tbreak;\n\t\t\tcase 27:\n\t\t\t\t// escape\n\t\t\t\tif (this.state.isOpen) {\n\t\t\t\t\tthis.resetValue();\n\t\t\t\t} else if (this.props.clearable) {\n\t\t\t\t\tthis.clearValue(event);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 38:\n\t\t\t\t// up\n\t\t\t\tthis.focusPreviousOption();\n\t\t\t\tbreak;\n\t\t\tcase 40:\n\t\t\t\t// down\n\t\t\t\tthis.focusNextOption();\n\t\t\t\tbreak;\n\t\t\tcase 188:\n\t\t\t\t// ,\n\t\t\t\tif (this.props.allowCreate && this.props.multi) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\tthis.selectFocusedOption();\n\t\t\t\t} else {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\treturn;\n\t\t}\n\t\tevent.preventDefault();\n\t},\n\n\t// Ensures that the currently focused option is available in filteredOptions.\n\t// If not, returns the first available option.\n\t_getNewFocusedOption: function _getNewFocusedOption(filteredOptions) {\n\t\tfor (var key in filteredOptions) {\n\t\t\tif (filteredOptions.hasOwnProperty(key) && filteredOptions[key] === this.state.focusedOption) {\n\t\t\t\treturn filteredOptions[key];\n\t\t\t}\n\t\t}\n\t\treturn this.getFirstFocusableOption(filteredOptions);\n\t},\n\n\thandleInputChange: function handleInputChange(event) {\n\t\t// assign an internal variable because we need to use\n\t\t// the latest value before setState() has completed.\n\t\tthis._optionsFilterString = event.target.value;\n\t\tif (this.props.onInputChange) {\n\t\t\tthis.props.onInputChange(event.target.value);\n\t\t}\n\t\tif (this.props.asyncOptions) {\n\t\t\tthis.setState({\n\t\t\t\tisLoading: true,\n\t\t\t\tinputValue: event.target.value\n\t\t\t});\n\t\t\tthis.loadAsyncOptions(event.target.value, {\n\t\t\t\tisLoading: false,\n\t\t\t\tisOpen: true\n\t\t\t}, this._bindCloseMenuIfClickedOutside);\n\t\t} else {\n\t\t\tvar filteredOptions = this.filterOptions(this.state.options);\n\t\t\tthis.setState({\n\t\t\t\tisOpen: true,\n\t\t\t\tinputValue: event.target.value,\n\t\t\t\tfilteredOptions: filteredOptions,\n\t\t\t\tfocusedOption: this._getNewFocusedOption(filteredOptions)\n\t\t\t}, this._bindCloseMenuIfClickedOutside);\n\t\t}\n\t},\n\n\tautoloadAsyncOptions: function autoloadAsyncOptions() {\n\t\tvar _this8 = this;\n\n\t\tthis.setState({\n\t\t\tisLoading: true\n\t\t});\n\t\tthis.loadAsyncOptions('', { isLoading: false }, function () {\n\t\t\t// update with new options but don't focus\n\t\t\t_this8.setValue(_this8.props.value, false);\n\t\t});\n\t},\n\n\tloadAsyncOptions: function loadAsyncOptions(input, state, callback) {\n\t\tif (input === undefined) input = '';\n\n\t\tvar _this9 = this;\n\n\t\tvar thisRequestId = this._currentRequestId = requestId++;\n\t\tif (this.props.cacheAsyncResults) {\n\t\t\tfor (var i = 0; i <= input.length; i++) {\n\t\t\t\tvar cacheKey = input.slice(0, i);\n\t\t\t\tif (this._optionsCache[cacheKey] && (input === cacheKey || this._optionsCache[cacheKey].complete)) {\n\t\t\t\t\tvar options = this._optionsCache[cacheKey].options;\n\t\t\t\t\tvar filteredOptions = this.filterOptions(options);\n\t\t\t\t\tvar newState = {\n\t\t\t\t\t\toptions: options,\n\t\t\t\t\t\tfilteredOptions: filteredOptions,\n\t\t\t\t\t\tfocusedOption: this._getNewFocusedOption(filteredOptions)\n\t\t\t\t\t};\n\t\t\t\t\tfor (var key in state) {\n\t\t\t\t\t\tif (state.hasOwnProperty(key)) {\n\t\t\t\t\t\t\tnewState[key] = state[key];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthis.setState(newState);\n\t\t\t\t\tif (callback) callback.call(this, newState);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tvar optionsResponseHandler = function optionsResponseHandler(err, data) {\n\t\t\tif (err) throw err;\n\t\t\tif (_this9.props.cacheAsyncResults) {\n\t\t\t\t_this9._optionsCache[input] = data;\n\t\t\t}\n\t\t\tif (thisRequestId !== _this9._currentRequestId) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar filteredOptions = _this9.filterOptions(data.options);\n\t\t\tvar newState = {\n\t\t\t\toptions: data.options,\n\t\t\t\tfilteredOptions: filteredOptions,\n\t\t\t\tfocusedOption: _this9._getNewFocusedOption(filteredOptions)\n\t\t\t};\n\t\t\tfor (var key in state) {\n\t\t\t\tif (state.hasOwnProperty(key)) {\n\t\t\t\t\tnewState[key] = state[key];\n\t\t\t\t}\n\t\t\t}\n\t\t\t_this9.setState(newState);\n\t\t\tif (callback) callback.call(_this9, newState);\n\t\t};\n\n\t\tvar asyncOpts = this.props.asyncOptions(input, optionsResponseHandler);\n\n\t\tif (asyncOpts && typeof asyncOpts.then === 'function') {\n\t\t\tasyncOpts.then(function (data) {\n\t\t\t\toptionsResponseHandler(null, data);\n\t\t\t}, function (err) {\n\t\t\t\toptionsResponseHandler(err);\n\t\t\t});\n\t\t}\n\t},\n\n\tfilterOptions: function filterOptions(options, values) {\n\t\tvar _this10 = this;\n\n\t\tvar filterValue = this._optionsFilterString;\n\t\tvar exclude = (values || this.state.values).map(function (i) {\n\t\t\treturn i[_this10.props.valueKey];\n\t\t});\n\t\tif (this.props.filterOptions) {\n\t\t\treturn this.props.filterOptions.call(this, options, filterValue, exclude);\n\t\t} else {\n\t\t\tvar filterOption = function filterOption(op) {\n\t\t\t\tif (this.props.multi && exclude.indexOf(op[this.props.valueKey]) > -1) return false;\n\t\t\t\tif (this.props.filterOption) return this.props.filterOption.call(this, op, filterValue);\n\t\t\t\tvar valueTest = String(op[this.props.valueKey]);\n\t\t\t\tvar labelTest = String(op[this.props.labelKey]);\n\t\t\t\tif (this.props.ignoreCase) {\n\t\t\t\t\tvalueTest = valueTest.toLowerCase();\n\t\t\t\t\tlabelTest = labelTest.toLowerCase();\n\t\t\t\t\tfilterValue = filterValue.toLowerCase();\n\t\t\t\t}\n\t\t\t\treturn !filterValue || this.props.matchPos === 'start' ? this.props.matchProp !== 'label' && valueTest.substr(0, filterValue.length) === filterValue || this.props.matchProp !== 'value' && labelTest.substr(0, filterValue.length) === filterValue : this.props.matchProp !== 'label' && valueTest.indexOf(filterValue) >= 0 || this.props.matchProp !== 'value' && labelTest.indexOf(filterValue) >= 0;\n\t\t\t};\n\t\t\treturn (options || []).filter(filterOption, this);\n\t\t}\n\t},\n\n\tselectFocusedOption: function selectFocusedOption() {\n\t\tif (this.props.allowCreate && !this.state.focusedOption) {\n\t\t\treturn this.selectValue(this.state.inputValue);\n\t\t}\n\n\t\tif (this.state.focusedOption) {\n\t\t\treturn this.selectValue(this.state.focusedOption);\n\t\t}\n\t},\n\n\tfocusOption: function focusOption(op) {\n\t\tthis.setState({\n\t\t\tfocusedOption: op\n\t\t});\n\t},\n\n\tfocusNextOption: function focusNextOption() {\n\t\tthis.focusAdjacentOption('next');\n\t},\n\n\tfocusPreviousOption: function focusPreviousOption() {\n\t\tthis.focusAdjacentOption('previous');\n\t},\n\n\tfocusAdjacentOption: function focusAdjacentOption(dir) {\n\t\tthis._focusedOptionReveal = true;\n\t\tvar ops = this.state.filteredOptions.filter(function (op) {\n\t\t\treturn !op.disabled;\n\t\t});\n\t\tif (!this.state.isOpen) {\n\t\t\tthis.setState({\n\t\t\t\tisOpen: true,\n\t\t\t\tinputValue: '',\n\t\t\t\tfocusedOption: this.state.focusedOption || ops[dir === 'next' ? 0 : ops.length - 1]\n\t\t\t}, this._bindCloseMenuIfClickedOutside);\n\t\t\treturn;\n\t\t}\n\t\tif (!ops.length) {\n\t\t\treturn;\n\t\t}\n\t\tvar focusedIndex = -1;\n\t\tfor (var i = 0; i < ops.length; i++) {\n\t\t\tif (this.state.focusedOption === ops[i]) {\n\t\t\t\tfocusedIndex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tvar focusedOption = ops[0];\n\t\tif (dir === 'next' && focusedIndex > -1 && focusedIndex < ops.length - 1) {\n\t\t\tfocusedOption = ops[focusedIndex + 1];\n\t\t} else if (dir === 'previous') {\n\t\t\tif (focusedIndex > 0) {\n\t\t\t\tfocusedOption = ops[focusedIndex - 1];\n\t\t\t} else {\n\t\t\t\tfocusedOption = ops[ops.length - 1];\n\t\t\t}\n\t\t}\n\t\tthis.setState({\n\t\t\tfocusedOption: focusedOption\n\t\t});\n\t},\n\n\tunfocusOption: function unfocusOption(op) {\n\t\tif (this.state.focusedOption === op) {\n\t\t\tthis.setState({\n\t\t\t\tfocusedOption: null\n\t\t\t});\n\t\t}\n\t},\n\n\trenderOptionLabel: function renderOptionLabel(op) {\n\t\treturn op[this.props.labelKey];\n\t},\n\n\tbuildMenu: function buildMenu() {\n\t\tvar focusedValue = this.state.focusedOption ? this.state.focusedOption[this.props.valueKey] : null;\n\t\tvar renderLabel = this.props.optionRenderer || this.renderOptionLabel;\n\t\tif (this.state.filteredOptions.length > 0) {\n\t\t\tfocusedValue = focusedValue == null ? this.state.filteredOptions[0] : focusedValue;\n\t\t}\n\t\t// Add the current value to the filtered options in last resort\n\t\tvar options = this.state.filteredOptions;\n\t\tif (this.props.allowCreate && this.state.inputValue.trim()) {\n\t\t\tvar inputValue = this.state.inputValue;\n\t\t\toptions = options.slice();\n\t\t\tvar newOption = this.props.newOptionCreator ? this.props.newOptionCreator(inputValue) : {\n\t\t\t\tvalue: inputValue,\n\t\t\t\tlabel: inputValue,\n\t\t\t\tcreate: true\n\t\t\t};\n\t\t\toptions.unshift(newOption);\n\t\t}\n\t\tvar ops = Object.keys(options).map(function (key) {\n\t\t\tvar op = options[key];\n\t\t\tvar isSelected = this.state.value === op[this.props.valueKey];\n\t\t\tvar isFocused = focusedValue === op[this.props.valueKey];\n\t\t\tvar optionClass = classes({\n\t\t\t\t'Select-option': true,\n\t\t\t\t'is-selected': isSelected,\n\t\t\t\t'is-focused': isFocused,\n\t\t\t\t'is-disabled': op.disabled\n\t\t\t});\n\t\t\tvar ref = isFocused ? 'focused' : null;\n\t\t\tvar optionResult = React.createElement(this.props.optionComponent, {\n\t\t\t\tkey: 'option-' + op[this.props.valueKey],\n\t\t\t\tclassName: optionClass,\n\t\t\t\trenderFunc: renderLabel,\n\t\t\t\tmouseDown: this.selectValue,\n\t\t\t\tmouseEnter: this.focusOption,\n\t\t\t\tmouseLeave: this.unfocusOption,\n\t\t\t\taddLabelText: this.props.addLabelText,\n\t\t\t\toption: op,\n\t\t\t\tref: ref\n\t\t\t});\n\t\t\treturn optionResult;\n\t\t}, this);\n\n\t\tif (ops.length) {\n\t\t\treturn ops;\n\t\t} else {\n\t\t\tvar noResultsText, promptClass;\n\t\t\tif (this.isLoading()) {\n\t\t\t\tpromptClass = 'Select-searching';\n\t\t\t\tnoResultsText = this.props.searchingText;\n\t\t\t} else if (this.state.inputValue || !this.props.asyncOptions) {\n\t\t\t\tpromptClass = 'Select-noresults';\n\t\t\t\tnoResultsText = this.props.noResultsText;\n\t\t\t} else {\n\t\t\t\tpromptClass = 'Select-search-prompt';\n\t\t\t\tnoResultsText = this.props.searchPromptText;\n\t\t\t}\n\n\t\t\treturn React.createElement(\n\t\t\t\t'div',\n\t\t\t\t{ className: promptClass },\n\t\t\t\tnoResultsText\n\t\t\t);\n\t\t}\n\t},\n\n\thandleOptionLabelClick: function handleOptionLabelClick(value, event) {\n\t\tif (this.props.onOptionLabelClick) {\n\t\t\tthis.props.onOptionLabelClick(value, event);\n\t\t}\n\t},\n\n\tisLoading: function isLoading() {\n\t\treturn this.props.isLoading || this.state.isLoading;\n\t},\n\n\trender: function render() {\n\t\tvar selectClass = classes('Select', this.props.className, {\n\t\t\t'Select--multi': this.props.multi,\n\t\t\t'is-searchable': this.props.searchable,\n\t\t\t'is-open': this.state.isOpen,\n\t\t\t'is-focused': this.state.isFocused,\n\t\t\t'is-loading': this.isLoading(),\n\t\t\t'is-disabled': this.props.disabled,\n\t\t\t'has-value': this.state.value\n\t\t});\n\t\tvar value = [];\n\t\tif (this.props.multi) {\n\t\t\tthis.state.values.forEach(function (val) {\n\t\t\t\tvar renderLabel = this.props.valueRenderer || this.renderOptionLabel;\n\t\t\t\tvar onOptionLabelClick = this.handleOptionLabelClick.bind(this, val);\n\t\t\t\tvar onRemove = this.removeValue.bind(this, val);\n\t\t\t\tvar valueComponent = React.createElement(this.props.valueComponent, {\n\t\t\t\t\tkey: val[this.props.valueKey],\n\t\t\t\t\toption: val,\n\t\t\t\t\trenderer: renderLabel,\n\t\t\t\t\toptionLabelClick: !!this.props.onOptionLabelClick,\n\t\t\t\t\tonOptionLabelClick: onOptionLabelClick,\n\t\t\t\t\tonRemove: onRemove,\n\t\t\t\t\tdisabled: this.props.disabled\n\t\t\t\t});\n\t\t\t\tvalue.push(valueComponent);\n\t\t\t}, this);\n\t\t}\n\n\t\tif (!this.state.inputValue && (!this.props.multi || !value.length)) {\n\t\t\tvar val = this.state.values[0] || null;\n\t\t\tif (this.props.valueRenderer && !!this.state.values.length) {\n\t\t\t\tvalue.push(React.createElement(Value, {\n\t\t\t\t\tkey: 0,\n\t\t\t\t\toption: val,\n\t\t\t\t\trenderer: this.props.valueRenderer,\n\t\t\t\t\tdisabled: this.props.disabled }));\n\t\t\t} else {\n\t\t\t\tvar singleValueComponent = React.createElement(this.props.singleValueComponent, {\n\t\t\t\t\tkey: 'placeholder',\n\t\t\t\t\tvalue: val,\n\t\t\t\t\tplaceholder: this.state.placeholder\n\t\t\t\t});\n\t\t\t\tvalue.push(singleValueComponent);\n\t\t\t}\n\t\t}\n\n\t\t// loading spinner\n\t\tvar loading = this.isLoading() ? React.createElement(\n\t\t\t'span',\n\t\t\t{ className: 'Select-loading-zone', 'aria-hidden': 'true' },\n\t\t\tReact.createElement('span', { className: 'Select-loading' })\n\t\t) : null;\n\n\t\t// clear \"x\" button\n\t\tvar clear = this.props.clearable && this.state.value && !this.props.disabled && !this.isLoading() ? React.createElement(\n\t\t\t'span',\n\t\t\t{ className: 'Select-clear-zone', title: this.props.multi ? this.props.clearAllText : this.props.clearValueText, 'aria-label': this.props.multi ? this.props.clearAllText : this.props.clearValueText, onMouseDown: this.clearValue, onTouchEnd: this.clearValue, onClick: this.clearValue },\n\t\t\tReact.createElement('span', { className: 'Select-clear', dangerouslySetInnerHTML: { __html: '×' } })\n\t\t) : null;\n\n\t\t// indicator arrow\n\t\tvar arrow = React.createElement(\n\t\t\t'span',\n\t\t\t{ className: 'Select-arrow-zone', onMouseDown: this.handleMouseDownOnArrow },\n\t\t\tReact.createElement('span', { className: 'Select-arrow', onMouseDown: this.handleMouseDownOnArrow })\n\t\t);\n\n\t\tvar menu;\n\t\tvar menuProps;\n\t\tif (this.state.isOpen) {\n\t\t\tmenuProps = {\n\t\t\t\tref: 'menu',\n\t\t\t\tclassName: 'Select-menu',\n\t\t\t\tonMouseDown: this.handleMouseDownOnMenu\n\t\t\t};\n\t\t\tmenu = React.createElement(\n\t\t\t\t'div',\n\t\t\t\t{ ref: 'selectMenuContainer', className: 'Select-menu-outer' },\n\t\t\t\tReact.createElement(\n\t\t\t\t\t'div',\n\t\t\t\t\tmenuProps,\n\t\t\t\t\tthis.buildMenu()\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\n\t\tvar input;\n\t\tvar inputProps = {\n\t\t\tref: 'input',\n\t\t\tclassName: 'Select-input ' + (this.props.inputProps.className || ''),\n\t\t\ttabIndex: this.props.tabIndex || 0,\n\t\t\tonFocus: this.handleInputFocus,\n\t\t\tonBlur: this.handleInputBlur\n\t\t};\n\t\tfor (var key in this.props.inputProps) {\n\t\t\tif (this.props.inputProps.hasOwnProperty(key) && key !== 'className') {\n\t\t\t\tinputProps[key] = this.props.inputProps[key];\n\t\t\t}\n\t\t}\n\n\t\tif (!this.props.disabled) {\n\t\t\tif (this.props.searchable) {\n\t\t\t\tinput = React.createElement(Input, _extends({ value: this.state.inputValue, onChange: this.handleInputChange, minWidth: '5' }, inputProps));\n\t\t\t} else {\n\t\t\t\tinput = React.createElement(\n\t\t\t\t\t'div',\n\t\t\t\t\tinputProps,\n\t\t\t\t\t' '\n\t\t\t\t);\n\t\t\t}\n\t\t} else if (!this.props.multi || !this.state.values.length) {\n\t\t\tinput = React.createElement(\n\t\t\t\t'div',\n\t\t\t\t{ className: 'Select-input' },\n\t\t\t\t' '\n\t\t\t);\n\t\t}\n\n\t\treturn React.createElement(\n\t\t\t'div',\n\t\t\t{ ref: 'wrapper', className: selectClass },\n\t\t\tReact.createElement('input', { type: 'hidden', ref: 'value', name: this.props.name, value: this.state.value, disabled: this.props.disabled }),\n\t\t\tReact.createElement(\n\t\t\t\t'div',\n\t\t\t\t{ className: 'Select-control', ref: 'control', onKeyDown: this.handleKeyDown, onMouseDown: this.handleMouseDown, onTouchEnd: this.handleMouseDown },\n\t\t\t\tvalue,\n\t\t\t\tinput,\n\t\t\t\tloading,\n\t\t\t\tclear,\n\t\t\t\tarrow\n\t\t\t),\n\t\t\tmenu\n\t\t);\n\t}\n});\n\nmodule.exports = Select;","'use strict';\n\nvar React = require('react');\nvar classes = require('classnames');\n\nvar SingleValue = React.createClass({\n\tdisplayName: 'SingleValue',\n\n\tpropTypes: {\n\t\tplaceholder: React.PropTypes.string, // this is default value provided by React-Select based component\n\t\tvalue: React.PropTypes.object // selected option\n\t},\n\trender: function render() {\n\t\tvar classNames = classes('Select-placeholder', this.props.value && this.props.value.className);\n\t\treturn React.createElement(\n\t\t\t'div',\n\t\t\t{\n\t\t\t\tclassName: classNames,\n\t\t\t\tstyle: this.props.value && this.props.value.style,\n\t\t\t\ttitle: this.props.value && this.props.value.title\n\t\t\t},\n\t\t\tthis.props.placeholder\n\t\t);\n\t}\n});\n\nmodule.exports = SingleValue;","'use strict';\n\nvar React = require('react');\nvar classes = require('classnames');\n\nvar Value = React.createClass({\n\n\tdisplayName: 'Value',\n\n\tpropTypes: {\n\t\tdisabled: React.PropTypes.bool, // disabled prop passed to ReactSelect\n\t\tonOptionLabelClick: React.PropTypes.func, // method to handle click on value label\n\t\tonRemove: React.PropTypes.func, // method to handle remove of that value\n\t\toption: React.PropTypes.object.isRequired, // option passed to component\n\t\toptionLabelClick: React.PropTypes.bool, // indicates if onOptionLabelClick should be handled\n\t\trenderer: React.PropTypes.func // method to render option label passed to ReactSelect\n\t},\n\n\tblockEvent: function blockEvent(event) {\n\t\tevent.stopPropagation();\n\t},\n\n\thandleOnRemove: function handleOnRemove(event) {\n\t\tif (!this.props.disabled) {\n\t\t\tthis.props.onRemove(event);\n\t\t}\n\t},\n\n\trender: function render() {\n\t\tvar label = this.props.option.label;\n\t\tif (this.props.renderer) {\n\t\t\tlabel = this.props.renderer(this.props.option);\n\t\t}\n\n\t\tif (!this.props.onRemove && !this.props.optionLabelClick) {\n\t\t\treturn React.createElement(\n\t\t\t\t'div',\n\t\t\t\t{\n\t\t\t\t\tclassName: classes('Select-value', this.props.option.className),\n\t\t\t\t\tstyle: this.props.option.style,\n\t\t\t\t\ttitle: this.props.option.title\n\t\t\t\t},\n\t\t\t\tlabel\n\t\t\t);\n\t\t}\n\n\t\tif (this.props.optionLabelClick) {\n\t\t\tlabel = React.createElement(\n\t\t\t\t'a',\n\t\t\t\t{ className: classes('Select-item-label__a', this.props.option.className),\n\t\t\t\t\tonMouseDown: this.blockEvent,\n\t\t\t\t\tonTouchEnd: this.props.onOptionLabelClick,\n\t\t\t\t\tonClick: this.props.onOptionLabelClick,\n\t\t\t\t\tstyle: this.props.option.style,\n\t\t\t\t\ttitle: this.props.option.title },\n\t\t\t\tlabel\n\t\t\t);\n\t\t}\n\n\t\treturn React.createElement(\n\t\t\t'div',\n\t\t\t{ className: classes('Select-item', this.props.option.className),\n\t\t\t\tstyle: this.props.option.style,\n\t\t\t\ttitle: this.props.option.title },\n\t\t\tReact.createElement(\n\t\t\t\t'span',\n\t\t\t\t{ className: 'Select-item-icon',\n\t\t\t\t\tonMouseDown: this.blockEvent,\n\t\t\t\t\tonClick: this.handleOnRemove,\n\t\t\t\t\tonTouchEnd: this.handleOnRemove },\n\t\t\t\t'×'\n\t\t\t),\n\t\t\tReact.createElement(\n\t\t\t\t'span',\n\t\t\t\t{ className: 'Select-item-label' },\n\t\t\t\tlabel\n\t\t\t)\n\t\t);\n\t}\n\n});\n\nmodule.exports = Value;","/*!\n  Copyright (c) 2016 Jed Watson.\n  Licensed under the MIT License (MIT), see\n  http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tclasses.push(classNames.apply(null, arg));\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","'use strict';\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar React = require('react');\n\nvar sizerStyle = { position: 'absolute', visibility: 'hidden', height: 0, width: 0, overflow: 'scroll', whiteSpace: 'nowrap' };\n\nvar nextFrame = typeof window !== 'undefined' ? (function () {\n\treturn window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || function (callback) {\n\t\twindow.setTimeout(callback, 1000 / 60);\n\t};\n})().bind(window) : undefined; // If window is undefined, then we can't define a nextFrame function\n\nvar AutosizeInput = React.createClass({\n\tdisplayName: 'AutosizeInput',\n\n\tpropTypes: {\n\t\tvalue: React.PropTypes.any, // field value\n\t\tdefaultValue: React.PropTypes.any, // default field value\n\t\tonChange: React.PropTypes.func, // onChange handler: function(newValue) {}\n\t\tstyle: React.PropTypes.object, // css styles for the outer element\n\t\tclassName: React.PropTypes.string, // className for the outer element\n\t\tminWidth: React.PropTypes.oneOfType([// minimum width for input element\n\t\tReact.PropTypes.number, React.PropTypes.string]),\n\t\tinputStyle: React.PropTypes.object, // css styles for the input element\n\t\tinputClassName: React.PropTypes.string // className for the input element\n\t},\n\tgetDefaultProps: function getDefaultProps() {\n\t\treturn {\n\t\t\tminWidth: 1\n\t\t};\n\t},\n\tgetInitialState: function getInitialState() {\n\t\treturn {\n\t\t\tinputWidth: this.props.minWidth\n\t\t};\n\t},\n\tcomponentDidMount: function componentDidMount() {\n\t\tthis.copyInputStyles();\n\t\tthis.updateInputWidth();\n\t},\n\tcomponentDidUpdate: function componentDidUpdate() {\n\t\tthis.queueUpdateInputWidth();\n\t},\n\tcopyInputStyles: function copyInputStyles() {\n\t\tif (!this.isMounted() || !window.getComputedStyle) {\n\t\t\treturn;\n\t\t}\n\t\tvar inputStyle = window.getComputedStyle(this.refs.input);\n\t\tvar widthNode = this.refs.sizer;\n\t\twidthNode.style.fontSize = inputStyle.fontSize;\n\t\twidthNode.style.fontFamily = inputStyle.fontFamily;\n\t\twidthNode.style.fontWeight = inputStyle.fontWeight;\n\t\twidthNode.style.fontStyle = inputStyle.fontStyle;\n\t\twidthNode.style.letterSpacing = inputStyle.letterSpacing;\n\t\tif (this.props.placeholder) {\n\t\t\tvar placeholderNode = this.refs.placeholderSizer;\n\t\t\tplaceholderNode.style.fontSize = inputStyle.fontSize;\n\t\t\tplaceholderNode.style.fontFamily = inputStyle.fontFamily;\n\t\t\tplaceholderNode.style.fontWeight = inputStyle.fontWeight;\n\t\t\tplaceholderNode.style.fontStyle = inputStyle.fontStyle;\n\t\t\tplaceholderNode.style.letterSpacing = inputStyle.letterSpacing;\n\t\t}\n\t},\n\tqueueUpdateInputWidth: function queueUpdateInputWidth() {\n\t\tnextFrame(this.updateInputWidth);\n\t},\n\tupdateInputWidth: function updateInputWidth() {\n\t\tif (!this.isMounted() || typeof this.refs.sizer.scrollWidth === 'undefined') {\n\t\t\treturn;\n\t\t}\n\t\tvar newInputWidth = undefined;\n\t\tif (this.props.placeholder) {\n\t\t\tnewInputWidth = Math.max(this.refs.sizer.scrollWidth, this.refs.placeholderSizer.scrollWidth) + 2;\n\t\t} else {\n\t\t\tnewInputWidth = this.refs.sizer.scrollWidth + 2;\n\t\t}\n\t\tif (newInputWidth < this.props.minWidth) {\n\t\t\tnewInputWidth = this.props.minWidth;\n\t\t}\n\t\tif (newInputWidth !== this.state.inputWidth) {\n\t\t\tthis.setState({\n\t\t\t\tinputWidth: newInputWidth\n\t\t\t});\n\t\t}\n\t},\n\tgetInput: function getInput() {\n\t\treturn this.refs.input;\n\t},\n\tfocus: function focus() {\n\t\tthis.refs.input.focus();\n\t},\n\tblur: function blur() {\n\t\tthis.refs.input.blur();\n\t},\n\tselect: function select() {\n\t\tthis.refs.input.select();\n\t},\n\trender: function render() {\n\t\tvar escapedValue = (this.props.defaultValue || this.props.value || '').replace(/\\&/g, '&').replace(/ /g, ' ').replace(/\\/g, '>');\n\t\tvar wrapperStyle = this.props.style || {};\n\t\tif (!wrapperStyle.display) wrapperStyle.display = 'inline-block';\n\t\tvar inputStyle = _extends({}, this.props.inputStyle);\n\t\tinputStyle.width = this.state.inputWidth;\n\t\tinputStyle.boxSizing = 'content-box';\n\t\tvar placeholder = this.props.placeholder ? React.createElement(\n\t\t\t'div',\n\t\t\t{ ref: 'placeholderSizer', style: sizerStyle },\n\t\t\tthis.props.placeholder\n\t\t) : null;\n\t\treturn React.createElement(\n\t\t\t'div',\n\t\t\t{ className: this.props.className, style: wrapperStyle },\n\t\t\tReact.createElement('input', _extends({}, this.props, { ref: 'input', className: this.props.inputClassName, style: inputStyle })),\n\t\t\tReact.createElement('div', { ref: 'sizer', style: sizerStyle, dangerouslySetInnerHTML: { __html: escapedValue } }),\n\t\t\tplaceholder\n\t\t);\n\t}\n});\n\nmodule.exports = AutosizeInput;","'use strict';\n\nexports.__esModule = true;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Table = (function (_React$Component) {\n  _inherits(Table, _React$Component);\n\n  function Table() {\n    _classCallCheck(this, Table);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  Table.prototype.render = function render() {\n    var className = 'cf-table';\n\n    if (this.props.striped) className += ' cf-table--striped';\n    if (this.props.hover) className += ' cf-table--hover';\n    if (this.props.bordered) className += ' cf-table--bordered';\n    if (this.props.condensed) className += ' cf-table--condensed';\n\n    return _react2.default.createElement(\n      'table',\n      { className: className },\n      this.props.children\n    );\n  };\n\n  return Table;\n})(_react2.default.Component);\n\nTable.propTypes = {\n  striped: _react.PropTypes.bool,\n  hover: _react.PropTypes.bool,\n  bordered: _react.PropTypes.bool,\n  condensed: _react.PropTypes.bool\n};\nTable.defaultProps = {\n  striped: false,\n  hover: false,\n  bordered: true,\n  condensed: false\n};\nexports.default = Table;","\"use strict\";\n\nexports.__esModule = true;\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar TableBody = (function (_React$Component) {\n  _inherits(TableBody, _React$Component);\n\n  function TableBody() {\n    _classCallCheck(this, TableBody);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  TableBody.prototype.render = function render() {\n    return _react2.default.createElement(\n      \"tbody\",\n      { className: \"cf-table__body\" },\n      this.props.children\n    );\n  };\n\n  return TableBody;\n})(_react2.default.Component);\n\nexports.default = TableBody;","'use strict';\n\nexports.__esModule = true;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar TableCell = (function (_React$Component) {\n  _inherits(TableCell, _React$Component);\n\n  function TableCell() {\n    _classCallCheck(this, TableCell);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  TableCell.prototype.render = function render() {\n    var className = 'cf-table__cell';\n\n    if (this.props.sortable) className += ' cf-table__cell--sortable';\n\n    return _react2.default.createElement(\n      'td',\n      { className: className },\n      this.props.children\n    );\n  };\n\n  return TableCell;\n})(_react2.default.Component);\n\nTableCell.propTypes = {\n  sortable: _react.PropTypes.bool,\n  editable: _react.PropTypes.bool\n};\nexports.default = TableCell;","\"use strict\";\n\nexports.__esModule = true;\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar TableFoot = (function (_React$Component) {\n  _inherits(TableFoot, _React$Component);\n\n  function TableFoot() {\n    _classCallCheck(this, TableFoot);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  TableFoot.prototype.render = function render() {\n    return _react2.default.createElement(\n      \"tfoot\",\n      { className: \"cf-table__foot\" },\n      this.props.children\n    );\n  };\n\n  return TableFoot;\n})(_react2.default.Component);\n\nexports.default = TableFoot;","\"use strict\";\n\nexports.__esModule = true;\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar TableHead = (function (_React$Component) {\n  _inherits(TableHead, _React$Component);\n\n  function TableHead() {\n    _classCallCheck(this, TableHead);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  TableHead.prototype.render = function render() {\n    return _react2.default.createElement(\n      \"thead\",\n      { className: \"cf-table__head\" },\n      this.props.children\n    );\n  };\n\n  return TableHead;\n})(_react2.default.Component);\n\nexports.default = TableHead;","'use strict';\n\nexports.__esModule = true;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar TableCell = (function (_React$Component) {\n  _inherits(TableCell, _React$Component);\n\n  function TableCell() {\n    _classCallCheck(this, TableCell);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  TableCell.prototype.render = function render() {\n    var className = 'cf-table__cell cf-table__cell--head';\n\n    if (this.props.sortable) className += ' cf-table__cell--sortable';\n\n    return _react2.default.createElement(\n      'th',\n      { className: className },\n      this.props.children\n    );\n  };\n\n  return TableCell;\n})(_react2.default.Component);\n\nTableCell.propTypes = {\n  sortable: _react.PropTypes.bool,\n  editable: _react.PropTypes.bool\n};\nexports.default = TableCell;","'use strict';\n\nexports.__esModule = true;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Table = (function (_React$Component) {\n  _inherits(Table, _React$Component);\n\n  function Table() {\n    _classCallCheck(this, Table);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  Table.prototype.render = function render() {\n    var className = 'cf-table__row cf-table__row--' + this.props.type;\n\n    if (this.props.accent) {\n      className += ' cf-table__row--accent-' + this.props.accent;\n    }\n\n    return _react2.default.createElement(\n      'tr',\n      { className: className },\n      this.props.children\n    );\n  };\n\n  return Table;\n})(_react2.default.Component);\n\nTable.propTypes = {\n  type: _react.PropTypes.oneOf(['default', 'info', 'success', 'warning', 'error']),\n  accent: _react.PropTypes.oneOf([false, 'gray', 'orange', 'pink', 'red', 'green', 'purple'])\n};\nTable.defaultProps = {\n  type: 'default',\n  accent: false\n};\nexports.default = Table;","'use strict';\n\nexports.__esModule = true;\nexports.TableRow = exports.TableHeadCell = exports.TableHead = exports.TableFoot = exports.TableCell = exports.TableBody = exports.Table = undefined;\n\nvar _Table2 = require('./Table');\n\nvar _Table3 = _interopRequireDefault(_Table2);\n\nvar _TableBody2 = require('./TableBody');\n\nvar _TableBody3 = _interopRequireDefault(_TableBody2);\n\nvar _TableCell2 = require('./TableCell');\n\nvar _TableCell3 = _interopRequireDefault(_TableCell2);\n\nvar _TableFoot2 = require('./TableFoot');\n\nvar _TableFoot3 = _interopRequireDefault(_TableFoot2);\n\nvar _TableHead2 = require('./TableHead');\n\nvar _TableHead3 = _interopRequireDefault(_TableHead2);\n\nvar _TableHeadCell2 = require('./TableHeadCell');\n\nvar _TableHeadCell3 = _interopRequireDefault(_TableHeadCell2);\n\nvar _TableRow2 = require('./TableRow');\n\nvar _TableRow3 = _interopRequireDefault(_TableRow2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.Table = _Table3.default;\nexports.TableBody = _TableBody3.default;\nexports.TableCell = _TableCell3.default;\nexports.TableFoot = _TableFoot3.default;\nexports.TableHead = _TableHead3.default;\nexports.TableHeadCell = _TableHeadCell3.default;\nexports.TableRow = _TableRow3.default;","'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar React = require('react');\nvar PropTypes = React.PropTypes;\n\nvar Viewport = require('cf-component-viewport');\nvar Select = require('cf-component-select');\n\nvar Tabs = function (_React$Component) {\n  _inherits(Tabs, _React$Component);\n\n  function Tabs() {\n    _classCallCheck(this, Tabs);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  Tabs.prototype.getChildContext = function getChildContext() {\n    return {\n      activeTab: this.props.activeTab\n    };\n  };\n\n  Tabs.prototype.handleChange = function handleChange(id) {\n    if (id !== this.props.active) {\n      this.props.onChange(id);\n    }\n  };\n\n  Tabs.prototype.handleKeyDown = function handleKeyDown(id, event) {\n    if (event.which === 13) {\n      this.handleChange(id);\n    }\n  };\n\n  Tabs.prototype.render = function render() {\n    var _this2 = this;\n\n    return React.createElement(\n      'section',\n      { className: 'cf-tabs' },\n      React.createElement(\n        Viewport,\n        { size: 'mobile' },\n        React.createElement(Select, {\n          onChange: this.handleChange,\n          value: this.props.activeTab,\n          options: this.props.tabs.map(function (tab) {\n            return {\n              value: tab.id,\n              label: tab.label\n            };\n          }) })\n      ),\n      React.createElement(\n        Viewport,\n        { not: true, size: 'mobile' },\n        React.createElement(\n          'ul',\n          { className: 'cf-tabs__group', role: 'tablist' },\n          this.props.tabs.map(function (tab) {\n            var selected = tab.id === _this2.props.activeTab;\n\n            var className = 'cf-tabs__item';\n            if (selected) {\n              className += ' cf-tabs__item--active';\n            }\n\n            return React.createElement(\n              'li',\n              { key: tab.id,\n                role: 'tab',\n                tabIndex: 0,\n                'aria-controls': tab.id,\n                'aria-selected': selected,\n                className: className,\n                onKeyDown: _this2.handleKeyDown.bind(_this2, tab.id),\n                onClick: _this2.handleChange.bind(_this2, tab.id) },\n              tab.label\n            );\n          })\n        )\n      ),\n      this.props.children\n    );\n  };\n\n  return Tabs;\n}(React.Component);\n\nTabs.propTypes = {\n  onChange: PropTypes.func.isRequired,\n  activeTab: PropTypes.string.isRequired,\n  tabs: PropTypes.arrayOf(PropTypes.shape({\n    id: PropTypes.string.isRequired,\n    label: PropTypes.string.isRequired\n  })).isRequired\n};\nTabs.childContextTypes = {\n  activeTab: PropTypes.string.isRequired\n};\n\nmodule.exports = Tabs;","\"use strict\";\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar React = require('react');\nvar PropTypes = React.PropTypes;\n\nvar TabsPanel = function (_React$Component) {\n  _inherits(TabsPanel, _React$Component);\n\n  function TabsPanel() {\n    _classCallCheck(this, TabsPanel);\n\n    return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n  }\n\n  TabsPanel.prototype.render = function render() {\n    var selected = this.context.activeTab === this.props.id;\n\n    return React.createElement(\n      \"div\",\n      {\n        className: \"cf-tabs__panel\",\n        role: \"tabpanel\",\n        \"aria-labelledby\": this.props.id,\n        \"aria-hidden\": !selected,\n        style: { display: selected ? 'block' : 'none' } },\n      this.props.children\n    );\n  };\n\n  return TabsPanel;\n}(React.Component);\n\nTabsPanel.propTypes = {\n  id: PropTypes.string.isRequired\n};\nTabsPanel.contextTypes = {\n  activeTab: PropTypes.string.isRequired\n};\n\nmodule.exports = TabsPanel;","'use strict';\n\nexports.Tabs = require('./Tabs');\nexports.TabsPanel = require('./TabsPanel');","'use strict';\n\nvar React = require('react');\nvar PropTypes = React.PropTypes;\n\nvar ReactSelect = require('react-select');\n\nfunction Select(props) {\n  return React.createElement(\n    'div',\n    { className: 'cf-select' },\n    props.label && React.createElement(\n      'label',\n      null,\n      props.label\n    ),\n    React.createElement(ReactSelect\n    // Simplify if this isnt a searchable select\n    , { searchable: props.searchable,\n      clearable: props.searchable,\n      backspaceRemoves: props.searchable,\n\n      onChange: props.onChange,\n      onBlur: props.onBlur,\n      onFocus: props.onFocus,\n\n      multi: props.multi,\n      value: props.value,\n      options: props.options,\n      placeholder: props.placeholder })\n  );\n}\n\nSelect.propTypes = {\n  label: PropTypes.string,\n\n  onChange: PropTypes.func.isRequired,\n  onBlur: PropTypes.func,\n  onFocus: PropTypes.func,\n\n  multi: PropTypes.bool,\n  searchable: PropTypes.bool,\n\n  value: PropTypes.any,\n  options: PropTypes.arrayOf(PropTypes.shape({\n    label: PropTypes.string.isRequired,\n    value: PropTypes.any.isRequired\n  })),\n  placeholder: PropTypes.string\n};\nSelect.defaultProps = {\n  multi: false,\n  searchable: false\n};\n;\n\nmodule.exports = Select;","'use strict';\n\nmodule.exports = require('./Select');","'use strict';\n\nvar React = require('react');\nvar PropTypes = React.PropTypes;\n\nvar MediaQuery = require('react-responsive');\nvar buildMediaQuery = require('./buildMediaQuery');\n\nvar SIZES = {\n  mobile: { minWidth: null, maxWidth: '15.6em' },\n  mobileWide: { minWidth: '15.6em', maxWidth: '32.4em' },\n  tablet: { minWidth: '32.4em', maxWidth: '49.2em' },\n  desktop: { minWidth: '49.2em', maxWidth: '66em' },\n  desktopLarge: { minWidth: '66em', maxWidth: null }\n};\n\nfunction Viewport(props) {\n  var size = props.size;\n  var not = props.not;\n\n  var mediaQuery = buildMediaQuery(SIZES[size], not);\n\n  return React.createElement(\n    MediaQuery,\n    { query: mediaQuery },\n    props.children\n  );\n}\n\nViewport.propTypes = {\n  not: PropTypes.bool,\n  size: PropTypes.oneOf(['mobile', 'mobileWide', 'tablet', 'desktop', 'desktopLarge']).isRequired\n};\nViewport.defaultProps = {\n  not: false\n};\n\nmodule.exports = Viewport;","'use strict';\n\nfunction buildMediaQuery(_ref, not) {\n  var minWidth = _ref.minWidth;\n  var maxWidth = _ref.maxWidth;\n\n  var query = '';\n\n  if (minWidth) {\n    query += '(min-width: ' + minWidth + ')';\n  }\n\n  if (minWidth && maxWidth) {\n    query += ' and ';\n  }\n\n  if (maxWidth) {\n    query += '(max-width: ' + maxWidth + ')';\n  }\n\n  if (not) {\n    query = 'not all and ' + query;\n  }\n\n  return query;\n}\n\nmodule.exports = buildMediaQuery;","'use strict';\n\nmodule.exports = require('./Viewport');","'use strict';\n\nvar uppercasePattern = /([A-Z])/g;\nvar msPattern = /^ms-/;\n\nfunction hyphenateStyleName(string) {\n    return hyphenate(string).replace(msPattern, '-ms-');\n}\n\nfunction hyphenate(string) {\n    return string.replace(uppercasePattern, '-$1').toLowerCase();\n}\n\nmodule.exports = hyphenateStyleName;\n","'use strict';\n\nvar staticMatch = require('css-mediaquery').match;\nvar dynamicMatch = typeof window !== 'undefined' ? window.matchMedia : null;\n\n// our fake MediaQueryList\nfunction Mql(query, values){\n  var self = this;\n  if(dynamicMatch){\n    var mql = dynamicMatch.call(window, query);\n    this.matches = mql.matches;\n    this.media = mql.media;\n    // TODO: is there a time it makes sense to remove this listener?\n    mql.addListener(update);\n  } else {\n    this.matches = staticMatch(query, values);\n    this.media = query;\n  }\n\n  this.addListener = addListener;\n  this.removeListener = removeListener;\n\n  function addListener(listener){\n    if(mql){\n      mql.addListener(listener);\n    }\n  }\n\n  function removeListener(listener){\n    if(mql){\n      mql.removeListener(listener);\n    }\n  }\n\n  // update ourselves!\n  function update(evt){\n    self.matches = evt.matches;\n    self.media = evt.media;\n  }\n}\n\nfunction matchMedia(query, values){\n  return new Mql(query, values);\n}\n\nmodule.exports = matchMedia;\n","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\n\n'use strict';\n\nexports.match = matchQuery;\nexports.parse = parseQuery;\n\n// -----------------------------------------------------------------------------\n\nvar RE_MEDIA_QUERY     = /(?:(only|not)?\\s*([^\\s\\(\\)]+)(?:\\s*and)?\\s*)?(.+)?/i,\n    RE_MQ_EXPRESSION   = /\\(\\s*([^\\s\\:\\)]+)\\s*(?:\\:\\s*([^\\s\\)]+))?\\s*\\)/,\n    RE_MQ_FEATURE      = /^(?:(min|max)-)?(.+)/,\n    RE_LENGTH_UNIT     = /(em|rem|px|cm|mm|in|pt|pc)?$/,\n    RE_RESOLUTION_UNIT = /(dpi|dpcm|dppx)?$/;\n\nfunction matchQuery(mediaQuery, values) {\n    return parseQuery(mediaQuery).some(function (query) {\n        var inverse = query.inverse;\n\n        // Either the parsed or specified `type` is \"all\", or the types must be\n        // equal for a match.\n        var typeMatch = query.type === 'all' || values.type === query.type;\n\n        // Quit early when `type` doesn't match, but take \"not\" into account.\n        if ((typeMatch && inverse) || !(typeMatch || inverse)) {\n            return false;\n        }\n\n        var expressionsMatch = query.expressions.every(function (expression) {\n            var feature  = expression.feature,\n                modifier = expression.modifier,\n                expValue = expression.value,\n                value    = values[feature];\n\n            // Missing or falsy values don't match.\n            if (!value) { return false; }\n\n            switch (feature) {\n                case 'orientation':\n                case 'scan':\n                    return value.toLowerCase() === expValue.toLowerCase();\n\n                case 'width':\n                case 'height':\n                case 'device-width':\n                case 'device-height':\n                    expValue = toPx(expValue);\n                    value    = toPx(value);\n                    break;\n\n                case 'resolution':\n                    expValue = toDpi(expValue);\n                    value    = toDpi(value);\n                    break;\n\n                case 'aspect-ratio':\n                case 'device-aspect-ratio':\n                case /* Deprecated */ 'device-pixel-ratio':\n                    expValue = toDecimal(expValue);\n                    value    = toDecimal(value);\n                    break;\n\n                case 'grid':\n                case 'color':\n                case 'color-index':\n                case 'monochrome':\n                    expValue = parseInt(expValue, 10) || 1;\n                    value    = parseInt(value, 10) || 0;\n                    break;\n            }\n\n            switch (modifier) {\n                case 'min': return value >= expValue;\n                case 'max': return value <= expValue;\n                default   : return value === expValue;\n            }\n        });\n\n        return (expressionsMatch && !inverse) || (!expressionsMatch && inverse);\n    });\n}\n\nfunction parseQuery(mediaQuery) {\n    return mediaQuery.split(',').map(function (query) {\n        query = query.trim();\n\n        var captures    = query.match(RE_MEDIA_QUERY),\n            modifier    = captures[1],\n            type        = captures[2],\n            expressions = captures[3] || '',\n            parsed      = {};\n\n        parsed.inverse = !!modifier && modifier.toLowerCase() === 'not';\n        parsed.type    = type ? type.toLowerCase() : 'all';\n\n        // Split expressions into a list.\n        expressions = expressions.match(/\\([^\\)]+\\)/g) || [];\n\n        parsed.expressions = expressions.map(function (expression) {\n            var captures = expression.match(RE_MQ_EXPRESSION),\n                feature  = captures[1].toLowerCase().match(RE_MQ_FEATURE);\n\n            return {\n                modifier: feature[1],\n                feature : feature[2],\n                value   : captures[2]\n            };\n        });\n\n        return parsed;\n    });\n}\n\n// -- Utilities ----------------------------------------------------------------\n\nfunction toDecimal(ratio) {\n    var decimal = Number(ratio),\n        numbers;\n\n    if (!decimal) {\n        numbers = ratio.match(/^(\\d+)\\s*\\/\\s*(\\d+)$/);\n        decimal = numbers[1] / numbers[2];\n    }\n\n    return decimal;\n}\n\nfunction toDpi(resolution) {\n    var value = parseFloat(resolution),\n        units = String(resolution).match(RE_RESOLUTION_UNIT)[1];\n\n    switch (units) {\n        case 'dpcm': return value / 2.54;\n        case 'dppx': return value * 96;\n        default    : return value;\n    }\n}\n\nfunction toPx(length) {\n    var value = parseFloat(length),\n        units = String(length).match(RE_LENGTH_UNIT)[1];\n\n    switch (units) {\n        case 'em' : return value * 16;\n        case 'rem': return value * 16;\n        case 'cm' : return value * 96 / 2.54;\n        case 'mm' : return value * 96 / 2.54 / 10;\n        case 'in' : return value * 96;\n        case 'pt' : return value * 72;\n        case 'pc' : return value * 72 / 12;\n        default   : return value;\n    }\n}\n","/* eslint-disable no-unused-vars */\n'use strict';\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nmodule.exports = Object.assign || function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (Object.getOwnPropertySymbols) {\n\t\t\tsymbols = Object.getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","'use strict';\n\nvar React = require('react');\nvar matchMedia = require('matchmedia');\nvar hyphenate = require('hyphenate-style-name');\nvar mediaQuery = require('./mediaQuery');\nvar toQuery = require('./toQuery');\nvar assign = require('object-assign');\n\nvar defaultTypes = {\n  component: React.PropTypes.node,\n  query: React.PropTypes.string,\n  values: React.PropTypes.shape(mediaQuery.matchers),\n  children: React.PropTypes.array\n};\nvar mediaKeys = Object.keys(mediaQuery.all);\nvar excludedQueryKeys = Object.keys(defaultTypes);\nvar excludedPropKeys = excludedQueryKeys.concat(mediaKeys);\n\nfunction omit(object, keys){\n  var newObject = assign({}, object);\n  keys.forEach(function(key){\n    delete newObject[key];\n  });\n  return newObject;\n}\n\nvar mq = React.createClass({\n  displayName: 'MediaQuery',\n\n  getDefaultProps: function(){\n    return {\n      values: {}\n    };\n  },\n\n  getInitialState: function(){\n    return {\n      matches: false\n    };\n  },\n\n  componentWillMount: function(){\n    this.updateQuery(this.props);\n  },\n\n  componentWillReceiveProps: function(props){\n    this.updateQuery(props);\n  },\n\n  updateQuery: function(props){\n    var values;\n    if (props.query) {\n      this.query = props.query;\n    } else {\n      this.query = toQuery(omit(props, excludedQueryKeys));\n    }\n\n    if (!this.query) {\n      throw new Error('Invalid or missing MediaQuery!');\n    }\n\n    if (props.values) {\n      values = Object.keys(props.values)\n        .reduce(function(result, key){\n          result[hyphenate(key)] = props.values[key];\n          return result;\n        }, {});\n    }\n\n    if (this._mql) {\n      this._mql.removeListener(this.updateMatches);\n    }\n\n    this._mql = matchMedia(this.query, values);\n    this._mql.addListener(this.updateMatches);\n    this.updateMatches();\n  },\n\n  componentWillUnmount: function(){\n    this._mql.removeListener(this.updateMatches);\n  },\n\n  updateMatches: function(){\n    if (this._mql.matches === this.state.matches) {\n      return;\n    }\n    this.setState({\n      matches: this._mql.matches\n    });\n  },\n\n  render: function(){\n    if (this.state.matches === false) {\n      return null;\n    }\n    var props = omit(this.props, excludedPropKeys);\n    if (this.props.component || this.props.children.length > 1) {\n      return React.createElement(\n        this.props.component || 'div',\n        props,\n        this.props.children\n      );\n    } else if (props) {\n      return React.cloneElement(\n        this.props.children,\n        props\n      );\n    } else {\n      return this.props.children;\n    }\n  }\n});\n\nmodule.exports = mq;\n","var PropTypes = require('react').PropTypes;\nvar assign = require('object-assign');\n\nvar stringOrNumber = PropTypes.oneOfType([\n  PropTypes.string,\n  PropTypes.number\n]);\n\n// properties that match media queries\nvar matchers = {\n  orientation: PropTypes.oneOf([\n    'portrait',\n    'landscape'\n  ]),\n\n  scan: PropTypes.oneOf([\n    'progressive',\n    'interlace'\n  ]),\n\n  aspectRatio: PropTypes.string,\n  deviceAspectRatio: PropTypes.string,\n\n  height: stringOrNumber,\n  deviceHeight: stringOrNumber,\n\n  width: stringOrNumber,\n  deviceWidth: stringOrNumber,\n\n  color: PropTypes.bool,\n\n  colorIndex: PropTypes.bool,\n\n  monochrome: PropTypes.bool,\n  resolution: stringOrNumber\n};\n\n// media features\nvar features = {\n  minAspectRatio: PropTypes.string,\n  maxAspectRatio: PropTypes.string,\n  minDeviceAspectRatio: PropTypes.string,\n  maxDeviceAspectRatio: PropTypes.string,\n\n  minHeight: stringOrNumber,\n  maxHeight: stringOrNumber,\n  minDeviceHeight: stringOrNumber,\n  maxDeviceHeight: stringOrNumber,\n\n  minWidth: stringOrNumber,\n  maxWidth: stringOrNumber,\n  minDeviceWidth: stringOrNumber,\n  maxDeviceWidth: stringOrNumber,\n\n  minColor: PropTypes.number,\n  maxColor: PropTypes.number,\n\n  minColorIndex: PropTypes.number,\n  maxColorIndex: PropTypes.number,\n\n  minMonochrome: PropTypes.number,\n  maxMonochrome: PropTypes.number,\n\n  minResolution: stringOrNumber,\n  maxResolution: stringOrNumber\n};\n\nassign(features, matchers);\n\n// media types\nvar types = {\n  all: PropTypes.bool,\n  grid: PropTypes.bool,\n  aural: PropTypes.bool,\n  braille: PropTypes.bool,\n  handheld: PropTypes.bool,\n  print: PropTypes.bool,\n  projection: PropTypes.bool,\n  screen: PropTypes.bool,\n  tty: PropTypes.bool,\n  tv: PropTypes.bool,\n  embossed: PropTypes.bool\n};\n\nvar all = {};\nassign(all, types);\nassign(all, features);\n\n// add the type property\nassign(matchers, { type: Object.keys(types) });\n\nmodule.exports = {\n  all: all,\n  types: types,\n  matchers: matchers,\n  features: features\n};\n","'use strict';\n\nvar hyphenate = require('hyphenate-style-name');\nvar mq = require('./mediaQuery');\n\nfunction negate(cond) {\n  return 'not ' + cond;\n}\n\nfunction keyVal(k, v) {\n  var realKey = hyphenate(k);\n\n  // px shorthand\n  if (typeof v === 'number') {\n    v = v+'px';\n  }\n  if (v === true) {\n    return k;\n  }\n  if (v === false) {\n    return negate(k);\n  }\n  return '('+realKey+': '+v+')';\n}\n\nfunction join(conds) {\n  return conds.join(' and ');\n}\n\nmodule.exports = function(obj){\n  var rules = [];\n  Object.keys(mq.all).forEach(function(k){\n    var v = obj[k];\n    if (v != null) {\n      rules.push(keyVal(k, v));\n    }\n  });\n  return join(rules);\n};\n","'use strict';\n\nexports.__esModule = true;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Toggle = (function (_React$Component) {\n  _inherits(Toggle, _React$Component);\n\n  function Toggle() {\n    var _temp, _this, _ret;\n\n    _classCallCheck(this, Toggle);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.handleChange = function (e) {\n      _this.props.onChange(e.target.checked);\n    }, _temp), _possibleConstructorReturn(_this, _ret);\n  }\n\n  Toggle.prototype.render = function render() {\n    var className = 'cf-toggle';\n\n    if (this.props.value) {\n      className += ' cf-toggle--active';\n    }\n\n    return _react2.default.createElement(\n      'label',\n      { htmlFor: this.props.name, className: className },\n      _react2.default.createElement('input', {\n        className: 'cf-toggle__checkbox',\n        type: 'checkbox',\n        id: this.props.name,\n        name: this.props.name,\n        checked: this.props.value,\n        onChange: this.handleChange,\n        onFocus: this.props.onFocus,\n        onBlur: this.props.onBlur }),\n      _react2.default.createElement(\n        'span',\n        { className: 'cf-toggle__label' },\n        this.props.label\n      ),\n      _react2.default.createElement('span', { className: 'cf-toggle__handle' })\n    );\n  };\n\n  return Toggle;\n})(_react2.default.Component);\n\nToggle.propTypes = {\n  label: _react2.default.PropTypes.oneOfType([_react2.default.PropTypes.string, _react2.default.PropTypes.oneOf([false])]).isRequired,\n  name: _react2.default.PropTypes.string,\n  value: _react2.default.PropTypes.bool,\n  onChange: _react2.default.PropTypes.func,\n  onFocus: _react2.default.PropTypes.func,\n  onBlur: _react2.default.PropTypes.func\n};\nexports.default = Toggle;","'use strict';\n\nexports.__esModule = true;\nexports.default = undefined;\n\nvar _Toggle = require('./Toggle');\n\nvar _Toggle2 = _interopRequireDefault(_Toggle);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _Toggle2.default;","'use strict';\n\nvar _superagent = require('superagent');\n\nvar _superagent2 = _interopRequireDefault(_superagent);\n\nvar _cfUtilLogger = require('cf-util-logger');\n\nvar _cfUtilLogger2 = _interopRequireDefault(_cfUtilLogger);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar logRequest = (0, _cfUtilLogger2.default)('http:request');\nvar logError = (0, _cfUtilLogger2.default)('http:error');\nvar logSuccess = (0, _cfUtilLogger2.default)('http:success');\n\nvar http = {};\n\n// Mapping of http request types to superagent methods.\nvar METHODS = {\n  GET: 'get',\n  POST: 'post',\n  PUT: 'put',\n  PATCH: 'patch',\n  DELETE: 'del'\n};\n\n// Store beforeSend callbacks.\nvar beforeSendCallbacks = [];\n\n/**\n * Modify request options before they are sent.\n * Useful for authentication or other middleware.\n *\n * ```js\n * http.beforeSend(function(opts) {\n *   opts.url = '/api/v4' + opts.url;\n * });\n * ```\n *\n * @param {Function} callback\n */\nhttp.beforeSend = function (callback) {\n  beforeSendCallbacks.push(callback);\n};\n\n/**\n * Perform an http request.\n *\n * ```js\n * http.request('POST', '/posts', {\n *   body: {\n *     title: 'A New Post',\n *     content: 'Contents of the new post.'\n *   }\n * }, function(res) {\n *   console.log(res.body); // > { result: { id: 1, title: 'A New Post', content: 'Contents of the new post.' } }\n * }, function(err) {\n *   console.log(res.body); // > { errors: [{ message: 'Error!' }] }\n * });\n * ```\n *\n * @param {String} method - GET/POST/PUT/PATCH/DELETE\n * @param {String} url\n * @param {Object} [opts]\n * @param {Object} [opts.parameters]\n * @param {Object} [opts.headers]\n * @param {Object} [opts.body]\n * @param {Function} [onSuccess]\n * @param {Function} [onError]\n * @returns {Function} Abort request.\n */\nhttp.request = function (method, url, opts, onSuccess, onError) {\n  opts = opts || {};\n\n  opts.method = method;\n  opts.url = url;\n  opts.onSuccess = onSuccess;\n  opts.onError = onError;\n\n  // Allow beforeSend to modify request options.\n  beforeSendCallbacks.forEach(function (callback) {\n    return callback(opts);\n  });\n\n  // Configure request\n  var req = _superagent2.default[METHODS[method]](opts.url);\n\n  if (opts.parameters) {\n    req.query(opts.parameters);\n  }\n\n  if (opts.headers) {\n    req.set(opts.headers);\n  }\n\n  if (opts.body) {\n    req.send(opts.body);\n  }\n\n  var logMessage = opts.method + ' ' + opts.url;\n\n  logRequest(logMessage);\n\n  // Send request\n  req.end(function (err, res) {\n    var callback = err ? opts.onError : opts.onSuccess;\n\n    logMessage = logMessage + ' (' + res.status + ' ' + res.statusText + ')';\n\n    if (err) {\n      logError(logMessage);\n    } else {\n      logSuccess(logMessage);\n    }\n\n    if (callback) {\n      callback({\n        headers: res.headers,\n        status: res.status,\n        body: res.body,\n        text: res.text\n      });\n    }\n  });\n\n  // Return abort function\n  return function () {\n    req.abort();\n  };\n};\n\n/**\n * Perform a GET request.\n */\nhttp.get = function () {\n  for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  return http.request.apply(http, ['GET'].concat(args));\n};\n\n/**\n * Perform a POST request.\n */\nhttp.post = function () {\n  for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n    args[_key2] = arguments[_key2];\n  }\n\n  return http.request.apply(http, ['POST'].concat(args));\n};\n\n/**\n * Perform a PUT request.\n */\nhttp.put = function () {\n  for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n    args[_key3] = arguments[_key3];\n  }\n\n  return http.request.apply(http, ['PUT'].concat(args));\n};\n\n/**\n * Perform a PATCH request.\n */\nhttp.patch = function () {\n  for (var _len4 = arguments.length, args = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n    args[_key4] = arguments[_key4];\n  }\n\n  return http.request.apply(http, ['PATCH'].concat(args));\n};\n\n/**\n * Perform a DELETE request.\n */\nhttp.del = function () {\n  for (var _len5 = arguments.length, args = Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n    args[_key5] = arguments[_key5];\n  }\n\n  return http.request.apply(http, ['DELETE'].concat(args));\n};\n\nmodule.exports = http;","'use strict';\n\nexports.__esModule = true;\nexports.default = createLogger;\n\nvar _debug = require('debug');\n\nvar _debug2 = _interopRequireDefault(_debug);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction createLogger(name) {\n  var logger = (0, _debug2.default)(name);\n\n  return function (message) {\n    logger(message);\n  };\n}","\n/**\n * This is the web browser implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = require('./debug');\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = 'undefined' != typeof chrome\n               && 'undefined' != typeof chrome.storage\n                  ? chrome.storage.local\n                  : localstorage();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n  'lightseagreen',\n  'forestgreen',\n  'goldenrod',\n  'dodgerblue',\n  'darkorchid',\n  'crimson'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\nfunction useColors() {\n  // is webkit? http://stackoverflow.com/a/16459606/376773\n  return ('WebkitAppearance' in document.documentElement.style) ||\n    // is firebug? http://stackoverflow.com/a/398120/376773\n    (window.console && (console.firebug || (console.exception && console.table))) ||\n    // is firefox >= v31?\n    // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n    (navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31);\n}\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nexports.formatters.j = function(v) {\n  return JSON.stringify(v);\n};\n\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs() {\n  var args = arguments;\n  var useColors = this.useColors;\n\n  args[0] = (useColors ? '%c' : '')\n    + this.namespace\n    + (useColors ? ' %c' : ' ')\n    + args[0]\n    + (useColors ? '%c ' : ' ')\n    + '+' + exports.humanize(this.diff);\n\n  if (!useColors) return args;\n\n  var c = 'color: ' + this.color;\n  args = [args[0], c, 'color: inherit'].concat(Array.prototype.slice.call(args, 1));\n\n  // the final \"%c\" is somewhat tricky, because there could be other\n  // arguments passed either before or after the %c, so we need to\n  // figure out the correct index to insert the CSS into\n  var index = 0;\n  var lastC = 0;\n  args[0].replace(/%[a-z%]/g, function(match) {\n    if ('%%' === match) return;\n    index++;\n    if ('%c' === match) {\n      // we only are interested in the *last* %c\n      // (the user may have provided their own)\n      lastC = index;\n    }\n  });\n\n  args.splice(lastC, 0, c);\n  return args;\n}\n\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\nfunction log() {\n  // this hackery is required for IE8/9, where\n  // the `console.log` function doesn't have 'apply'\n  return 'object' === typeof console\n    && console.log\n    && Function.prototype.apply.call(console.log, console, arguments);\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n  try {\n    if (null == namespaces) {\n      exports.storage.removeItem('debug');\n    } else {\n      exports.storage.debug = namespaces;\n    }\n  } catch(e) {}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n  var r;\n  try {\n    r = exports.storage.debug;\n  } catch(e) {}\n  return r;\n}\n\n/**\n * Enable namespaces listed in `localStorage.debug` initially.\n */\n\nexports.enable(load());\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage(){\n  try {\n    return window.localStorage;\n  } catch (e) {}\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = debug;\nexports.coerce = coerce;\nexports.disable = disable;\nexports.enable = enable;\nexports.enabled = enabled;\nexports.humanize = require('ms');\n\n/**\n * The currently active debug mode names, and names to skip.\n */\n\nexports.names = [];\nexports.skips = [];\n\n/**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lowercased letter, i.e. \"n\".\n */\n\nexports.formatters = {};\n\n/**\n * Previously assigned color.\n */\n\nvar prevColor = 0;\n\n/**\n * Previous log timestamp.\n */\n\nvar prevTime;\n\n/**\n * Select a color.\n *\n * @return {Number}\n * @api private\n */\n\nfunction selectColor() {\n  return exports.colors[prevColor++ % exports.colors.length];\n}\n\n/**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\nfunction debug(namespace) {\n\n  // define the `disabled` version\n  function disabled() {\n  }\n  disabled.enabled = false;\n\n  // define the `enabled` version\n  function enabled() {\n\n    var self = enabled;\n\n    // set `diff` timestamp\n    var curr = +new Date();\n    var ms = curr - (prevTime || curr);\n    self.diff = ms;\n    self.prev = prevTime;\n    self.curr = curr;\n    prevTime = curr;\n\n    // add the `color` if not set\n    if (null == self.useColors) self.useColors = exports.useColors();\n    if (null == self.color && self.useColors) self.color = selectColor();\n\n    var args = Array.prototype.slice.call(arguments);\n\n    args[0] = exports.coerce(args[0]);\n\n    if ('string' !== typeof args[0]) {\n      // anything else let's inspect with %o\n      args = ['%o'].concat(args);\n    }\n\n    // apply any `formatters` transformations\n    var index = 0;\n    args[0] = args[0].replace(/%([a-z%])/g, function(match, format) {\n      // if we encounter an escaped % then don't increase the array index\n      if (match === '%%') return match;\n      index++;\n      var formatter = exports.formatters[format];\n      if ('function' === typeof formatter) {\n        var val = args[index];\n        match = formatter.call(self, val);\n\n        // now we need to remove `args[index]` since it's inlined in the `format`\n        args.splice(index, 1);\n        index--;\n      }\n      return match;\n    });\n\n    if ('function' === typeof exports.formatArgs) {\n      args = exports.formatArgs.apply(self, args);\n    }\n    var logFn = enabled.log || exports.log || console.log.bind(console);\n    logFn.apply(self, args);\n  }\n  enabled.enabled = true;\n\n  var fn = exports.enabled(namespace) ? enabled : disabled;\n\n  fn.namespace = namespace;\n\n  return fn;\n}\n\n/**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\nfunction enable(namespaces) {\n  exports.save(namespaces);\n\n  var split = (namespaces || '').split(/[\\s,]+/);\n  var len = split.length;\n\n  for (var i = 0; i < len; i++) {\n    if (!split[i]) continue; // ignore empty strings\n    namespaces = split[i].replace(/\\*/g, '.*?');\n    if (namespaces[0] === '-') {\n      exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n    } else {\n      exports.names.push(new RegExp('^' + namespaces + '$'));\n    }\n  }\n}\n\n/**\n * Disable debug output.\n *\n * @api public\n */\n\nfunction disable() {\n  exports.enable('');\n}\n\n/**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\nfunction enabled(name) {\n  var i, len;\n  for (i = 0, len = exports.skips.length; i < len; i++) {\n    if (exports.skips[i].test(name)) {\n      return false;\n    }\n  }\n  for (i = 0, len = exports.names.length; i < len; i++) {\n    if (exports.names[i].test(name)) {\n      return true;\n    }\n  }\n  return false;\n}\n\n/**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\nfunction coerce(val) {\n  if (val instanceof Error) return val.stack || val.message;\n  return val;\n}\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n *  - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} options\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options){\n  options = options || {};\n  if ('string' == typeof val) return parse(val);\n  return options.long\n    ? long(val)\n    : short(val);\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n  str = '' + str;\n  if (str.length > 10000) return;\n  var match = /^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(str);\n  if (!match) return;\n  var n = parseFloat(match[1]);\n  var type = (match[2] || 'ms').toLowerCase();\n  switch (type) {\n    case 'years':\n    case 'year':\n    case 'yrs':\n    case 'yr':\n    case 'y':\n      return n * y;\n    case 'days':\n    case 'day':\n    case 'd':\n      return n * d;\n    case 'hours':\n    case 'hour':\n    case 'hrs':\n    case 'hr':\n    case 'h':\n      return n * h;\n    case 'minutes':\n    case 'minute':\n    case 'mins':\n    case 'min':\n    case 'm':\n      return n * m;\n    case 'seconds':\n    case 'second':\n    case 'secs':\n    case 'sec':\n    case 's':\n      return n * s;\n    case 'milliseconds':\n    case 'millisecond':\n    case 'msecs':\n    case 'msec':\n    case 'ms':\n      return n;\n  }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction short(ms) {\n  if (ms >= d) return Math.round(ms / d) + 'd';\n  if (ms >= h) return Math.round(ms / h) + 'h';\n  if (ms >= m) return Math.round(ms / m) + 'm';\n  if (ms >= s) return Math.round(ms / s) + 's';\n  return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction long(ms) {\n  return plural(ms, d, 'day')\n    || plural(ms, h, 'hour')\n    || plural(ms, m, 'minute')\n    || plural(ms, s, 'second')\n    || ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, n, name) {\n  if (ms < n) return;\n  if (ms < n * 1.5) return Math.floor(ms / n) + ' ' + name;\n  return Math.ceil(ms / n) + ' ' + name + 's';\n}\n","/**\n * Module dependencies.\n */\n\nvar Emitter = require('emitter');\nvar reduce = require('reduce');\n\n/**\n * Root reference for iframes.\n */\n\nvar root;\nif (typeof window !== 'undefined') { // Browser window\n  root = window;\n} else if (typeof self !== 'undefined') { // Web Worker\n  root = self;\n} else { // Other environments\n  root = this;\n}\n\n/**\n * Noop.\n */\n\nfunction noop(){};\n\n/**\n * Check if `obj` is a host object,\n * we don't want to serialize these :)\n *\n * TODO: future proof, move to compoent land\n *\n * @param {Object} obj\n * @return {Boolean}\n * @api private\n */\n\nfunction isHost(obj) {\n  var str = {}.toString.call(obj);\n\n  switch (str) {\n    case '[object File]':\n    case '[object Blob]':\n    case '[object FormData]':\n      return true;\n    default:\n      return false;\n  }\n}\n\n/**\n * Determine XHR.\n */\n\nrequest.getXHR = function () {\n  if (root.XMLHttpRequest\n      && (!root.location || 'file:' != root.location.protocol\n          || !root.ActiveXObject)) {\n    return new XMLHttpRequest;\n  } else {\n    try { return new ActiveXObject('Microsoft.XMLHTTP'); } catch(e) {}\n    try { return new ActiveXObject('Msxml2.XMLHTTP.6.0'); } catch(e) {}\n    try { return new ActiveXObject('Msxml2.XMLHTTP.3.0'); } catch(e) {}\n    try { return new ActiveXObject('Msxml2.XMLHTTP'); } catch(e) {}\n  }\n  return false;\n};\n\n/**\n * Removes leading and trailing whitespace, added to support IE.\n *\n * @param {String} s\n * @return {String}\n * @api private\n */\n\nvar trim = ''.trim\n  ? function(s) { return s.trim(); }\n  : function(s) { return s.replace(/(^\\s*|\\s*$)/g, ''); };\n\n/**\n * Check if `obj` is an object.\n *\n * @param {Object} obj\n * @return {Boolean}\n * @api private\n */\n\nfunction isObject(obj) {\n  return obj === Object(obj);\n}\n\n/**\n * Serialize the given `obj`.\n *\n * @param {Object} obj\n * @return {String}\n * @api private\n */\n\nfunction serialize(obj) {\n  if (!isObject(obj)) return obj;\n  var pairs = [];\n  for (var key in obj) {\n    if (null != obj[key]) {\n      pushEncodedKeyValuePair(pairs, key, obj[key]);\n        }\n      }\n  return pairs.join('&');\n}\n\n/**\n * Helps 'serialize' with serializing arrays.\n * Mutates the pairs array.\n *\n * @param {Array} pairs\n * @param {String} key\n * @param {Mixed} val\n */\n\nfunction pushEncodedKeyValuePair(pairs, key, val) {\n  if (Array.isArray(val)) {\n    return val.forEach(function(v) {\n      pushEncodedKeyValuePair(pairs, key, v);\n    });\n  }\n  pairs.push(encodeURIComponent(key)\n    + '=' + encodeURIComponent(val));\n}\n\n/**\n * Expose serialization method.\n */\n\n request.serializeObject = serialize;\n\n /**\n  * Parse the given x-www-form-urlencoded `str`.\n  *\n  * @param {String} str\n  * @return {Object}\n  * @api private\n  */\n\nfunction parseString(str) {\n  var obj = {};\n  var pairs = str.split('&');\n  var parts;\n  var pair;\n\n  for (var i = 0, len = pairs.length; i < len; ++i) {\n    pair = pairs[i];\n    parts = pair.split('=');\n    obj[decodeURIComponent(parts[0])] = decodeURIComponent(parts[1]);\n  }\n\n  return obj;\n}\n\n/**\n * Expose parser.\n */\n\nrequest.parseString = parseString;\n\n/**\n * Default MIME type map.\n *\n *     superagent.types.xml = 'application/xml';\n *\n */\n\nrequest.types = {\n  html: 'text/html',\n  json: 'application/json',\n  xml: 'application/xml',\n  urlencoded: 'application/x-www-form-urlencoded',\n  'form': 'application/x-www-form-urlencoded',\n  'form-data': 'application/x-www-form-urlencoded'\n};\n\n/**\n * Default serialization map.\n *\n *     superagent.serialize['application/xml'] = function(obj){\n *       return 'generated xml here';\n *     };\n *\n */\n\n request.serialize = {\n   'application/x-www-form-urlencoded': serialize,\n   'application/json': JSON.stringify\n };\n\n /**\n  * Default parsers.\n  *\n  *     superagent.parse['application/xml'] = function(str){\n  *       return { object parsed from str };\n  *     };\n  *\n  */\n\nrequest.parse = {\n  'application/x-www-form-urlencoded': parseString,\n  'application/json': JSON.parse\n};\n\n/**\n * Parse the given header `str` into\n * an object containing the mapped fields.\n *\n * @param {String} str\n * @return {Object}\n * @api private\n */\n\nfunction parseHeader(str) {\n  var lines = str.split(/\\r?\\n/);\n  var fields = {};\n  var index;\n  var line;\n  var field;\n  var val;\n\n  lines.pop(); // trailing CRLF\n\n  for (var i = 0, len = lines.length; i < len; ++i) {\n    line = lines[i];\n    index = line.indexOf(':');\n    field = line.slice(0, index).toLowerCase();\n    val = trim(line.slice(index + 1));\n    fields[field] = val;\n  }\n\n  return fields;\n}\n\n/**\n * Check if `mime` is json or has +json structured syntax suffix.\n *\n * @param {String} mime\n * @return {Boolean}\n * @api private\n */\n\nfunction isJSON(mime) {\n  return /[\\/+]json\\b/.test(mime);\n}\n\n/**\n * Return the mime type for the given `str`.\n *\n * @param {String} str\n * @return {String}\n * @api private\n */\n\nfunction type(str){\n  return str.split(/ *; */).shift();\n};\n\n/**\n * Return header field parameters.\n *\n * @param {String} str\n * @return {Object}\n * @api private\n */\n\nfunction params(str){\n  return reduce(str.split(/ *; */), function(obj, str){\n    var parts = str.split(/ *= */)\n      , key = parts.shift()\n      , val = parts.shift();\n\n    if (key && val) obj[key] = val;\n    return obj;\n  }, {});\n};\n\n/**\n * Initialize a new `Response` with the given `xhr`.\n *\n *  - set flags (.ok, .error, etc)\n *  - parse header\n *\n * Examples:\n *\n *  Aliasing `superagent` as `request` is nice:\n *\n *      request = superagent;\n *\n *  We can use the promise-like API, or pass callbacks:\n *\n *      request.get('/').end(function(res){});\n *      request.get('/', function(res){});\n *\n *  Sending data can be chained:\n *\n *      request\n *        .post('/user')\n *        .send({ name: 'tj' })\n *        .end(function(res){});\n *\n *  Or passed to `.send()`:\n *\n *      request\n *        .post('/user')\n *        .send({ name: 'tj' }, function(res){});\n *\n *  Or passed to `.post()`:\n *\n *      request\n *        .post('/user', { name: 'tj' })\n *        .end(function(res){});\n *\n * Or further reduced to a single call for simple cases:\n *\n *      request\n *        .post('/user', { name: 'tj' }, function(res){});\n *\n * @param {XMLHTTPRequest} xhr\n * @param {Object} options\n * @api private\n */\n\nfunction Response(req, options) {\n  options = options || {};\n  this.req = req;\n  this.xhr = this.req.xhr;\n  // responseText is accessible only if responseType is '' or 'text' and on older browsers\n  this.text = ((this.req.method !='HEAD' && (this.xhr.responseType === '' || this.xhr.responseType === 'text')) || typeof this.xhr.responseType === 'undefined')\n     ? this.xhr.responseText\n     : null;\n  this.statusText = this.req.xhr.statusText;\n  this.setStatusProperties(this.xhr.status);\n  this.header = this.headers = parseHeader(this.xhr.getAllResponseHeaders());\n  // getAllResponseHeaders sometimes falsely returns \"\" for CORS requests, but\n  // getResponseHeader still works. so we get content-type even if getting\n  // other headers fails.\n  this.header['content-type'] = this.xhr.getResponseHeader('content-type');\n  this.setHeaderProperties(this.header);\n  this.body = this.req.method != 'HEAD'\n    ? this.parseBody(this.text ? this.text : this.xhr.response)\n    : null;\n}\n\n/**\n * Get case-insensitive `field` value.\n *\n * @param {String} field\n * @return {String}\n * @api public\n */\n\nResponse.prototype.get = function(field){\n  return this.header[field.toLowerCase()];\n};\n\n/**\n * Set header related properties:\n *\n *   - `.type` the content type without params\n *\n * A response of \"Content-Type: text/plain; charset=utf-8\"\n * will provide you with a `.type` of \"text/plain\".\n *\n * @param {Object} header\n * @api private\n */\n\nResponse.prototype.setHeaderProperties = function(header){\n  // content-type\n  var ct = this.header['content-type'] || '';\n  this.type = type(ct);\n\n  // params\n  var obj = params(ct);\n  for (var key in obj) this[key] = obj[key];\n};\n\n/**\n * Parse the given body `str`.\n *\n * Used for auto-parsing of bodies. Parsers\n * are defined on the `superagent.parse` object.\n *\n * @param {String} str\n * @return {Mixed}\n * @api private\n */\n\nResponse.prototype.parseBody = function(str){\n  var parse = request.parse[this.type];\n  return parse && str && (str.length || str instanceof Object)\n    ? parse(str)\n    : null;\n};\n\n/**\n * Set flags such as `.ok` based on `status`.\n *\n * For example a 2xx response will give you a `.ok` of __true__\n * whereas 5xx will be __false__ and `.error` will be __true__. The\n * `.clientError` and `.serverError` are also available to be more\n * specific, and `.statusType` is the class of error ranging from 1..5\n * sometimes useful for mapping respond colors etc.\n *\n * \"sugar\" properties are also defined for common cases. Currently providing:\n *\n *   - .noContent\n *   - .badRequest\n *   - .unauthorized\n *   - .notAcceptable\n *   - .notFound\n *\n * @param {Number} status\n * @api private\n */\n\nResponse.prototype.setStatusProperties = function(status){\n  // handle IE9 bug: http://stackoverflow.com/questions/10046972/msie-returns-status-code-of-1223-for-ajax-request\n  if (status === 1223) {\n    status = 204;\n  }\n\n  var type = status / 100 | 0;\n\n  // status / class\n  this.status = this.statusCode = status;\n  this.statusType = type;\n\n  // basics\n  this.info = 1 == type;\n  this.ok = 2 == type;\n  this.clientError = 4 == type;\n  this.serverError = 5 == type;\n  this.error = (4 == type || 5 == type)\n    ? this.toError()\n    : false;\n\n  // sugar\n  this.accepted = 202 == status;\n  this.noContent = 204 == status;\n  this.badRequest = 400 == status;\n  this.unauthorized = 401 == status;\n  this.notAcceptable = 406 == status;\n  this.notFound = 404 == status;\n  this.forbidden = 403 == status;\n};\n\n/**\n * Return an `Error` representative of this response.\n *\n * @return {Error}\n * @api public\n */\n\nResponse.prototype.toError = function(){\n  var req = this.req;\n  var method = req.method;\n  var url = req.url;\n\n  var msg = 'cannot ' + method + ' ' + url + ' (' + this.status + ')';\n  var err = new Error(msg);\n  err.status = this.status;\n  err.method = method;\n  err.url = url;\n\n  return err;\n};\n\n/**\n * Expose `Response`.\n */\n\nrequest.Response = Response;\n\n/**\n * Initialize a new `Request` with the given `method` and `url`.\n *\n * @param {String} method\n * @param {String} url\n * @api public\n */\n\nfunction Request(method, url) {\n  var self = this;\n  Emitter.call(this);\n  this._query = this._query || [];\n  this.method = method;\n  this.url = url;\n  this.header = {};\n  this._header = {};\n  this.on('end', function(){\n    var err = null;\n    var res = null;\n\n    try {\n      res = new Response(self);\n    } catch(e) {\n      err = new Error('Parser is unable to parse the response');\n      err.parse = true;\n      err.original = e;\n      // issue #675: return the raw response if the response parsing fails\n      err.rawResponse = self.xhr && self.xhr.responseText ? self.xhr.responseText : null;\n      return self.callback(err);\n    }\n\n    self.emit('response', res);\n\n    if (err) {\n      return self.callback(err, res);\n    }\n\n    if (res.status >= 200 && res.status < 300) {\n      return self.callback(err, res);\n    }\n\n    var new_err = new Error(res.statusText || 'Unsuccessful HTTP response');\n    new_err.original = err;\n    new_err.response = res;\n    new_err.status = res.status;\n\n    self.callback(new_err, res);\n  });\n}\n\n/**\n * Mixin `Emitter`.\n */\n\nEmitter(Request.prototype);\n\n/**\n * Allow for extension\n */\n\nRequest.prototype.use = function(fn) {\n  fn(this);\n  return this;\n}\n\n/**\n * Set timeout to `ms`.\n *\n * @param {Number} ms\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.timeout = function(ms){\n  this._timeout = ms;\n  return this;\n};\n\n/**\n * Clear previous timeout.\n *\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.clearTimeout = function(){\n  this._timeout = 0;\n  clearTimeout(this._timer);\n  return this;\n};\n\n/**\n * Abort the request, and clear potential timeout.\n *\n * @return {Request}\n * @api public\n */\n\nRequest.prototype.abort = function(){\n  if (this.aborted) return;\n  this.aborted = true;\n  this.xhr.abort();\n  this.clearTimeout();\n  this.emit('abort');\n  return this;\n};\n\n/**\n * Set header `field` to `val`, or multiple fields with one object.\n *\n * Examples:\n *\n *      req.get('/')\n *        .set('Accept', 'application/json')\n *        .set('X-API-Key', 'foobar')\n *        .end(callback);\n *\n *      req.get('/')\n *        .set({ Accept: 'application/json', 'X-API-Key': 'foobar' })\n *        .end(callback);\n *\n * @param {String|Object} field\n * @param {String} val\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.set = function(field, val){\n  if (isObject(field)) {\n    for (var key in field) {\n      this.set(key, field[key]);\n    }\n    return this;\n  }\n  this._header[field.toLowerCase()] = val;\n  this.header[field] = val;\n  return this;\n};\n\n/**\n * Remove header `field`.\n *\n * Example:\n *\n *      req.get('/')\n *        .unset('User-Agent')\n *        .end(callback);\n *\n * @param {String} field\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.unset = function(field){\n  delete this._header[field.toLowerCase()];\n  delete this.header[field];\n  return this;\n};\n\n/**\n * Get case-insensitive header `field` value.\n *\n * @param {String} field\n * @return {String}\n * @api private\n */\n\nRequest.prototype.getHeader = function(field){\n  return this._header[field.toLowerCase()];\n};\n\n/**\n * Set Content-Type to `type`, mapping values from `request.types`.\n *\n * Examples:\n *\n *      superagent.types.xml = 'application/xml';\n *\n *      request.post('/')\n *        .type('xml')\n *        .send(xmlstring)\n *        .end(callback);\n *\n *      request.post('/')\n *        .type('application/xml')\n *        .send(xmlstring)\n *        .end(callback);\n *\n * @param {String} type\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.type = function(type){\n  this.set('Content-Type', request.types[type] || type);\n  return this;\n};\n\n/**\n * Force given parser\n *\n * Sets the body parser no matter type.\n *\n * @param {Function}\n * @api public\n */\n\nRequest.prototype.parse = function(fn){\n  this._parser = fn;\n  return this;\n};\n\n/**\n * Set Accept to `type`, mapping values from `request.types`.\n *\n * Examples:\n *\n *      superagent.types.json = 'application/json';\n *\n *      request.get('/agent')\n *        .accept('json')\n *        .end(callback);\n *\n *      request.get('/agent')\n *        .accept('application/json')\n *        .end(callback);\n *\n * @param {String} accept\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.accept = function(type){\n  this.set('Accept', request.types[type] || type);\n  return this;\n};\n\n/**\n * Set Authorization field value with `user` and `pass`.\n *\n * @param {String} user\n * @param {String} pass\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.auth = function(user, pass){\n  var str = btoa(user + ':' + pass);\n  this.set('Authorization', 'Basic ' + str);\n  return this;\n};\n\n/**\n* Add query-string `val`.\n*\n* Examples:\n*\n*   request.get('/shoes')\n*     .query('size=10')\n*     .query({ color: 'blue' })\n*\n* @param {Object|String} val\n* @return {Request} for chaining\n* @api public\n*/\n\nRequest.prototype.query = function(val){\n  if ('string' != typeof val) val = serialize(val);\n  if (val) this._query.push(val);\n  return this;\n};\n\n/**\n * Write the field `name` and `val` for \"multipart/form-data\"\n * request bodies.\n *\n * ``` js\n * request.post('/upload')\n *   .field('foo', 'bar')\n *   .end(callback);\n * ```\n *\n * @param {String} name\n * @param {String|Blob|File} val\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.field = function(name, val){\n  if (!this._formData) this._formData = new root.FormData();\n  this._formData.append(name, val);\n  return this;\n};\n\n/**\n * Queue the given `file` as an attachment to the specified `field`,\n * with optional `filename`.\n *\n * ``` js\n * request.post('/upload')\n *   .attach(new Blob(['hey!'], { type: \"text/html\"}))\n *   .end(callback);\n * ```\n *\n * @param {String} field\n * @param {Blob|File} file\n * @param {String} filename\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.attach = function(field, file, filename){\n  if (!this._formData) this._formData = new root.FormData();\n  this._formData.append(field, file, filename || file.name);\n  return this;\n};\n\n/**\n * Send `data` as the request body, defaulting the `.type()` to \"json\" when\n * an object is given.\n *\n * Examples:\n *\n *       // manual json\n *       request.post('/user')\n *         .type('json')\n *         .send('{\"name\":\"tj\"}')\n *         .end(callback)\n *\n *       // auto json\n *       request.post('/user')\n *         .send({ name: 'tj' })\n *         .end(callback)\n *\n *       // manual x-www-form-urlencoded\n *       request.post('/user')\n *         .type('form')\n *         .send('name=tj')\n *         .end(callback)\n *\n *       // auto x-www-form-urlencoded\n *       request.post('/user')\n *         .type('form')\n *         .send({ name: 'tj' })\n *         .end(callback)\n *\n *       // defaults to x-www-form-urlencoded\n  *      request.post('/user')\n  *        .send('name=tobi')\n  *        .send('species=ferret')\n  *        .end(callback)\n *\n * @param {String|Object} data\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.send = function(data){\n  var obj = isObject(data);\n  var type = this.getHeader('Content-Type');\n\n  // merge\n  if (obj && isObject(this._data)) {\n    for (var key in data) {\n      this._data[key] = data[key];\n    }\n  } else if ('string' == typeof data) {\n    if (!type) this.type('form');\n    type = this.getHeader('Content-Type');\n    if ('application/x-www-form-urlencoded' == type) {\n      this._data = this._data\n        ? this._data + '&' + data\n        : data;\n    } else {\n      this._data = (this._data || '') + data;\n    }\n  } else {\n    this._data = data;\n  }\n\n  if (!obj || isHost(data)) return this;\n  if (!type) this.type('json');\n  return this;\n};\n\n/**\n * Invoke the callback with `err` and `res`\n * and handle arity check.\n *\n * @param {Error} err\n * @param {Response} res\n * @api private\n */\n\nRequest.prototype.callback = function(err, res){\n  var fn = this._callback;\n  this.clearTimeout();\n  fn(err, res);\n};\n\n/**\n * Invoke callback with x-domain error.\n *\n * @api private\n */\n\nRequest.prototype.crossDomainError = function(){\n  var err = new Error('Request has been terminated\\nPossible causes: the network is offline, Origin is not allowed by Access-Control-Allow-Origin, the page is being unloaded, etc.');\n  err.crossDomain = true;\n\n  err.status = this.status;\n  err.method = this.method;\n  err.url = this.url;\n\n  this.callback(err);\n};\n\n/**\n * Invoke callback with timeout error.\n *\n * @api private\n */\n\nRequest.prototype.timeoutError = function(){\n  var timeout = this._timeout;\n  var err = new Error('timeout of ' + timeout + 'ms exceeded');\n  err.timeout = timeout;\n  this.callback(err);\n};\n\n/**\n * Enable transmission of cookies with x-domain requests.\n *\n * Note that for this to work the origin must not be\n * using \"Access-Control-Allow-Origin\" with a wildcard,\n * and also must set \"Access-Control-Allow-Credentials\"\n * to \"true\".\n *\n * @api public\n */\n\nRequest.prototype.withCredentials = function(){\n  this._withCredentials = true;\n  return this;\n};\n\n/**\n * Initiate request, invoking callback `fn(res)`\n * with an instanceof `Response`.\n *\n * @param {Function} fn\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.end = function(fn){\n  var self = this;\n  var xhr = this.xhr = request.getXHR();\n  var query = this._query.join('&');\n  var timeout = this._timeout;\n  var data = this._formData || this._data;\n\n  // store callback\n  this._callback = fn || noop;\n\n  // state change\n  xhr.onreadystatechange = function(){\n    if (4 != xhr.readyState) return;\n\n    // In IE9, reads to any property (e.g. status) off of an aborted XHR will\n    // result in the error \"Could not complete the operation due to error c00c023f\"\n    var status;\n    try { status = xhr.status } catch(e) { status = 0; }\n\n    if (0 == status) {\n      if (self.timedout) return self.timeoutError();\n      if (self.aborted) return;\n      return self.crossDomainError();\n    }\n    self.emit('end');\n  };\n\n  // progress\n  var handleProgress = function(e){\n    if (e.total > 0) {\n      e.percent = e.loaded / e.total * 100;\n    }\n    e.direction = 'download';\n    self.emit('progress', e);\n  };\n  if (this.hasListeners('progress')) {\n    xhr.onprogress = handleProgress;\n  }\n  try {\n    if (xhr.upload && this.hasListeners('progress')) {\n      xhr.upload.onprogress = handleProgress;\n    }\n  } catch(e) {\n    // Accessing xhr.upload fails in IE from a web worker, so just pretend it doesn't exist.\n    // Reported here:\n    // https://connect.microsoft.com/IE/feedback/details/837245/xmlhttprequest-upload-throws-invalid-argument-when-used-from-web-worker-context\n  }\n\n  // timeout\n  if (timeout && !this._timer) {\n    this._timer = setTimeout(function(){\n      self.timedout = true;\n      self.abort();\n    }, timeout);\n  }\n\n  // querystring\n  if (query) {\n    query = request.serializeObject(query);\n    this.url += ~this.url.indexOf('?')\n      ? '&' + query\n      : '?' + query;\n  }\n\n  // initiate request\n  xhr.open(this.method, this.url, true);\n\n  // CORS\n  if (this._withCredentials) xhr.withCredentials = true;\n\n  // body\n  if ('GET' != this.method && 'HEAD' != this.method && 'string' != typeof data && !isHost(data)) {\n    // serialize stuff\n    var contentType = this.getHeader('Content-Type');\n    var serialize = this._parser || request.serialize[contentType ? contentType.split(';')[0] : ''];\n    if (!serialize && isJSON(contentType)) serialize = request.serialize['application/json'];\n    if (serialize) data = serialize(data);\n  }\n\n  // set header fields\n  for (var field in this.header) {\n    if (null == this.header[field]) continue;\n    xhr.setRequestHeader(field, this.header[field]);\n  }\n\n  // send stuff\n  this.emit('request', this);\n\n  // IE11 xhr.send(undefined) sends 'undefined' string as POST payload (instead of nothing)\n  // We need null here if data is undefined\n  xhr.send(typeof data !== 'undefined' ? data : null);\n  return this;\n};\n\n/**\n * Faux promise support\n *\n * @param {Function} fulfill\n * @param {Function} reject\n * @return {Request}\n */\n\nRequest.prototype.then = function (fulfill, reject) {\n  return this.end(function(err, res) {\n    err ? reject(err) : fulfill(res);\n  });\n}\n\n/**\n * Expose `Request`.\n */\n\nrequest.Request = Request;\n\n/**\n * Issue a request:\n *\n * Examples:\n *\n *    request('GET', '/users').end(callback)\n *    request('/users').end(callback)\n *    request('/users', callback)\n *\n * @param {String} method\n * @param {String|Function} url or callback\n * @return {Request}\n * @api public\n */\n\nfunction request(method, url) {\n  // callback\n  if ('function' == typeof url) {\n    return new Request('GET', method).end(url);\n  }\n\n  // url first\n  if (1 == arguments.length) {\n    return new Request('GET', method);\n  }\n\n  return new Request(method, url);\n}\n\n/**\n * GET `url` with optional callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed|Function} data or fn\n * @param {Function} fn\n * @return {Request}\n * @api public\n */\n\nrequest.get = function(url, data, fn){\n  var req = request('GET', url);\n  if ('function' == typeof data) fn = data, data = null;\n  if (data) req.query(data);\n  if (fn) req.end(fn);\n  return req;\n};\n\n/**\n * HEAD `url` with optional callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed|Function} data or fn\n * @param {Function} fn\n * @return {Request}\n * @api public\n */\n\nrequest.head = function(url, data, fn){\n  var req = request('HEAD', url);\n  if ('function' == typeof data) fn = data, data = null;\n  if (data) req.send(data);\n  if (fn) req.end(fn);\n  return req;\n};\n\n/**\n * DELETE `url` with optional callback `fn(res)`.\n *\n * @param {String} url\n * @param {Function} fn\n * @return {Request}\n * @api public\n */\n\nfunction del(url, fn){\n  var req = request('DELETE', url);\n  if (fn) req.end(fn);\n  return req;\n};\n\nrequest['del'] = del;\nrequest['delete'] = del;\n\n/**\n * PATCH `url` with optional `data` and callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed} data\n * @param {Function} fn\n * @return {Request}\n * @api public\n */\n\nrequest.patch = function(url, data, fn){\n  var req = request('PATCH', url);\n  if ('function' == typeof data) fn = data, data = null;\n  if (data) req.send(data);\n  if (fn) req.end(fn);\n  return req;\n};\n\n/**\n * POST `url` with optional `data` and callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed} data\n * @param {Function} fn\n * @return {Request}\n * @api public\n */\n\nrequest.post = function(url, data, fn){\n  var req = request('POST', url);\n  if ('function' == typeof data) fn = data, data = null;\n  if (data) req.send(data);\n  if (fn) req.end(fn);\n  return req;\n};\n\n/**\n * PUT `url` with optional `data` and callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed|Function} data or fn\n * @param {Function} fn\n * @return {Request}\n * @api public\n */\n\nrequest.put = function(url, data, fn){\n  var req = request('PUT', url);\n  if ('function' == typeof data) fn = data, data = null;\n  if (data) req.send(data);\n  if (fn) req.end(fn);\n  return req;\n};\n\n/**\n * Expose `request`.\n */\n\nmodule.exports = request;\n","\n/**\n * Expose `Emitter`.\n */\n\nmodule.exports = Emitter;\n\n/**\n * Initialize a new `Emitter`.\n *\n * @api public\n */\n\nfunction Emitter(obj) {\n  if (obj) return mixin(obj);\n};\n\n/**\n * Mixin the emitter properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */\n\nfunction mixin(obj) {\n  for (var key in Emitter.prototype) {\n    obj[key] = Emitter.prototype[key];\n  }\n  return obj;\n}\n\n/**\n * Listen on the given `event` with `fn`.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.on =\nEmitter.prototype.addEventListener = function(event, fn){\n  this._callbacks = this._callbacks || {};\n  (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\n    .push(fn);\n  return this;\n};\n\n/**\n * Adds an `event` listener that will be invoked a single\n * time then automatically removed.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.once = function(event, fn){\n  function on() {\n    this.off(event, on);\n    fn.apply(this, arguments);\n  }\n\n  on.fn = fn;\n  this.on(event, on);\n  return this;\n};\n\n/**\n * Remove the given callback for `event` or all\n * registered callbacks.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.off =\nEmitter.prototype.removeListener =\nEmitter.prototype.removeAllListeners =\nEmitter.prototype.removeEventListener = function(event, fn){\n  this._callbacks = this._callbacks || {};\n\n  // all\n  if (0 == arguments.length) {\n    this._callbacks = {};\n    return this;\n  }\n\n  // specific event\n  var callbacks = this._callbacks['$' + event];\n  if (!callbacks) return this;\n\n  // remove all handlers\n  if (1 == arguments.length) {\n    delete this._callbacks['$' + event];\n    return this;\n  }\n\n  // remove specific handler\n  var cb;\n  for (var i = 0; i < callbacks.length; i++) {\n    cb = callbacks[i];\n    if (cb === fn || cb.fn === fn) {\n      callbacks.splice(i, 1);\n      break;\n    }\n  }\n  return this;\n};\n\n/**\n * Emit `event` with the given args.\n *\n * @param {String} event\n * @param {Mixed} ...\n * @return {Emitter}\n */\n\nEmitter.prototype.emit = function(event){\n  this._callbacks = this._callbacks || {};\n  var args = [].slice.call(arguments, 1)\n    , callbacks = this._callbacks['$' + event];\n\n  if (callbacks) {\n    callbacks = callbacks.slice(0);\n    for (var i = 0, len = callbacks.length; i < len; ++i) {\n      callbacks[i].apply(this, args);\n    }\n  }\n\n  return this;\n};\n\n/**\n * Return array of callbacks for `event`.\n *\n * @param {String} event\n * @return {Array}\n * @api public\n */\n\nEmitter.prototype.listeners = function(event){\n  this._callbacks = this._callbacks || {};\n  return this._callbacks['$' + event] || [];\n};\n\n/**\n * Check if this emitter has `event` handlers.\n *\n * @param {String} event\n * @return {Boolean}\n * @api public\n */\n\nEmitter.prototype.hasListeners = function(event){\n  return !! this.listeners(event).length;\n};\n","\n/**\n * Reduce `arr` with `fn`.\n *\n * @param {Array} arr\n * @param {Function} fn\n * @param {Mixed} initial\n *\n * TODO: combatible error handling?\n */\n\nmodule.exports = function(arr, fn, initial){  \n  var idx = 0;\n  var len = arr.length;\n  var curr = arguments.length == 3\n    ? initial\n    : arr[idx++];\n\n  while (idx < len) {\n    curr = fn.call(null, curr, arr[idx], ++idx, arr);\n  }\n  \n  return curr;\n};","/**\n * Indicates that navigation was caused by a call to history.push.\n */\n'use strict';\n\nexports.__esModule = true;\nvar PUSH = 'PUSH';\n\nexports.PUSH = PUSH;\n/**\n * Indicates that navigation was caused by a call to history.replace.\n */\nvar REPLACE = 'REPLACE';\n\nexports.REPLACE = REPLACE;\n/**\n * Indicates that navigation was caused by some other action such\n * as using a browser's back/forward buttons and/or manually manipulating\n * the URL in a browser's location bar. This is the default.\n *\n * See https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onpopstate\n * for more information.\n */\nvar POP = 'POP';\n\nexports.POP = POP;\nexports['default'] = {\n  PUSH: PUSH,\n  REPLACE: REPLACE,\n  POP: POP\n};","\"use strict\";\n\nexports.__esModule = true;\nexports.loopAsync = loopAsync;\n\nfunction loopAsync(turns, work, callback) {\n  var currentTurn = 0;\n  var isDone = false;\n\n  function done() {\n    isDone = true;\n    callback.apply(this, arguments);\n  }\n\n  function next() {\n    if (isDone) return;\n\n    if (currentTurn < turns) {\n      work.call(this, currentTurn++, next, done);\n    } else {\n      done.apply(this, arguments);\n    }\n  }\n\n  next();\n}","/*eslint-disable no-empty */\n'use strict';\n\nexports.__esModule = true;\nexports.saveState = saveState;\nexports.readState = readState;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar KeyPrefix = '@@History/';\nvar QuotaExceededError = 'QuotaExceededError';\nvar SecurityError = 'SecurityError';\n\nfunction createKey(key) {\n  return KeyPrefix + key;\n}\n\nfunction saveState(key, state) {\n  try {\n    window.sessionStorage.setItem(createKey(key), JSON.stringify(state));\n  } catch (error) {\n    if (error.name === SecurityError) {\n      // Blocking cookies in Chrome/Firefox/Safari throws SecurityError on any\n      // attempt to access window.sessionStorage.\n      process.env.NODE_ENV !== 'production' ? _warning2['default'](false, '[history] Unable to save state; sessionStorage is not available due to security settings') : undefined;\n\n      return;\n    }\n\n    if (error.name === QuotaExceededError && window.sessionStorage.length === 0) {\n      // Safari \"private mode\" throws QuotaExceededError.\n      process.env.NODE_ENV !== 'production' ? _warning2['default'](false, '[history] Unable to save state; sessionStorage is not available in Safari private mode') : undefined;\n\n      return;\n    }\n\n    throw error;\n  }\n}\n\nfunction readState(key) {\n  var json = undefined;\n  try {\n    json = window.sessionStorage.getItem(createKey(key));\n  } catch (error) {\n    if (error.name === SecurityError) {\n      // Blocking cookies in Chrome/Firefox/Safari throws SecurityError on any\n      // attempt to access window.sessionStorage.\n      process.env.NODE_ENV !== 'production' ? _warning2['default'](false, '[history] Unable to read state; sessionStorage is not available due to security settings') : undefined;\n\n      return null;\n    }\n  }\n\n  if (json) {\n    try {\n      return JSON.parse(json);\n    } catch (error) {\n      // Ignore invalid JSON.\n    }\n  }\n\n  return null;\n}","'use strict';\n\nexports.__esModule = true;\nexports.addEventListener = addEventListener;\nexports.removeEventListener = removeEventListener;\nexports.getHashPath = getHashPath;\nexports.replaceHashPath = replaceHashPath;\nexports.getWindowPath = getWindowPath;\nexports.go = go;\nexports.getUserConfirmation = getUserConfirmation;\nexports.supportsHistory = supportsHistory;\nexports.supportsGoWithoutReloadUsingHash = supportsGoWithoutReloadUsingHash;\n\nfunction addEventListener(node, event, listener) {\n  if (node.addEventListener) {\n    node.addEventListener(event, listener, false);\n  } else {\n    node.attachEvent('on' + event, listener);\n  }\n}\n\nfunction removeEventListener(node, event, listener) {\n  if (node.removeEventListener) {\n    node.removeEventListener(event, listener, false);\n  } else {\n    node.detachEvent('on' + event, listener);\n  }\n}\n\nfunction getHashPath() {\n  // We can't use window.location.hash here because it's not\n  // consistent across browsers - Firefox will pre-decode it!\n  return window.location.href.split('#')[1] || '';\n}\n\nfunction replaceHashPath(path) {\n  window.location.replace(window.location.pathname + window.location.search + '#' + path);\n}\n\nfunction getWindowPath() {\n  return window.location.pathname + window.location.search + window.location.hash;\n}\n\nfunction go(n) {\n  if (n) window.history.go(n);\n}\n\nfunction getUserConfirmation(message, callback) {\n  callback(window.confirm(message));\n}\n\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/rackt/react-router/issues/586\n */\n\nfunction supportsHistory() {\n  var ua = navigator.userAgent;\n  if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) {\n    return false;\n  }\n  // FIXME: Work around our browser history not working correctly on Chrome\n  // iOS: https://github.com/rackt/react-router/issues/2565\n  if (ua.indexOf('CriOS') !== -1) {\n    return false;\n  }\n  return window.history && 'pushState' in window.history;\n}\n\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n  var ua = navigator.userAgent;\n  return ua.indexOf('Firefox') === -1;\n}","'use strict';\n\nexports.__esModule = true;\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nexports.canUseDOM = canUseDOM;","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _ExecutionEnvironment = require('./ExecutionEnvironment');\n\nvar _DOMUtils = require('./DOMUtils');\n\nvar _createHistory = require('./createHistory');\n\nvar _createHistory2 = _interopRequireDefault(_createHistory);\n\nfunction createDOMHistory(options) {\n  var history = _createHistory2['default'](_extends({\n    getUserConfirmation: _DOMUtils.getUserConfirmation\n  }, options, {\n    go: _DOMUtils.go\n  }));\n\n  function listen(listener) {\n    !_ExecutionEnvironment.canUseDOM ? process.env.NODE_ENV !== 'production' ? _invariant2['default'](false, 'DOM history needs a DOM') : _invariant2['default'](false) : undefined;\n\n    return history.listen(listener);\n  }\n\n  return _extends({}, history, {\n    listen: listen\n  });\n}\n\nexports['default'] = createDOMHistory;\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _Actions = require('./Actions');\n\nvar _ExecutionEnvironment = require('./ExecutionEnvironment');\n\nvar _DOMUtils = require('./DOMUtils');\n\nvar _DOMStateStorage = require('./DOMStateStorage');\n\nvar _createDOMHistory = require('./createDOMHistory');\n\nvar _createDOMHistory2 = _interopRequireDefault(_createDOMHistory);\n\nvar _parsePath = require('./parsePath');\n\nvar _parsePath2 = _interopRequireDefault(_parsePath);\n\nfunction isAbsolutePath(path) {\n  return typeof path === 'string' && path.charAt(0) === '/';\n}\n\nfunction ensureSlash() {\n  var path = _DOMUtils.getHashPath();\n\n  if (isAbsolutePath(path)) return true;\n\n  _DOMUtils.replaceHashPath('/' + path);\n\n  return false;\n}\n\nfunction addQueryStringValueToPath(path, key, value) {\n  return path + (path.indexOf('?') === -1 ? '?' : '&') + (key + '=' + value);\n}\n\nfunction stripQueryStringValueFromPath(path, key) {\n  return path.replace(new RegExp('[?&]?' + key + '=[a-zA-Z0-9]+'), '');\n}\n\nfunction getQueryStringValueFromPath(path, key) {\n  var match = path.match(new RegExp('\\\\?.*?\\\\b' + key + '=(.+?)\\\\b'));\n  return match && match[1];\n}\n\nvar DefaultQueryKey = '_k';\n\nfunction createHashHistory() {\n  var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n  !_ExecutionEnvironment.canUseDOM ? process.env.NODE_ENV !== 'production' ? _invariant2['default'](false, 'Hash history needs a DOM') : _invariant2['default'](false) : undefined;\n\n  var queryKey = options.queryKey;\n\n  if (queryKey === undefined || !!queryKey) queryKey = typeof queryKey === 'string' ? queryKey : DefaultQueryKey;\n\n  function getCurrentLocation() {\n    var path = _DOMUtils.getHashPath();\n\n    var key = undefined,\n        state = undefined;\n    if (queryKey) {\n      key = getQueryStringValueFromPath(path, queryKey);\n      path = stripQueryStringValueFromPath(path, queryKey);\n\n      if (key) {\n        state = _DOMStateStorage.readState(key);\n      } else {\n        state = null;\n        key = history.createKey();\n        _DOMUtils.replaceHashPath(addQueryStringValueToPath(path, queryKey, key));\n      }\n    } else {\n      key = state = null;\n    }\n\n    var location = _parsePath2['default'](path);\n\n    return history.createLocation(_extends({}, location, { state: state }), undefined, key);\n  }\n\n  function startHashChangeListener(_ref) {\n    var transitionTo = _ref.transitionTo;\n\n    function hashChangeListener() {\n      if (!ensureSlash()) return; // Always make sure hashes are preceeded with a /.\n\n      transitionTo(getCurrentLocation());\n    }\n\n    ensureSlash();\n    _DOMUtils.addEventListener(window, 'hashchange', hashChangeListener);\n\n    return function () {\n      _DOMUtils.removeEventListener(window, 'hashchange', hashChangeListener);\n    };\n  }\n\n  function finishTransition(location) {\n    var basename = location.basename;\n    var pathname = location.pathname;\n    var search = location.search;\n    var state = location.state;\n    var action = location.action;\n    var key = location.key;\n\n    if (action === _Actions.POP) return; // Nothing to do.\n\n    var path = (basename || '') + pathname + search;\n\n    if (queryKey) {\n      path = addQueryStringValueToPath(path, queryKey, key);\n      _DOMStateStorage.saveState(key, state);\n    } else {\n      // Drop key and state.\n      location.key = location.state = null;\n    }\n\n    var currentHash = _DOMUtils.getHashPath();\n\n    if (action === _Actions.PUSH) {\n      if (currentHash !== path) {\n        window.location.hash = path;\n      } else {\n        process.env.NODE_ENV !== 'production' ? _warning2['default'](false, 'You cannot PUSH the same path using hash history') : undefined;\n      }\n    } else if (currentHash !== path) {\n      // REPLACE\n      _DOMUtils.replaceHashPath(path);\n    }\n  }\n\n  var history = _createDOMHistory2['default'](_extends({}, options, {\n    getCurrentLocation: getCurrentLocation,\n    finishTransition: finishTransition,\n    saveState: _DOMStateStorage.saveState\n  }));\n\n  var listenerCount = 0,\n      stopHashChangeListener = undefined;\n\n  function listenBefore(listener) {\n    if (++listenerCount === 1) stopHashChangeListener = startHashChangeListener(history);\n\n    var unlisten = history.listenBefore(listener);\n\n    return function () {\n      unlisten();\n\n      if (--listenerCount === 0) stopHashChangeListener();\n    };\n  }\n\n  function listen(listener) {\n    if (++listenerCount === 1) stopHashChangeListener = startHashChangeListener(history);\n\n    var unlisten = history.listen(listener);\n\n    return function () {\n      unlisten();\n\n      if (--listenerCount === 0) stopHashChangeListener();\n    };\n  }\n\n  function push(location) {\n    process.env.NODE_ENV !== 'production' ? _warning2['default'](queryKey || location.state == null, 'You cannot use state without a queryKey it will be dropped') : undefined;\n\n    history.push(location);\n  }\n\n  function replace(location) {\n    process.env.NODE_ENV !== 'production' ? _warning2['default'](queryKey || location.state == null, 'You cannot use state without a queryKey it will be dropped') : undefined;\n\n    history.replace(location);\n  }\n\n  var goIsSupportedWithoutReload = _DOMUtils.supportsGoWithoutReloadUsingHash();\n\n  function go(n) {\n    process.env.NODE_ENV !== 'production' ? _warning2['default'](goIsSupportedWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : undefined;\n\n    history.go(n);\n  }\n\n  function createHref(path) {\n    return '#' + history.createHref(path);\n  }\n\n  // deprecated\n  function registerTransitionHook(hook) {\n    if (++listenerCount === 1) stopHashChangeListener = startHashChangeListener(history);\n\n    history.registerTransitionHook(hook);\n  }\n\n  // deprecated\n  function unregisterTransitionHook(hook) {\n    history.unregisterTransitionHook(hook);\n\n    if (--listenerCount === 0) stopHashChangeListener();\n  }\n\n  // deprecated\n  function pushState(state, path) {\n    process.env.NODE_ENV !== 'production' ? _warning2['default'](queryKey || state == null, 'You cannot use state without a queryKey it will be dropped') : undefined;\n\n    history.pushState(state, path);\n  }\n\n  // deprecated\n  function replaceState(state, path) {\n    process.env.NODE_ENV !== 'production' ? _warning2['default'](queryKey || state == null, 'You cannot use state without a queryKey it will be dropped') : undefined;\n\n    history.replaceState(state, path);\n  }\n\n  return _extends({}, history, {\n    listenBefore: listenBefore,\n    listen: listen,\n    push: push,\n    replace: replace,\n    go: go,\n    createHref: createHref,\n\n    registerTransitionHook: registerTransitionHook, // deprecated - warning is in createHistory\n    unregisterTransitionHook: unregisterTransitionHook, // deprecated - warning is in createHistory\n    pushState: pushState, // deprecated - warning is in createHistory\n    replaceState: replaceState // deprecated - warning is in createHistory\n  });\n}\n\nexports['default'] = createHashHistory;\nmodule.exports = exports['default'];","//import warning from 'warning'\n'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _deepEqual = require('deep-equal');\n\nvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\nvar _AsyncUtils = require('./AsyncUtils');\n\nvar _Actions = require('./Actions');\n\nvar _createLocation2 = require('./createLocation');\n\nvar _createLocation3 = _interopRequireDefault(_createLocation2);\n\nvar _runTransitionHook = require('./runTransitionHook');\n\nvar _runTransitionHook2 = _interopRequireDefault(_runTransitionHook);\n\nvar _parsePath = require('./parsePath');\n\nvar _parsePath2 = _interopRequireDefault(_parsePath);\n\nvar _deprecate = require('./deprecate');\n\nvar _deprecate2 = _interopRequireDefault(_deprecate);\n\nfunction createRandomKey(length) {\n  return Math.random().toString(36).substr(2, length);\n}\n\nfunction locationsAreEqual(a, b) {\n  return a.pathname === b.pathname && a.search === b.search &&\n  //a.action === b.action && // Different action !== location change.\n  a.key === b.key && _deepEqual2['default'](a.state, b.state);\n}\n\nvar DefaultKeyLength = 6;\n\nfunction createHistory() {\n  var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n  var getCurrentLocation = options.getCurrentLocation;\n  var finishTransition = options.finishTransition;\n  var saveState = options.saveState;\n  var go = options.go;\n  var keyLength = options.keyLength;\n  var getUserConfirmation = options.getUserConfirmation;\n\n  if (typeof keyLength !== 'number') keyLength = DefaultKeyLength;\n\n  var transitionHooks = [];\n\n  function listenBefore(hook) {\n    transitionHooks.push(hook);\n\n    return function () {\n      transitionHooks = transitionHooks.filter(function (item) {\n        return item !== hook;\n      });\n    };\n  }\n\n  var allKeys = [];\n  var changeListeners = [];\n  var location = undefined;\n\n  function getCurrent() {\n    if (pendingLocation && pendingLocation.action === _Actions.POP) {\n      return allKeys.indexOf(pendingLocation.key);\n    } else if (location) {\n      return allKeys.indexOf(location.key);\n    } else {\n      return -1;\n    }\n  }\n\n  function updateLocation(newLocation) {\n    var current = getCurrent();\n\n    location = newLocation;\n\n    if (location.action === _Actions.PUSH) {\n      allKeys = [].concat(allKeys.slice(0, current + 1), [location.key]);\n    } else if (location.action === _Actions.REPLACE) {\n      allKeys[current] = location.key;\n    }\n\n    changeListeners.forEach(function (listener) {\n      listener(location);\n    });\n  }\n\n  function listen(listener) {\n    changeListeners.push(listener);\n\n    if (location) {\n      listener(location);\n    } else {\n      var _location = getCurrentLocation();\n      allKeys = [_location.key];\n      updateLocation(_location);\n    }\n\n    return function () {\n      changeListeners = changeListeners.filter(function (item) {\n        return item !== listener;\n      });\n    };\n  }\n\n  function confirmTransitionTo(location, callback) {\n    _AsyncUtils.loopAsync(transitionHooks.length, function (index, next, done) {\n      _runTransitionHook2['default'](transitionHooks[index], location, function (result) {\n        if (result != null) {\n          done(result);\n        } else {\n          next();\n        }\n      });\n    }, function (message) {\n      if (getUserConfirmation && typeof message === 'string') {\n        getUserConfirmation(message, function (ok) {\n          callback(ok !== false);\n        });\n      } else {\n        callback(message !== false);\n      }\n    });\n  }\n\n  var pendingLocation = undefined;\n\n  function transitionTo(nextLocation) {\n    if (location && locationsAreEqual(location, nextLocation)) return; // Nothing to do.\n\n    pendingLocation = nextLocation;\n\n    confirmTransitionTo(nextLocation, function (ok) {\n      if (pendingLocation !== nextLocation) return; // Transition was interrupted.\n\n      if (ok) {\n        // treat PUSH to current path like REPLACE to be consistent with browsers\n        if (nextLocation.action === _Actions.PUSH) {\n          var prevPath = createPath(location);\n          var nextPath = createPath(nextLocation);\n\n          if (nextPath === prevPath) nextLocation.action = _Actions.REPLACE;\n        }\n\n        if (finishTransition(nextLocation) !== false) updateLocation(nextLocation);\n      } else if (location && nextLocation.action === _Actions.POP) {\n        var prevIndex = allKeys.indexOf(location.key);\n        var nextIndex = allKeys.indexOf(nextLocation.key);\n\n        if (prevIndex !== -1 && nextIndex !== -1) go(prevIndex - nextIndex); // Restore the URL.\n      }\n    });\n  }\n\n  function push(location) {\n    transitionTo(createLocation(location, _Actions.PUSH, createKey()));\n  }\n\n  function replace(location) {\n    transitionTo(createLocation(location, _Actions.REPLACE, createKey()));\n  }\n\n  function goBack() {\n    go(-1);\n  }\n\n  function goForward() {\n    go(1);\n  }\n\n  function createKey() {\n    return createRandomKey(keyLength);\n  }\n\n  function createPath(location) {\n    if (location == null || typeof location === 'string') return location;\n\n    var pathname = location.pathname;\n    var search = location.search;\n    var hash = location.hash;\n\n    var result = pathname;\n\n    if (search) result += search;\n\n    if (hash) result += hash;\n\n    return result;\n  }\n\n  function createHref(location) {\n    return createPath(location);\n  }\n\n  function createLocation(location, action) {\n    var key = arguments.length <= 2 || arguments[2] === undefined ? createKey() : arguments[2];\n\n    if (typeof action === 'object') {\n      //warning(\n      //  false,\n      //  'The state (2nd) argument to history.createLocation is deprecated; use a ' +\n      //  'location descriptor instead'\n      //)\n\n      if (typeof location === 'string') location = _parsePath2['default'](location);\n\n      location = _extends({}, location, { state: action });\n\n      action = key;\n      key = arguments[3] || createKey();\n    }\n\n    return _createLocation3['default'](location, action, key);\n  }\n\n  // deprecated\n  function setState(state) {\n    if (location) {\n      updateLocationState(location, state);\n      updateLocation(location);\n    } else {\n      updateLocationState(getCurrentLocation(), state);\n    }\n  }\n\n  function updateLocationState(location, state) {\n    location.state = _extends({}, location.state, state);\n    saveState(location.key, location.state);\n  }\n\n  // deprecated\n  function registerTransitionHook(hook) {\n    if (transitionHooks.indexOf(hook) === -1) transitionHooks.push(hook);\n  }\n\n  // deprecated\n  function unregisterTransitionHook(hook) {\n    transitionHooks = transitionHooks.filter(function (item) {\n      return item !== hook;\n    });\n  }\n\n  // deprecated\n  function pushState(state, path) {\n    if (typeof path === 'string') path = _parsePath2['default'](path);\n\n    push(_extends({ state: state }, path));\n  }\n\n  // deprecated\n  function replaceState(state, path) {\n    if (typeof path === 'string') path = _parsePath2['default'](path);\n\n    replace(_extends({ state: state }, path));\n  }\n\n  return {\n    listenBefore: listenBefore,\n    listen: listen,\n    transitionTo: transitionTo,\n    push: push,\n    replace: replace,\n    go: go,\n    goBack: goBack,\n    goForward: goForward,\n    createKey: createKey,\n    createPath: createPath,\n    createHref: createHref,\n    createLocation: createLocation,\n\n    setState: _deprecate2['default'](setState, 'setState is deprecated; use location.key to save state instead'),\n    registerTransitionHook: _deprecate2['default'](registerTransitionHook, 'registerTransitionHook is deprecated; use listenBefore instead'),\n    unregisterTransitionHook: _deprecate2['default'](unregisterTransitionHook, 'unregisterTransitionHook is deprecated; use the callback returned from listenBefore instead'),\n    pushState: _deprecate2['default'](pushState, 'pushState is deprecated; use push instead'),\n    replaceState: _deprecate2['default'](replaceState, 'replaceState is deprecated; use replace instead')\n  };\n}\n\nexports['default'] = createHistory;\nmodule.exports = exports['default'];","//import warning from 'warning'\n'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _Actions = require('./Actions');\n\nvar _parsePath = require('./parsePath');\n\nvar _parsePath2 = _interopRequireDefault(_parsePath);\n\nfunction createLocation() {\n  var location = arguments.length <= 0 || arguments[0] === undefined ? '/' : arguments[0];\n  var action = arguments.length <= 1 || arguments[1] === undefined ? _Actions.POP : arguments[1];\n  var key = arguments.length <= 2 || arguments[2] === undefined ? null : arguments[2];\n\n  var _fourthArg = arguments.length <= 3 || arguments[3] === undefined ? null : arguments[3];\n\n  if (typeof location === 'string') location = _parsePath2['default'](location);\n\n  if (typeof action === 'object') {\n    //warning(\n    //  false,\n    //  'The state (2nd) argument to createLocation is deprecated; use a ' +\n    //  'location descriptor instead'\n    //)\n\n    location = _extends({}, location, { state: action });\n\n    action = key || _Actions.POP;\n    key = _fourthArg;\n  }\n\n  var pathname = location.pathname || '/';\n  var search = location.search || '';\n  var hash = location.hash || '';\n  var state = location.state || null;\n\n  return {\n    pathname: pathname,\n    search: search,\n    hash: hash,\n    state: state,\n    action: action,\n    key: key\n  };\n}\n\nexports['default'] = createLocation;\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _Actions = require('./Actions');\n\nvar _createHistory = require('./createHistory');\n\nvar _createHistory2 = _interopRequireDefault(_createHistory);\n\nvar _parsePath = require('./parsePath');\n\nvar _parsePath2 = _interopRequireDefault(_parsePath);\n\nfunction createStateStorage(entries) {\n  return entries.filter(function (entry) {\n    return entry.state;\n  }).reduce(function (memo, entry) {\n    memo[entry.key] = entry.state;\n    return memo;\n  }, {});\n}\n\nfunction createMemoryHistory() {\n  var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n  if (Array.isArray(options)) {\n    options = { entries: options };\n  } else if (typeof options === 'string') {\n    options = { entries: [options] };\n  }\n\n  var history = _createHistory2['default'](_extends({}, options, {\n    getCurrentLocation: getCurrentLocation,\n    finishTransition: finishTransition,\n    saveState: saveState,\n    go: go\n  }));\n\n  var _options = options;\n  var entries = _options.entries;\n  var current = _options.current;\n\n  if (typeof entries === 'string') {\n    entries = [entries];\n  } else if (!Array.isArray(entries)) {\n    entries = ['/'];\n  }\n\n  entries = entries.map(function (entry) {\n    var key = history.createKey();\n\n    if (typeof entry === 'string') return { pathname: entry, key: key };\n\n    if (typeof entry === 'object' && entry) return _extends({}, entry, { key: key });\n\n    !false ? process.env.NODE_ENV !== 'production' ? _invariant2['default'](false, 'Unable to create history entry from %s', entry) : _invariant2['default'](false) : undefined;\n  });\n\n  if (current == null) {\n    current = entries.length - 1;\n  } else {\n    !(current >= 0 && current < entries.length) ? process.env.NODE_ENV !== 'production' ? _invariant2['default'](false, 'Current index must be >= 0 and < %s, was %s', entries.length, current) : _invariant2['default'](false) : undefined;\n  }\n\n  var storage = createStateStorage(entries);\n\n  function saveState(key, state) {\n    storage[key] = state;\n  }\n\n  function readState(key) {\n    return storage[key];\n  }\n\n  function getCurrentLocation() {\n    var entry = entries[current];\n    var key = entry.key;\n    var basename = entry.basename;\n    var pathname = entry.pathname;\n    var search = entry.search;\n\n    var path = (basename || '') + pathname + (search || '');\n\n    var state = undefined;\n    if (key) {\n      state = readState(key);\n    } else {\n      state = null;\n      key = history.createKey();\n      entry.key = key;\n    }\n\n    var location = _parsePath2['default'](path);\n\n    return history.createLocation(_extends({}, location, { state: state }), undefined, key);\n  }\n\n  function canGo(n) {\n    var index = current + n;\n    return index >= 0 && index < entries.length;\n  }\n\n  function go(n) {\n    if (n) {\n      if (!canGo(n)) {\n        process.env.NODE_ENV !== 'production' ? _warning2['default'](false, 'Cannot go(%s) there is not enough history', n) : undefined;\n        return;\n      }\n\n      current += n;\n\n      var currentLocation = getCurrentLocation();\n\n      // change action to POP\n      history.transitionTo(_extends({}, currentLocation, { action: _Actions.POP }));\n    }\n  }\n\n  function finishTransition(location) {\n    switch (location.action) {\n      case _Actions.PUSH:\n        current += 1;\n\n        // if we are not on the top of stack\n        // remove rest and push new\n        if (current < entries.length) entries.splice(current);\n\n        entries.push(location);\n        saveState(location.key, location.state);\n        break;\n      case _Actions.REPLACE:\n        entries[current] = location;\n        saveState(location.key, location.state);\n        break;\n    }\n  }\n\n  return history;\n}\n\nexports['default'] = createMemoryHistory;\nmodule.exports = exports['default'];","//import warning from 'warning'\n\n\"use strict\";\n\nexports.__esModule = true;\nfunction deprecate(fn) {\n  return fn;\n  //return function () {\n  //  warning(false, '[history] ' + message)\n  //  return fn.apply(this, arguments)\n  //}\n}\n\nexports[\"default\"] = deprecate;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nfunction extractPath(string) {\n  var match = string.match(/^https?:\\/\\/[^\\/]*/);\n\n  if (match == null) return string;\n\n  return string.substring(match[0].length);\n}\n\nexports[\"default\"] = extractPath;\nmodule.exports = exports[\"default\"];","'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _extractPath = require('./extractPath');\n\nvar _extractPath2 = _interopRequireDefault(_extractPath);\n\nfunction parsePath(path) {\n  var pathname = _extractPath2['default'](path);\n  var search = '';\n  var hash = '';\n\n  process.env.NODE_ENV !== 'production' ? _warning2['default'](path === pathname, 'A path must be pathname + search + hash only, not a fully qualified URL like \"%s\"', path) : undefined;\n\n  var hashIndex = pathname.indexOf('#');\n  if (hashIndex !== -1) {\n    hash = pathname.substring(hashIndex);\n    pathname = pathname.substring(0, hashIndex);\n  }\n\n  var searchIndex = pathname.indexOf('?');\n  if (searchIndex !== -1) {\n    search = pathname.substring(searchIndex);\n    pathname = pathname.substring(0, searchIndex);\n  }\n\n  if (pathname === '') pathname = '/';\n\n  return {\n    pathname: pathname,\n    search: search,\n    hash: hash\n  };\n}\n\nexports['default'] = parsePath;\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction runTransitionHook(hook, location, callback) {\n  var result = hook(location, callback);\n\n  if (hook.length < 2) {\n    // Assume the hook runs synchronously and automatically\n    // call the callback with the return value.\n    callback(result);\n  } else {\n    process.env.NODE_ENV !== 'production' ? _warning2['default'](result === undefined, 'You should not \"return\" in a transition hook with a callback argument; call the callback instead') : undefined;\n  }\n}\n\nexports['default'] = runTransitionHook;\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nvar _ExecutionEnvironment = require('./ExecutionEnvironment');\n\nvar _runTransitionHook = require('./runTransitionHook');\n\nvar _runTransitionHook2 = _interopRequireDefault(_runTransitionHook);\n\nvar _extractPath = require('./extractPath');\n\nvar _extractPath2 = _interopRequireDefault(_extractPath);\n\nvar _parsePath = require('./parsePath');\n\nvar _parsePath2 = _interopRequireDefault(_parsePath);\n\nvar _deprecate = require('./deprecate');\n\nvar _deprecate2 = _interopRequireDefault(_deprecate);\n\nfunction useBasename(createHistory) {\n  return function () {\n    var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n    var basename = options.basename;\n\n    var historyOptions = _objectWithoutProperties(options, ['basename']);\n\n    var history = createHistory(historyOptions);\n\n    // Automatically use the value of  in HTML\n    // documents as basename if it's not explicitly given.\n    if (basename == null && _ExecutionEnvironment.canUseDOM) {\n      var base = document.getElementsByTagName('base')[0];\n\n      if (base) basename = _extractPath2['default'](base.href);\n    }\n\n    function addBasename(location) {\n      if (basename && location.basename == null) {\n        if (location.pathname.indexOf(basename) === 0) {\n          location.pathname = location.pathname.substring(basename.length);\n          location.basename = basename;\n\n          if (location.pathname === '') location.pathname = '/';\n        } else {\n          location.basename = '';\n        }\n      }\n\n      return location;\n    }\n\n    function prependBasename(location) {\n      if (!basename) return location;\n\n      if (typeof location === 'string') location = _parsePath2['default'](location);\n\n      var pname = location.pathname;\n      var normalizedBasename = basename.slice(-1) === '/' ? basename : basename + '/';\n      var normalizedPathname = pname.charAt(0) === '/' ? pname.slice(1) : pname;\n      var pathname = normalizedBasename + normalizedPathname;\n\n      return _extends({}, location, {\n        pathname: pathname\n      });\n    }\n\n    // Override all read methods with basename-aware versions.\n    function listenBefore(hook) {\n      return history.listenBefore(function (location, callback) {\n        _runTransitionHook2['default'](hook, addBasename(location), callback);\n      });\n    }\n\n    function listen(listener) {\n      return history.listen(function (location) {\n        listener(addBasename(location));\n      });\n    }\n\n    // Override all write methods with basename-aware versions.\n    function push(location) {\n      history.push(prependBasename(location));\n    }\n\n    function replace(location) {\n      history.replace(prependBasename(location));\n    }\n\n    function createPath(location) {\n      return history.createPath(prependBasename(location));\n    }\n\n    function createHref(location) {\n      return history.createHref(prependBasename(location));\n    }\n\n    function createLocation() {\n      return addBasename(history.createLocation.apply(history, arguments));\n    }\n\n    // deprecated\n    function pushState(state, path) {\n      if (typeof path === 'string') path = _parsePath2['default'](path);\n\n      push(_extends({ state: state }, path));\n    }\n\n    // deprecated\n    function replaceState(state, path) {\n      if (typeof path === 'string') path = _parsePath2['default'](path);\n\n      replace(_extends({ state: state }, path));\n    }\n\n    return _extends({}, history, {\n      listenBefore: listenBefore,\n      listen: listen,\n      push: push,\n      replace: replace,\n      createPath: createPath,\n      createHref: createHref,\n      createLocation: createLocation,\n\n      pushState: _deprecate2['default'](pushState, 'pushState is deprecated; use push instead'),\n      replaceState: _deprecate2['default'](replaceState, 'replaceState is deprecated; use replace instead')\n    });\n  };\n}\n\nexports['default'] = useBasename;\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _queryString = require('query-string');\n\nvar _runTransitionHook = require('./runTransitionHook');\n\nvar _runTransitionHook2 = _interopRequireDefault(_runTransitionHook);\n\nvar _parsePath = require('./parsePath');\n\nvar _parsePath2 = _interopRequireDefault(_parsePath);\n\nvar _deprecate = require('./deprecate');\n\nvar _deprecate2 = _interopRequireDefault(_deprecate);\n\nvar SEARCH_BASE_KEY = '$searchBase';\n\nfunction defaultStringifyQuery(query) {\n  return _queryString.stringify(query).replace(/%20/g, '+');\n}\n\nvar defaultParseQueryString = _queryString.parse;\n\nfunction isNestedObject(object) {\n  for (var p in object) {\n    if (object.hasOwnProperty(p) && typeof object[p] === 'object' && !Array.isArray(object[p]) && object[p] !== null) return true;\n  }return false;\n}\n\n/**\n * Returns a new createHistory function that may be used to create\n * history objects that know how to handle URL queries.\n */\nfunction useQueries(createHistory) {\n  return function () {\n    var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n    var stringifyQuery = options.stringifyQuery;\n    var parseQueryString = options.parseQueryString;\n\n    var historyOptions = _objectWithoutProperties(options, ['stringifyQuery', 'parseQueryString']);\n\n    var history = createHistory(historyOptions);\n\n    if (typeof stringifyQuery !== 'function') stringifyQuery = defaultStringifyQuery;\n\n    if (typeof parseQueryString !== 'function') parseQueryString = defaultParseQueryString;\n\n    function addQuery(location) {\n      if (location.query == null) {\n        var search = location.search;\n\n        location.query = parseQueryString(search.substring(1));\n        location[SEARCH_BASE_KEY] = { search: search, searchBase: '' };\n      }\n\n      // TODO: Instead of all the book-keeping here, this should just strip the\n      // stringified query from the search.\n\n      return location;\n    }\n\n    function appendQuery(location, query) {\n      var _extends2;\n\n      var queryString = undefined;\n      if (!query || (queryString = stringifyQuery(query)) === '') return location;\n\n      process.env.NODE_ENV !== 'production' ? _warning2['default'](stringifyQuery !== defaultStringifyQuery || !isNestedObject(query), 'useQueries does not stringify nested query objects by default; ' + 'use a custom stringifyQuery function') : undefined;\n\n      if (typeof location === 'string') location = _parsePath2['default'](location);\n\n      var searchBaseSpec = location[SEARCH_BASE_KEY];\n      var searchBase = undefined;\n      if (searchBaseSpec && location.search === searchBaseSpec.search) {\n        searchBase = searchBaseSpec.searchBase;\n      } else {\n        searchBase = location.search || '';\n      }\n\n      var search = searchBase + (searchBase ? '&' : '?') + queryString;\n\n      return _extends({}, location, (_extends2 = {\n        search: search\n      }, _extends2[SEARCH_BASE_KEY] = { search: search, searchBase: searchBase }, _extends2));\n    }\n\n    // Override all read methods with query-aware versions.\n    function listenBefore(hook) {\n      return history.listenBefore(function (location, callback) {\n        _runTransitionHook2['default'](hook, addQuery(location), callback);\n      });\n    }\n\n    function listen(listener) {\n      return history.listen(function (location) {\n        listener(addQuery(location));\n      });\n    }\n\n    // Override all write methods with query-aware versions.\n    function push(location) {\n      history.push(appendQuery(location, location.query));\n    }\n\n    function replace(location) {\n      history.replace(appendQuery(location, location.query));\n    }\n\n    function createPath(location, query) {\n      //warning(\n      //  !query,\n      //  'the query argument to createPath is deprecated; use a location descriptor instead'\n      //)\n      return history.createPath(appendQuery(location, query || location.query));\n    }\n\n    function createHref(location, query) {\n      //warning(\n      //  !query,\n      //  'the query argument to createHref is deprecated; use a location descriptor instead'\n      //)\n      return history.createHref(appendQuery(location, query || location.query));\n    }\n\n    function createLocation() {\n      return addQuery(history.createLocation.apply(history, arguments));\n    }\n\n    // deprecated\n    function pushState(state, path, query) {\n      if (typeof path === 'string') path = _parsePath2['default'](path);\n\n      push(_extends({ state: state }, path, { query: query }));\n    }\n\n    // deprecated\n    function replaceState(state, path, query) {\n      if (typeof path === 'string') path = _parsePath2['default'](path);\n\n      replace(_extends({ state: state }, path, { query: query }));\n    }\n\n    return _extends({}, history, {\n      listenBefore: listenBefore,\n      listen: listen,\n      push: push,\n      replace: replace,\n      createPath: createPath,\n      createHref: createHref,\n      createLocation: createLocation,\n\n      pushState: _deprecate2['default'](pushState, 'pushState is deprecated; use push instead'),\n      replaceState: _deprecate2['default'](replaceState, 'replaceState is deprecated; use replace instead')\n    });\n  };\n}\n\nexports['default'] = useQueries;\nmodule.exports = exports['default'];","var pSlice = Array.prototype.slice;\nvar objectKeys = require('./lib/keys.js');\nvar isArguments = require('./lib/is_arguments.js');\n\nvar deepEqual = module.exports = function (actual, expected, opts) {\n  if (!opts) opts = {};\n  // 7.1. All identical values are equivalent, as determined by ===.\n  if (actual === expected) {\n    return true;\n\n  } else if (actual instanceof Date && expected instanceof Date) {\n    return actual.getTime() === expected.getTime();\n\n  // 7.3. Other pairs that do not both pass typeof value == 'object',\n  // equivalence is determined by ==.\n  } else if (!actual || !expected || typeof actual != 'object' && typeof expected != 'object') {\n    return opts.strict ? actual === expected : actual == expected;\n\n  // 7.4. For all other Object pairs, including Array objects, equivalence is\n  // determined by having the same number of owned properties (as verified\n  // with Object.prototype.hasOwnProperty.call), the same set of keys\n  // (although not necessarily the same order), equivalent values for every\n  // corresponding key, and an identical 'prototype' property. Note: this\n  // accounts for both named and indexed properties on Arrays.\n  } else {\n    return objEquiv(actual, expected, opts);\n  }\n}\n\nfunction isUndefinedOrNull(value) {\n  return value === null || value === undefined;\n}\n\nfunction isBuffer (x) {\n  if (!x || typeof x !== 'object' || typeof x.length !== 'number') return false;\n  if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n    return false;\n  }\n  if (x.length > 0 && typeof x[0] !== 'number') return false;\n  return true;\n}\n\nfunction objEquiv(a, b, opts) {\n  var i, key;\n  if (isUndefinedOrNull(a) || isUndefinedOrNull(b))\n    return false;\n  // an identical 'prototype' property.\n  if (a.prototype !== b.prototype) return false;\n  //~~~I've managed to break Object.keys through screwy arguments passing.\n  //   Converting to array solves the problem.\n  if (isArguments(a)) {\n    if (!isArguments(b)) {\n      return false;\n    }\n    a = pSlice.call(a);\n    b = pSlice.call(b);\n    return deepEqual(a, b, opts);\n  }\n  if (isBuffer(a)) {\n    if (!isBuffer(b)) {\n      return false;\n    }\n    if (a.length !== b.length) return false;\n    for (i = 0; i < a.length; i++) {\n      if (a[i] !== b[i]) return false;\n    }\n    return true;\n  }\n  try {\n    var ka = objectKeys(a),\n        kb = objectKeys(b);\n  } catch (e) {//happens when one is a string literal and the other isn't\n    return false;\n  }\n  // having the same number of owned properties (keys incorporates\n  // hasOwnProperty)\n  if (ka.length != kb.length)\n    return false;\n  //the same set of keys (although not necessarily the same order),\n  ka.sort();\n  kb.sort();\n  //~~~cheap key test\n  for (i = ka.length - 1; i >= 0; i--) {\n    if (ka[i] != kb[i])\n      return false;\n  }\n  //equivalent values for every corresponding key, and\n  //~~~possibly expensive deep test\n  for (i = ka.length - 1; i >= 0; i--) {\n    key = ka[i];\n    if (!deepEqual(a[key], b[key], opts)) return false;\n  }\n  return typeof a === typeof b;\n}\n","var supportsArgumentsClass = (function(){\n  return Object.prototype.toString.call(arguments)\n})() == '[object Arguments]';\n\nexports = module.exports = supportsArgumentsClass ? supported : unsupported;\n\nexports.supported = supported;\nfunction supported(object) {\n  return Object.prototype.toString.call(object) == '[object Arguments]';\n};\n\nexports.unsupported = unsupported;\nfunction unsupported(object){\n  return object &&\n    typeof object == 'object' &&\n    typeof object.length == 'number' &&\n    Object.prototype.hasOwnProperty.call(object, 'callee') &&\n    !Object.prototype.propertyIsEnumerable.call(object, 'callee') ||\n    false;\n};\n","exports = module.exports = typeof Object.keys === 'function'\n  ? Object.keys : shim;\n\nexports.shim = shim;\nfunction shim (obj) {\n  var keys = [];\n  for (var key in obj) keys.push(key);\n  return keys;\n}\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\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n  if (process.env.NODE_ENV !== 'production') {\n    if (format === undefined) {\n      throw new Error('invariant requires an error message argument');\n    }\n  }\n\n  if (!condition) {\n    var error;\n    if (format === undefined) {\n      error = new Error(\n        'Minified exception occurred; use the non-minified dev environment ' +\n        'for the full error message and additional helpful warnings.'\n      );\n    } else {\n      var args = [a, b, c, d, e, f];\n      var argIndex = 0;\n      error = new Error(\n        format.replace(/%s/g, function() { return args[argIndex++]; })\n      );\n      error.name = 'Invariant Violation';\n    }\n\n    error.framesToPop = 1; // we don't care about invariant's own frame\n    throw error;\n  }\n};\n\nmodule.exports = invariant;\n","'use strict';\nvar strictUriEncode = require('strict-uri-encode');\n\nexports.extract = function (str) {\n\treturn str.split('?')[1] || '';\n};\n\nexports.parse = function (str) {\n\tif (typeof str !== 'string') {\n\t\treturn {};\n\t}\n\n\tstr = str.trim().replace(/^(\\?|#|&)/, '');\n\n\tif (!str) {\n\t\treturn {};\n\t}\n\n\treturn str.split('&').reduce(function (ret, param) {\n\t\tvar parts = param.replace(/\\+/g, ' ').split('=');\n\t\t// Firefox (pre 40) decodes `%3D` to `=`\n\t\t// https://github.com/sindresorhus/query-string/pull/37\n\t\tvar key = parts.shift();\n\t\tvar val = parts.length > 0 ? parts.join('=') : undefined;\n\n\t\tkey = decodeURIComponent(key);\n\n\t\t// missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tval = val === undefined ? null : decodeURIComponent(val);\n\n\t\tif (!ret.hasOwnProperty(key)) {\n\t\t\tret[key] = val;\n\t\t} else if (Array.isArray(ret[key])) {\n\t\t\tret[key].push(val);\n\t\t} else {\n\t\t\tret[key] = [ret[key], val];\n\t\t}\n\n\t\treturn ret;\n\t}, {});\n};\n\nexports.stringify = function (obj) {\n\treturn obj ? Object.keys(obj).sort().map(function (key) {\n\t\tvar val = obj[key];\n\n\t\tif (val === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (val === null) {\n\t\t\treturn key;\n\t\t}\n\n\t\tif (Array.isArray(val)) {\n\t\t\treturn val.sort().map(function (val2) {\n\t\t\t\treturn strictUriEncode(key) + '=' + strictUriEncode(val2);\n\t\t\t}).join('&');\n\t\t}\n\n\t\treturn strictUriEncode(key) + '=' + strictUriEncode(val);\n\t}).filter(function (x) {\n\t\treturn x.length > 0;\n\t}).join('&') : '';\n};\n","'use strict';\nmodule.exports = function (str) {\n\treturn encodeURIComponent(str).replace(/[!'()*]/g, function (c) {\n\t\treturn '%' + c.charCodeAt(0).toString(16).toUpperCase();\n\t});\n};\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\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar warning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n  warning = function(condition, format, args) {\n    var len = arguments.length;\n    args = new Array(len > 2 ? len - 2 : 0);\n    for (var key = 2; key < len; key++) {\n      args[key - 2] = arguments[key];\n    }\n    if (format === undefined) {\n      throw new Error(\n        '`warning(condition, format, ...args)` requires a warning ' +\n        'message argument'\n      );\n    }\n\n    if (format.length < 10 || (/^[s\\W]*$/).test(format)) {\n      throw new Error(\n        'The warning format should be able to uniquely identify this ' +\n        'warning. Please, use a more descriptive format than: ' + format\n      );\n    }\n\n    if (!condition) {\n      var argIndex = 0;\n      var message = 'Warning: ' +\n        format.replace(/%s/g, function() {\n          return args[argIndex++];\n        });\n      if (typeof console !== 'undefined') {\n        console.error(message);\n      }\n      try {\n        // This error was thrown as a convenience so that you can use this stack\n        // to find the callsite that caused this warning to fire.\n        throw new Error(message);\n      } catch(x) {}\n    }\n  };\n}\n\nmodule.exports = warning;\n","var m = require('./lib/core.js'),\n    IntlPolyfill = m['default'];\n\n// Expose `IntlPolyfill` as global to add locale data into runtime later on.\nglobal.IntlPolyfill = IntlPolyfill;\n\n// Require all locale data for `Intl`. This module will be\n// ignored when bundling for the browser with Browserify/Webpack.\nrequire('./locale-data/complete.js');\n\n// hack to export the polyfill as global Intl if needed\nif (!global.Intl) {\n    global.Intl = IntlPolyfill;\n    IntlPolyfill.__applyLocaleSensitivePrototypes();\n}\n\n// providing an idiomatic api for the nodejs version of this module\nmodule.exports = exports = IntlPolyfill;\n// preserving the original api in case another module is relying on that\nexports['default'] = IntlPolyfill;\n","/* jslint esnext: true */\n\n// Match these datetime components in a CLDR pattern, except those in single quotes\n\"use strict\";\nexports.createDateTimeFormat = createDateTimeFormat, exports.createDateTimeFormats = createDateTimeFormats;\nvar expDTComponents = /(?:[Eec]{1,6}|G{1,5}|[Qq]{1,5}|(?:[yYur]+|U{1,5})|[ML]{1,5}|d{1,2}|D{1,3}|F{1}|[abB]{1,5}|[hkHK]{1,2}|w{1,2}|W{1}|m{1,2}|s{1,2}|[zZOvVxX]{1,4})(?=([^']*'[^']*')*[^']*$)/g;\n// trim patterns after transformations\nvar expPatternTrimmer = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g;\n// Skip over patterns with these datetime components because we don't have data\n// to back them up:\n// timezone, weekday, amoung others\nvar unwantedDTCs = /[rqQxXVOvZASjJgwWIQq]/;\n\nvar dtKeys = [\"weekday\", \"era\", \"year\", \"month\", \"day\", \"weekday\", \"quarter\"];\nvar tmKeys = [\"hour\", \"minute\", \"second\", \"hour12\", \"timeZoneName\"];\n\nfunction isDateFormatOnly(obj) {\n    for (var i = 0; i < tmKeys.length; i += 1) {\n        if (obj.hasOwnProperty(tmKeys[i])) {\n            return false;\n        }\n    }\n    return true;\n}\n\nfunction isTimeFormatOnly(obj) {\n    for (var i = 0; i < dtKeys.length; i += 1) {\n        if (obj.hasOwnProperty(dtKeys[i])) {\n            return false;\n        }\n    }\n    return true;\n}\n\nfunction joinDateAndTimeFormats(dateFormatObj, timeFormatObj) {\n    var o = {};\n    for (var i = 0; i < dtKeys.length; i += 1) {\n        if (dateFormatObj[dtKeys[i]]) {\n            o[dtKeys[i]] = dateFormatObj[dtKeys[i]];\n        }\n    }\n    for (var j = 0; j < tmKeys.length; j += 1) {\n        if (timeFormatObj[tmKeys[j]]) {\n            o[tmKeys[j]] = timeFormatObj[tmKeys[j]];\n        }\n    }\n    return o;\n}\n\nfunction computeFinalPatterns(formatObj) {\n    // From http://www.unicode.org/reports/tr35/tr35-dates.html#Date_Format_Patterns:\n    //  'In patterns, two single quotes represents a literal single quote, either\n    //   inside or outside single quotes. Text within single quotes is not\n    //   interpreted in any way (except for two adjacent single quotes).'\n    formatObj.pattern12 = formatObj.extendedPattern.replace(/'([^']*)'/g, function ($0, literal) {\n        return literal ? literal : \"'\";\n    });\n\n    // pattern 12 is always the default. we can produce the 24 by removing {ampm}\n    formatObj.pattern = formatObj.pattern12.replace('{ampm}', '').replace(expPatternTrimmer, '');\n    return formatObj;\n}\n\nfunction createDateTimeFormat(skeleton, pattern) {\n    // we ignore certain patterns that are unsupported to avoid this expensive op.\n    if (unwantedDTCs.test(pattern))\n        return undefined;\n\n    var formatObj = {\n        originalPattern: pattern\n    };\n\n    // Replace the pattern string with the one required by the specification, whilst\n    // at the same time evaluating it for the subsets and formats\n    formatObj.extendedPattern = pattern.replace(expDTComponents, function ($0) {\n        // See which symbol we're dealing with\n        switch ($0.charAt(0)) {\n\n            // --- Era\n            case 'G':\n                return '{era}';\n\n            // --- Year\n            case 'y':\n            case 'Y':\n            case 'u':\n            case 'U':\n            case 'r':\n                return '{year}';\n\n            // --- Quarter (not supported in this polyfill)\n            case 'Q':\n            case 'q':\n                return '{quarter}';\n\n            // --- Month\n            case 'M':\n            case 'L':\n                return '{month}';\n\n            // --- Week (not supported in this polyfill)\n            case 'w':\n            case 'W':\n                return '{weekday}';\n\n            // --- Day\n            case 'd':\n            case 'D':\n            case 'F':\n            case 'g':\n                return '{day}';\n\n            // --- Week Day\n            case 'E':\n            case 'e':\n            case 'c':\n                return '{weekday}';\n\n            // --- Period\n            case 'a':\n            case 'b':\n            case 'B':\n                return '{ampm}';\n\n            // --- Hour\n            case 'h':\n            case 'H':\n            case 'k':\n            case 'K':\n                return '{hour}';\n\n            // --- Minute\n            case 'm':\n                return '{minute}';\n\n            // --- Second\n            case 's':\n            case 'S':\n            case 'A':\n                return '{second}';\n\n            // --- Timezone\n            case 'z':\n            case 'Z':\n            case 'O':\n            case 'v':\n            case 'V':\n            case 'X':\n            case 'x':\n                return '{timeZoneName}';\n\n        }\n    });\n\n    // Match the skeleton string with the one required by the specification\n    // this implementation is based on the Date Field Symbol Table:\n    // http://unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n    // Note: we are adding extra data to the formatObject even though this polyfill\n    //       might not support it.\n    skeleton.replace(expDTComponents, function ($0) {\n        // See which symbol we're dealing with\n        switch ($0.charAt(0)) {\n\n            // --- Era\n            case 'G':\n                formatObj.era = [ 'short', 'short', 'short', 'long', 'narrow' ][$0.length-1];\n                break;\n\n            // --- Year\n            case 'y':\n            case 'Y':\n            case 'u':\n            case 'U':\n                formatObj.year = $0.length === 2 ? '2-digit' : 'numeric';\n                break;\n            // case 'r':\n                // r: 1..n - For the Gregorian calendar, the 'r' year is the same as the 'u' year.\n                // break;\n\n            // --- Quarter (not supported in this polyfill)\n            case 'Q':\n            case 'q':\n                formatObj.quarter = [ 'numeric', '2-digit', 'short', 'long', 'narrow' ][$0.length-1];\n                break;\n\n            // --- Month\n            case 'M':\n            case 'L':\n                formatObj.month = [ 'numeric', '2-digit', 'short', 'long', 'narrow' ][$0.length-1];\n                break;\n\n            // --- Week (not supported in this polyfill)\n            case 'w':\n                // week of the year\n                formatObj.week = $0.length === 2 ? '2-digit' : 'numeric';\n                break;\n            case 'W':\n                // week of the month\n                formatObj.week = 'numeric';\n                break;\n\n            // --- Day\n            case 'd':\n                // day of the month\n                formatObj.day = $0.length === 2 ? '2-digit' : 'numeric';\n                break;\n            case 'D':\n                // day of the year\n                formatObj.day = 'numeric';\n                break;\n            case 'F':\n                // day of the week\n                formatObj.day = 'numeric';\n                break;\n            // case 'g':\n                // 1..n: Modified Julian day\n                // break;\n\n            // --- Week Day\n            case 'E':\n                // day of the week\n                formatObj.weekday = [ 'short', 'short', 'short', 'long', 'narrow', 'short' ][$0.length-1];\n                break;\n            case 'e':\n                // local day of the week\n                formatObj.weekday = [ 'numeric', '2-digit', 'short', 'long', 'narrow', 'short' ][$0.length-1];\n                break;\n            case 'c':\n                // stand alone local day of the week\n                formatObj.weekday = [ 'numeric', undefined, 'short', 'long', 'narrow', 'short' ][$0.length-1];\n                break;\n\n            // --- Period\n            case 'a': // AM, PM\n            case 'b': // am, pm, noon, midnight\n            case 'B': // flexible day periods\n                formatObj.hour12 = true;\n                break;\n\n            // --- Hour\n            case 'H':\n            case 'k':\n                formatObj.hour = $0.length === 2 ? '2-digit' : 'numeric';\n                break;\n            case 'h':\n            case 'K':\n                formatObj.hour12 = true; // 12-hour-cycle time formats (using h or K)\n                formatObj.hour = $0.length === 2 ? '2-digit' : 'numeric';\n                break;\n\n            // --- Minute\n            case 'm':\n                formatObj.minute = $0.length === 2 ? '2-digit' : 'numeric';\n                break;\n\n            // --- Second\n            case 's':\n                formatObj.second = $0.length === 2 ? '2-digit' : 'numeric';\n                break;\n            // case 'S': // 1..n: factional seconds\n            // case 'A': // 1..n: miliseconds in day\n\n            // --- Timezone\n            case 'z': // 1..3, 4: specific non-location format\n            case 'Z': // 1..3, 4, 5: The ISO8601 varios formats\n            case 'O': // 1, 4: miliseconds in day short, long\n            case 'v': // 1, 4: generic non-location format\n            case 'V': // 1, 2, 3, 4: time zone ID or city\n            case 'X': // 1, 2, 3, 4: The ISO8601 varios formats\n            case 'x': // 1, 2, 3, 4: The ISO8601 varios formats\n                // this polyfill only supports much, for now, we are just doing something dummy\n                formatObj.timeZoneName = $0.length < 4 ? 'short' : 'long';\n                break;\n\n        }\n    });\n\n    return computeFinalPatterns(formatObj);\n}\n\nfunction createDateTimeFormats(formats) {\n    var availableFormats = formats.availableFormats;\n    var timeFormats = formats.timeFormats;\n    var dateFormats = formats.dateFormats;\n    var result = [];\n    var skeleton, pattern, computed, i, j;\n    var timeRelatedFormats = [];\n    var dateRelatedFormats = [];\n\n    // Map available (custom) formats into a pattern for createDateTimeFormats\n    for (skeleton in availableFormats) {\n        if (availableFormats.hasOwnProperty(skeleton)) {\n            pattern = availableFormats[skeleton];\n            computed = createDateTimeFormat(skeleton, pattern);\n            if (computed) {\n                result.push(computed);\n                // in some cases, the format is only displaying date specific props\n                // or time specific props, in which case we need to also produce the\n                // combined formats.\n                if (isDateFormatOnly(computed)) {\n                    dateRelatedFormats.push(computed);\n                } else if (isTimeFormatOnly(computed)) {\n                    timeRelatedFormats.push(computed);\n                }\n            }\n        }\n    }\n\n    // Map time formats into a pattern for createDateTimeFormats\n    for (skeleton in timeFormats) {\n        if (timeFormats.hasOwnProperty(skeleton)) {\n            pattern = timeFormats[skeleton];\n            computed = createDateTimeFormat(skeleton, pattern);\n            if (computed) {\n                result.push(computed);\n                timeRelatedFormats.push(computed);\n            }\n        }\n    }\n\n    // Map date formats into a pattern for createDateTimeFormats\n    for (skeleton in dateFormats) {\n        if (dateFormats.hasOwnProperty(skeleton)) {\n            pattern = dateFormats[skeleton];\n            computed = createDateTimeFormat(skeleton, pattern);\n            if (computed) {\n                result.push(computed);\n                dateRelatedFormats.push(computed);\n            }\n        }\n    }\n\n    // combine custom time and custom date formats when they are orthogonals to complete the\n    // formats supported by CLDR.\n    // This Algo is based on section \"Missing Skeleton Fields\" from:\n    // http://unicode.org/reports/tr35/tr35-dates.html#availableFormats_appendItems\n    for (i = 0; i < timeRelatedFormats.length; i += 1) {\n        for (j = 0; j < dateRelatedFormats.length; j += 1) {\n            if (dateRelatedFormats[j].month === 'long') {\n                pattern = dateRelatedFormats[j].weekday ? formats.full : formats.long;\n            } else if (dateRelatedFormats[j].month === 'short') {\n                pattern = formats.medium;\n            } else {\n                pattern = formats.short;\n            }\n            computed = joinDateAndTimeFormats(dateRelatedFormats[j], timeRelatedFormats[i]);\n            computed.originalPattern = pattern;\n            computed.extendedPattern = pattern\n                .replace('{0}', timeRelatedFormats[i].extendedPattern)\n                .replace('{1}', dateRelatedFormats[j].extendedPattern)\n                .replace(/^[,\\s]+|[,\\s]+$/gi, '');\n            result.push(computeFinalPatterns(computed));\n        }\n    }\n\n    return result;\n}\n\n//# sourceMappingURL=cldr.js.map","/**\n * @license Copyright 2013 Andy Earnshaw, MIT License\n *\n * Implements the ECMAScript Internationalization API in ES5-compatible environments,\n * following the ECMA-402 specification as closely as possible\n *\n * ECMA-402: http://ecma-international.org/ecma-402/1.0/\n *\n * CLDR format locale data should be provided using IntlPolyfill.__addLocaleData().\n */\n/*jshint esnext: true, proto:true, eqnull:true, boss:true, laxbreak:true, newcap:false, shadow:true, funcscope:true */\n\n\"use strict\";\nvar src$exp$$ = require(\"./exp\"), src$cldr$$ = require(\"./cldr\");\n\nvar Intl = {},\n\n    realDefineProp = (function () {\n        var sentinel = {};\n        try {\n            Object.defineProperty(sentinel, 'a', {});\n            return 'a' in sentinel;\n        } catch (e) {\n            return false;\n        }\n    })(),\n\n    // Need a workaround for getters in ES3\n    es3  = !realDefineProp && !Object.prototype.__defineGetter__,\n\n    // We use this a lot (and need it for proto-less objects)\n    hop = Object.prototype.hasOwnProperty,\n\n    // Naive defineProperty for compatibility\n    defineProperty = realDefineProp ? Object.defineProperty : function (obj, name, desc) {\n        if ('get' in desc && obj.__defineGetter__)\n            obj.__defineGetter__(name, desc.get);\n\n        else if (!hop.call(obj, name) || 'value' in desc)\n            obj[name] = desc.value;\n    },\n\n    // Array.prototype.indexOf, as good as we need it to be\n    arrIndexOf = Array.prototype.indexOf || function (search) {\n        /*jshint validthis:true */\n        var t = this;\n        if (!t.length)\n            return -1;\n\n        for (var i = arguments[1] || 0, max = t.length; i < max; i++) {\n            if (t[i] === search)\n                return i;\n        }\n\n        return -1;\n    },\n\n    // Create an object with the specified prototype (2nd arg required for Record)\n    objCreate = Object.create || function (proto, props) {\n        var obj;\n\n        function F() {}\n        F.prototype = proto;\n        obj = new F();\n\n        for (var k in props) {\n            if (hop.call(props, k))\n                defineProperty(obj, k, props[k]);\n        }\n\n        return obj;\n    },\n\n    // Snapshot some (hopefully still) native built-ins\n    arrSlice  = Array.prototype.slice,\n    arrConcat = Array.prototype.concat,\n    arrPush   = Array.prototype.push,\n    arrJoin   = Array.prototype.join,\n    arrShift  = Array.prototype.shift,\n    arrUnshift= Array.prototype.unshift,\n\n    // Naive Function.prototype.bind for compatibility\n    fnBind = Function.prototype.bind || function (thisObj) {\n        var fn = this,\n            args = arrSlice.call(arguments, 1);\n\n        // All our (presently) bound functions have either 1 or 0 arguments. By returning\n        // different function signatures, we can pass some tests in ES3 environments\n        if (fn.length === 1) {\n            return function (a) {\n                return fn.apply(thisObj, arrConcat.call(args, arrSlice.call(arguments)));\n            };\n        }\n        else {\n            return function () {\n                return fn.apply(thisObj, arrConcat.call(args, arrSlice.call(arguments)));\n            };\n        }\n    },\n\n    // Default locale is the first-added locale data for us\n    defaultLocale,\n\n    // Object housing internal properties for constructors\n    internals = objCreate(null),\n\n    // Keep internal properties internal\n    secret = Math.random(),\n\n    // An object map of date component keys, saves using a regex later\n    dateWidths = objCreate(null, { narrow:{}, short:{}, long:{} }),\n\n    // Each constructor prototype should be an instance of the constructor itself, but we\n    // can't initialise them as such until some locale data has been added, so this is how\n    // we keep track\n    numberFormatProtoInitialised = false,\n    dateTimeFormatProtoInitialised = false,\n\n    // Some regular expressions we're using\n    expCurrencyCode = /^[A-Z]{3}$/,\n    expUnicodeExSeq = /-u(?:-[0-9a-z]{2,8})+/gi, // See `extension` below\n\n    // IANA Subtag Registry redundant tag and subtag maps\n    redundantTags = {\n        tags: {\n            \"art-lojban\":   \"jbo\",       \"i-ami\":        \"ami\",       \"i-bnn\":       \"bnn\",  \"i-hak\":      \"hak\",\n            \"i-klingon\":    \"tlh\",       \"i-lux\":        \"lb\",        \"i-navajo\":    \"nv\",   \"i-pwn\":      \"pwn\",\n            \"i-tao\":        \"tao\",       \"i-tay\":        \"tay\",       \"i-tsu\":       \"tsu\",  \"no-bok\":     \"nb\",\n            \"no-nyn\":       \"nn\",        \"sgn-BE-FR\":    \"sfb\",       \"sgn-BE-NL\":   \"vgt\",  \"sgn-CH-DE\":  \"sgg\",\n            \"zh-guoyu\":     \"cmn\",       \"zh-hakka\":     \"hak\",       \"zh-min-nan\":  \"nan\",  \"zh-xiang\":   \"hsn\",\n            \"sgn-BR\":       \"bzs\",       \"sgn-CO\":       \"csn\",       \"sgn-DE\":      \"gsg\",  \"sgn-DK\":     \"dsl\",\n            \"sgn-ES\":       \"ssp\",       \"sgn-FR\":       \"fsl\",       \"sgn-GB\":      \"bfi\",  \"sgn-GR\":     \"gss\",\n            \"sgn-IE\":       \"isg\",       \"sgn-IT\":       \"ise\",       \"sgn-JP\":      \"jsl\",  \"sgn-MX\":     \"mfs\",\n            \"sgn-NI\":       \"ncs\",       \"sgn-NL\":       \"dse\",       \"sgn-NO\":      \"nsl\",  \"sgn-PT\":     \"psr\",\n            \"sgn-SE\":       \"swl\",       \"sgn-US\":       \"ase\",       \"sgn-ZA\":      \"sfs\",  \"zh-cmn\":     \"cmn\",\n            \"zh-cmn-Hans\":  \"cmn-Hans\",  \"zh-cmn-Hant\":  \"cmn-Hant\",  \"zh-gan\":      \"gan\",  \"zh-wuu\":     \"wuu\",\n            \"zh-yue\":       \"yue\"\n        },\n        subtags: {\n              BU: \"MM\",   DD: \"DE\",   FX: \"FR\",   TP: \"TL\",   YD: \"YE\",   ZR: \"CD\",  heploc: \"alalc97\",\n            'in': \"id\",   iw: \"he\",   ji:  \"yi\",  jw: \"jv\",   mo: \"ro\",  ayx: \"nun\", bjd: \"drl\",\n             ccq: \"rki\", cjr: \"mom\", cka: \"cmr\", cmk: \"xch\", drh: \"khk\", drw: \"prs\", gav: \"dev\",\n             hrr: \"jal\", ibi: \"opa\", kgh: \"kml\", lcq: \"ppr\", mst: \"mry\", myt: \"mry\", sca: \"hle\",\n             tie: \"ras\", tkk: \"twm\", tlw: \"weo\", tnf: \"prs\", ybd: \"rki\", yma: \"lrr\"\n        },\n        extLang: {\n            aao: [ \"aao\", \"ar\"  ], abh: [ \"abh\", \"ar\"  ], abv: [ \"abv\", \"ar\"  ], acm: [ \"acm\", \"ar\"  ],\n            acq: [ \"acq\", \"ar\"  ], acw: [ \"acw\", \"ar\"  ], acx: [ \"acx\", \"ar\"  ], acy: [ \"acy\", \"ar\"  ],\n            adf: [ \"adf\", \"ar\"  ], ads: [ \"ads\", \"sgn\" ], aeb: [ \"aeb\", \"ar\"  ], aec: [ \"aec\", \"ar\"  ],\n            aed: [ \"aed\", \"sgn\" ], aen: [ \"aen\", \"sgn\" ], afb: [ \"afb\", \"ar\"  ], afg: [ \"afg\", \"sgn\" ],\n            ajp: [ \"ajp\", \"ar\"  ], apc: [ \"apc\", \"ar\"  ], apd: [ \"apd\", \"ar\"  ], arb: [ \"arb\", \"ar\"  ],\n            arq: [ \"arq\", \"ar\"  ], ars: [ \"ars\", \"ar\"  ], ary: [ \"ary\", \"ar\"  ], arz: [ \"arz\", \"ar\"  ],\n            ase: [ \"ase\", \"sgn\" ], asf: [ \"asf\", \"sgn\" ], asp: [ \"asp\", \"sgn\" ], asq: [ \"asq\", \"sgn\" ],\n            asw: [ \"asw\", \"sgn\" ], auz: [ \"auz\", \"ar\"  ], avl: [ \"avl\", \"ar\"  ], ayh: [ \"ayh\", \"ar\"  ],\n            ayl: [ \"ayl\", \"ar\"  ], ayn: [ \"ayn\", \"ar\"  ], ayp: [ \"ayp\", \"ar\"  ], bbz: [ \"bbz\", \"ar\"  ],\n            bfi: [ \"bfi\", \"sgn\" ], bfk: [ \"bfk\", \"sgn\" ], bjn: [ \"bjn\", \"ms\"  ], bog: [ \"bog\", \"sgn\" ],\n            bqn: [ \"bqn\", \"sgn\" ], bqy: [ \"bqy\", \"sgn\" ], btj: [ \"btj\", \"ms\"  ], bve: [ \"bve\", \"ms\"  ],\n            bvl: [ \"bvl\", \"sgn\" ], bvu: [ \"bvu\", \"ms\"  ], bzs: [ \"bzs\", \"sgn\" ], cdo: [ \"cdo\", \"zh\"  ],\n            cds: [ \"cds\", \"sgn\" ], cjy: [ \"cjy\", \"zh\"  ], cmn: [ \"cmn\", \"zh\"  ], coa: [ \"coa\", \"ms\"  ],\n            cpx: [ \"cpx\", \"zh\"  ], csc: [ \"csc\", \"sgn\" ], csd: [ \"csd\", \"sgn\" ], cse: [ \"cse\", \"sgn\" ],\n            csf: [ \"csf\", \"sgn\" ], csg: [ \"csg\", \"sgn\" ], csl: [ \"csl\", \"sgn\" ], csn: [ \"csn\", \"sgn\" ],\n            csq: [ \"csq\", \"sgn\" ], csr: [ \"csr\", \"sgn\" ], czh: [ \"czh\", \"zh\"  ], czo: [ \"czo\", \"zh\"  ],\n            doq: [ \"doq\", \"sgn\" ], dse: [ \"dse\", \"sgn\" ], dsl: [ \"dsl\", \"sgn\" ], dup: [ \"dup\", \"ms\"  ],\n            ecs: [ \"ecs\", \"sgn\" ], esl: [ \"esl\", \"sgn\" ], esn: [ \"esn\", \"sgn\" ], eso: [ \"eso\", \"sgn\" ],\n            eth: [ \"eth\", \"sgn\" ], fcs: [ \"fcs\", \"sgn\" ], fse: [ \"fse\", \"sgn\" ], fsl: [ \"fsl\", \"sgn\" ],\n            fss: [ \"fss\", \"sgn\" ], gan: [ \"gan\", \"zh\"  ], gds: [ \"gds\", \"sgn\" ], gom: [ \"gom\", \"kok\" ],\n            gse: [ \"gse\", \"sgn\" ], gsg: [ \"gsg\", \"sgn\" ], gsm: [ \"gsm\", \"sgn\" ], gss: [ \"gss\", \"sgn\" ],\n            gus: [ \"gus\", \"sgn\" ], hab: [ \"hab\", \"sgn\" ], haf: [ \"haf\", \"sgn\" ], hak: [ \"hak\", \"zh\"  ],\n            hds: [ \"hds\", \"sgn\" ], hji: [ \"hji\", \"ms\"  ], hks: [ \"hks\", \"sgn\" ], hos: [ \"hos\", \"sgn\" ],\n            hps: [ \"hps\", \"sgn\" ], hsh: [ \"hsh\", \"sgn\" ], hsl: [ \"hsl\", \"sgn\" ], hsn: [ \"hsn\", \"zh\"  ],\n            icl: [ \"icl\", \"sgn\" ], ils: [ \"ils\", \"sgn\" ], inl: [ \"inl\", \"sgn\" ], ins: [ \"ins\", \"sgn\" ],\n            ise: [ \"ise\", \"sgn\" ], isg: [ \"isg\", \"sgn\" ], isr: [ \"isr\", \"sgn\" ], jak: [ \"jak\", \"ms\"  ],\n            jax: [ \"jax\", \"ms\"  ], jcs: [ \"jcs\", \"sgn\" ], jhs: [ \"jhs\", \"sgn\" ], jls: [ \"jls\", \"sgn\" ],\n            jos: [ \"jos\", \"sgn\" ], jsl: [ \"jsl\", \"sgn\" ], jus: [ \"jus\", \"sgn\" ], kgi: [ \"kgi\", \"sgn\" ],\n            knn: [ \"knn\", \"kok\" ], kvb: [ \"kvb\", \"ms\"  ], kvk: [ \"kvk\", \"sgn\" ], kvr: [ \"kvr\", \"ms\"  ],\n            kxd: [ \"kxd\", \"ms\"  ], lbs: [ \"lbs\", \"sgn\" ], lce: [ \"lce\", \"ms\"  ], lcf: [ \"lcf\", \"ms\"  ],\n            liw: [ \"liw\", \"ms\"  ], lls: [ \"lls\", \"sgn\" ], lsg: [ \"lsg\", \"sgn\" ], lsl: [ \"lsl\", \"sgn\" ],\n            lso: [ \"lso\", \"sgn\" ], lsp: [ \"lsp\", \"sgn\" ], lst: [ \"lst\", \"sgn\" ], lsy: [ \"lsy\", \"sgn\" ],\n            ltg: [ \"ltg\", \"lv\"  ], lvs: [ \"lvs\", \"lv\"  ], lzh: [ \"lzh\", \"zh\"  ], max: [ \"max\", \"ms\"  ],\n            mdl: [ \"mdl\", \"sgn\" ], meo: [ \"meo\", \"ms\"  ], mfa: [ \"mfa\", \"ms\"  ], mfb: [ \"mfb\", \"ms\"  ],\n            mfs: [ \"mfs\", \"sgn\" ], min: [ \"min\", \"ms\"  ], mnp: [ \"mnp\", \"zh\"  ], mqg: [ \"mqg\", \"ms\"  ],\n            mre: [ \"mre\", \"sgn\" ], msd: [ \"msd\", \"sgn\" ], msi: [ \"msi\", \"ms\"  ], msr: [ \"msr\", \"sgn\" ],\n            mui: [ \"mui\", \"ms\"  ], mzc: [ \"mzc\", \"sgn\" ], mzg: [ \"mzg\", \"sgn\" ], mzy: [ \"mzy\", \"sgn\" ],\n            nan: [ \"nan\", \"zh\"  ], nbs: [ \"nbs\", \"sgn\" ], ncs: [ \"ncs\", \"sgn\" ], nsi: [ \"nsi\", \"sgn\" ],\n            nsl: [ \"nsl\", \"sgn\" ], nsp: [ \"nsp\", \"sgn\" ], nsr: [ \"nsr\", \"sgn\" ], nzs: [ \"nzs\", \"sgn\" ],\n            okl: [ \"okl\", \"sgn\" ], orn: [ \"orn\", \"ms\"  ], ors: [ \"ors\", \"ms\"  ], pel: [ \"pel\", \"ms\"  ],\n            pga: [ \"pga\", \"ar\"  ], pks: [ \"pks\", \"sgn\" ], prl: [ \"prl\", \"sgn\" ], prz: [ \"prz\", \"sgn\" ],\n            psc: [ \"psc\", \"sgn\" ], psd: [ \"psd\", \"sgn\" ], pse: [ \"pse\", \"ms\"  ], psg: [ \"psg\", \"sgn\" ],\n            psl: [ \"psl\", \"sgn\" ], pso: [ \"pso\", \"sgn\" ], psp: [ \"psp\", \"sgn\" ], psr: [ \"psr\", \"sgn\" ],\n            pys: [ \"pys\", \"sgn\" ], rms: [ \"rms\", \"sgn\" ], rsi: [ \"rsi\", \"sgn\" ], rsl: [ \"rsl\", \"sgn\" ],\n            sdl: [ \"sdl\", \"sgn\" ], sfb: [ \"sfb\", \"sgn\" ], sfs: [ \"sfs\", \"sgn\" ], sgg: [ \"sgg\", \"sgn\" ],\n            sgx: [ \"sgx\", \"sgn\" ], shu: [ \"shu\", \"ar\"  ], slf: [ \"slf\", \"sgn\" ], sls: [ \"sls\", \"sgn\" ],\n            sqk: [ \"sqk\", \"sgn\" ], sqs: [ \"sqs\", \"sgn\" ], ssh: [ \"ssh\", \"ar\"  ], ssp: [ \"ssp\", \"sgn\" ],\n            ssr: [ \"ssr\", \"sgn\" ], svk: [ \"svk\", \"sgn\" ], swc: [ \"swc\", \"sw\"  ], swh: [ \"swh\", \"sw\"  ],\n            swl: [ \"swl\", \"sgn\" ], syy: [ \"syy\", \"sgn\" ], tmw: [ \"tmw\", \"ms\"  ], tse: [ \"tse\", \"sgn\" ],\n            tsm: [ \"tsm\", \"sgn\" ], tsq: [ \"tsq\", \"sgn\" ], tss: [ \"tss\", \"sgn\" ], tsy: [ \"tsy\", \"sgn\" ],\n            tza: [ \"tza\", \"sgn\" ], ugn: [ \"ugn\", \"sgn\" ], ugy: [ \"ugy\", \"sgn\" ], ukl: [ \"ukl\", \"sgn\" ],\n            uks: [ \"uks\", \"sgn\" ], urk: [ \"urk\", \"ms\"  ], uzn: [ \"uzn\", \"uz\"  ], uzs: [ \"uzs\", \"uz\"  ],\n            vgt: [ \"vgt\", \"sgn\" ], vkk: [ \"vkk\", \"ms\"  ], vkt: [ \"vkt\", \"ms\"  ], vsi: [ \"vsi\", \"sgn\" ],\n            vsl: [ \"vsl\", \"sgn\" ], vsv: [ \"vsv\", \"sgn\" ], wuu: [ \"wuu\", \"zh\"  ], xki: [ \"xki\", \"sgn\" ],\n            xml: [ \"xml\", \"sgn\" ], xmm: [ \"xmm\", \"ms\"  ], xms: [ \"xms\", \"sgn\" ], yds: [ \"yds\", \"sgn\" ],\n            ysl: [ \"ysl\", \"sgn\" ], yue: [ \"yue\", \"zh\"  ], zib: [ \"zib\", \"sgn\" ], zlm: [ \"zlm\", \"ms\"  ],\n            zmi: [ \"zmi\", \"ms\"  ], zsl: [ \"zsl\", \"sgn\" ], zsm: [ \"zsm\", \"ms\"  ]\n        }\n    },\n\n    // Currency minor units output from get-4217 grunt task, formatted\n    currencyMinorUnits = {\n        BHD: 3, BYR: 0, XOF: 0, BIF: 0, XAF: 0, CLF: 4, CLP: 0, KMF: 0, DJF: 0,\n        XPF: 0, GNF: 0, ISK: 0, IQD: 3, JPY: 0, JOD: 3, KRW: 0, KWD: 3, LYD: 3,\n        OMR: 3, PYG: 0, RWF: 0, TND: 3, UGX: 0, UYI: 0, VUV: 0, VND: 0\n    };\n\n// Sect 6.2 Language Tags\n// ======================\n\n/**\n * The IsStructurallyValidLanguageTag abstract operation verifies that the locale\n * argument (which must be a String value)\n *\n * - represents a well-formed BCP 47 language tag as specified in RFC 5646 section\n *   2.1, or successor,\n * - does not include duplicate variant subtags, and\n * - does not include duplicate singleton subtags.\n *\n * The abstract operation returns true if locale can be generated from the ABNF\n * grammar in section 2.1 of the RFC, starting with Language-Tag, and does not\n * contain duplicate variant or singleton subtags (other than as a private use\n * subtag). It returns false otherwise. Terminal value characters in the grammar are\n * interpreted as the Unicode equivalents of the ASCII octet values given.\n */\nfunction /* 6.2.2 */IsStructurallyValidLanguageTag(locale) {\n    // represents a well-formed BCP 47 language tag as specified in RFC 5646\n    if (!src$exp$$.expBCP47Syntax.test(locale))\n        return false;\n\n    // does not include duplicate variant subtags, and\n    if (src$exp$$.expVariantDupes.test(locale))\n        return false;\n\n    // does not include duplicate singleton subtags.\n    if (src$exp$$.expSingletonDupes.test(locale))\n        return false;\n\n    return true;\n}\n\n/**\n * The CanonicalizeLanguageTag abstract operation returns the canonical and case-\n * regularized form of the locale argument (which must be a String value that is\n * a structurally valid BCP 47 language tag as verified by the\n * IsStructurallyValidLanguageTag abstract operation). It takes the steps\n * specified in RFC 5646 section 4.5, or successor, to bring the language tag\n * into canonical form, and to regularize the case of the subtags, but does not\n * take the steps to bring a language tag into “extlang form” and to reorder\n * variant subtags.\n\n * The specifications for extensions to BCP 47 language tags, such as RFC 6067,\n * may include canonicalization rules for the extension subtag sequences they\n * define that go beyond the canonicalization rules of RFC 5646 section 4.5.\n * Implementations are allowed, but not required, to apply these additional rules.\n */\nfunction /* 6.2.3 */CanonicalizeLanguageTag (locale) {\n    var match, parts;\n\n    // A language tag is in 'canonical form' when the tag is well-formed\n    // according to the rules in Sections 2.1 and 2.2\n\n    // Section 2.1 says all subtags use lowercase...\n    locale = locale.toLowerCase();\n\n    // ...with 2 exceptions: 'two-letter and four-letter subtags that neither\n    // appear at the start of the tag nor occur after singletons.  Such two-letter\n    // subtags are all uppercase (as in the tags \"en-CA-x-ca\" or \"sgn-BE-FR\") and\n    // four-letter subtags are titlecase (as in the tag \"az-Latn-x-latn\").\n    parts = locale.split('-');\n    for (var i = 1, max = parts.length; i < max; i++) {\n        // Two-letter subtags are all uppercase\n        if (parts[i].length === 2)\n            parts[i] = parts[i].toUpperCase();\n\n        // Four-letter subtags are titlecase\n        else if (parts[i].length === 4)\n            parts[i] = parts[i].charAt(0).toUpperCase() + parts[i].slice(1);\n\n        // Is it a singleton?\n        else if (parts[i].length === 1 && parts[i] !== 'x')\n            break;\n    }\n    locale = arrJoin.call(parts, '-');\n\n    // The steps laid out in RFC 5646 section 4.5 are as follows:\n\n    // 1.  Extension sequences are ordered into case-insensitive ASCII order\n    //     by singleton subtag.\n    if ((match = locale.match(src$exp$$.expExtSequences)) && match.length > 1) {\n        // The built-in sort() sorts by ASCII order, so use that\n        match.sort();\n\n        // Replace all extensions with the joined, sorted array\n        locale = locale.replace(\n            RegExp('(?:' + src$exp$$.expExtSequences.source + ')+', 'i'),\n            arrJoin.call(match, '')\n        );\n    }\n\n    // 2.  Redundant or grandfathered tags are replaced by their 'Preferred-\n    //     Value', if there is one.\n    if (hop.call(redundantTags.tags, locale))\n        locale = redundantTags.tags[locale];\n\n    // 3.  Subtags are replaced by their 'Preferred-Value', if there is one.\n    //     For extlangs, the original primary language subtag is also\n    //     replaced if there is a primary language subtag in the 'Preferred-\n    //     Value'.\n    parts = locale.split('-');\n\n    for (var i = 1, max = parts.length; i < max; i++) {\n        if (hop.call(redundantTags.subtags, parts[i]))\n            parts[i] = redundantTags.subtags[parts[i]];\n\n        else if (hop.call(redundantTags.extLang, parts[i])) {\n            parts[i] = redundantTags.extLang[parts[i]][0];\n\n            // For extlang tags, the prefix needs to be removed if it is redundant\n            if (i === 1 && redundantTags.extLang[parts[1]][1] === parts[0]) {\n                parts = arrSlice.call(parts, i++);\n                max -= 1;\n            }\n        }\n    }\n\n    return arrJoin.call(parts, '-');\n}\n\n/**\n * The DefaultLocale abstract operation returns a String value representing the\n * structurally valid (6.2.2) and canonicalized (6.2.3) BCP 47 language tag for the\n * host environment’s current locale.\n */\nfunction /* 6.2.4 */DefaultLocale () {\n    return defaultLocale;\n}\n\n// Sect 6.3 Currency Codes\n// =======================\n\n/**\n * The IsWellFormedCurrencyCode abstract operation verifies that the currency argument\n * (after conversion to a String value) represents a well-formed 3-letter ISO currency\n * code. The following steps are taken:\n */\nfunction /* 6.3.1 */IsWellFormedCurrencyCode(currency) {\n    var\n        // 1. Let `c` be ToString(currency)\n        c = String(currency),\n\n        // 2. Let `normalized` be the result of mapping c to upper case as described\n        //    in 6.1.\n        normalized = toLatinUpperCase(c);\n\n    // 3. If the string length of normalized is not 3, return false.\n    // 4. If normalized contains any character that is not in the range \"A\" to \"Z\"\n    //    (U+0041 to U+005A), return false.\n    if (expCurrencyCode.test(normalized) === false)\n        return false;\n\n    // 5. Return true\n    return true;\n}\n\n// Sect 9.2 Abstract Operations\n// ============================\nfunction /* 9.2.1 */CanonicalizeLocaleList (locales) {\n// The abstract operation CanonicalizeLocaleList takes the following steps:\n\n    // 1. If locales is undefined, then a. Return a new empty List\n    if (locales === undefined)\n        return new List();\n\n    var\n        // 2. Let seen be a new empty List.\n        seen = new List(),\n\n        // 3. If locales is a String value, then\n        //    a. Let locales be a new array created as if by the expression new\n        //    Array(locales) where Array is the standard built-in constructor with\n        //    that name and locales is the value of locales.\n        locales = typeof locales === 'string' ? [ locales ] : locales,\n\n        // 4. Let O be ToObject(locales).\n        O = toObject(locales),\n\n        // 5. Let lenValue be the result of calling the [[Get]] internal method of\n        //    O with the argument \"length\".\n        // 6. Let len be ToUint32(lenValue).\n        len = O.length,\n\n        // 7. Let k be 0.\n        k = 0;\n\n    // 8. Repeat, while k < len\n    while (k < len) {\n        var\n            // a. Let Pk be ToString(k).\n            Pk = String(k),\n\n            // b. Let kPresent be the result of calling the [[HasProperty]] internal\n            //    method of O with argument Pk.\n            kPresent = Pk in O;\n\n        // c. If kPresent is true, then\n        if (kPresent) {\n            var\n                // i. Let kValue be the result of calling the [[Get]] internal\n                //     method of O with argument Pk.\n                kValue = O[Pk];\n\n            // ii. If the type of kValue is not String or Object, then throw a\n            //     TypeError exception.\n            if (kValue == null || (typeof kValue !== 'string' && typeof kValue !== 'object'))\n                throw new TypeError('String or Object type expected');\n\n            var\n                // iii. Let tag be ToString(kValue).\n                tag = String(kValue);\n\n            // iv. If the result of calling the abstract operation\n            //     IsStructurallyValidLanguageTag (defined in 6.2.2), passing tag as\n            //     the argument, is false, then throw a RangeError exception.\n            if (!IsStructurallyValidLanguageTag(tag))\n                throw new RangeError(\"'\" + tag + \"' is not a structurally valid language tag\");\n\n            // v. Let tag be the result of calling the abstract operation\n            //    CanonicalizeLanguageTag (defined in 6.2.3), passing tag as the\n            //    argument.\n            tag = CanonicalizeLanguageTag(tag);\n\n            // vi. If tag is not an element of seen, then append tag as the last\n            //     element of seen.\n            if (arrIndexOf.call(seen, tag) === -1)\n                arrPush.call(seen, tag);\n        }\n\n        // d. Increase k by 1.\n        k++;\n    }\n\n    // 9. Return seen.\n    return seen;\n}\n\n/**\n * The BestAvailableLocale abstract operation compares the provided argument\n * locale, which must be a String value with a structurally valid and\n * canonicalized BCP 47 language tag, against the locales in availableLocales and\n * returns either the longest non-empty prefix of locale that is an element of\n * availableLocales, or undefined if there is no such element. It uses the\n * fallback mechanism of RFC 4647, section 3.4. The following steps are taken:\n */\nfunction /* 9.2.2 */BestAvailableLocale (availableLocales, locale) {\n    var\n       // 1. Let candidate be locale\n       candidate = locale;\n\n    // 2. Repeat\n    while (true) {\n        // a. If availableLocales contains an element equal to candidate, then return\n        // candidate.\n        if (arrIndexOf.call(availableLocales, candidate) > -1)\n            return candidate;\n\n        var\n            // b. Let pos be the character index of the last occurrence of \"-\"\n            // (U+002D) within candidate. If that character does not occur, return\n            // undefined.\n            pos = candidate.lastIndexOf('-');\n\n        if (pos < 0)\n            return;\n\n        // c. If pos ≥ 2 and the character \"-\" occurs at index pos-2 of candidate,\n        //    then decrease pos by 2.\n        if (pos >= 2 && candidate.charAt(pos - 2) === '-')\n            pos -= 2;\n\n        // d. Let candidate be the substring of candidate from position 0, inclusive,\n        //    to position pos, exclusive.\n        candidate = candidate.substring(0, pos);\n    }\n}\n\n/**\n * The LookupMatcher abstract operation compares requestedLocales, which must be\n * a List as returned by CanonicalizeLocaleList, against the locales in\n * availableLocales and determines the best available language to meet the\n * request. The following steps are taken:\n */\nfunction /* 9.2.3 */LookupMatcher (availableLocales, requestedLocales) {\n    var\n        // 1. Let i be 0.\n        i = 0,\n\n        // 2. Let len be the number of elements in requestedLocales.\n        len = requestedLocales.length,\n\n        // 3. Let availableLocale be undefined.\n        availableLocale;\n\n    // 4. Repeat while i < len and availableLocale is undefined:\n    while (i < len && !availableLocale) {\n        var\n            // a. Let locale be the element of requestedLocales at 0-origined list\n            //    position i.\n            locale = requestedLocales[i],\n\n            // b. Let noExtensionsLocale be the String value that is locale with all\n            //    Unicode locale extension sequences removed.\n            noExtensionsLocale = String(locale).replace(expUnicodeExSeq, ''),\n\n            // c. Let availableLocale be the result of calling the\n            //    BestAvailableLocale abstract operation (defined in 9.2.2) with\n            //    arguments availableLocales and noExtensionsLocale.\n            availableLocale = BestAvailableLocale(availableLocales, noExtensionsLocale);\n\n        // d. Increase i by 1.\n        i++;\n    }\n\n    var\n        // 5. Let result be a new Record.\n        result = new Record();\n\n    // 6. If availableLocale is not undefined, then\n    if (availableLocale !== undefined) {\n        // a. Set result.[[locale]] to availableLocale.\n        result['[[locale]]'] = availableLocale;\n\n        // b. If locale and noExtensionsLocale are not the same String value, then\n        if (String(locale) !== String(noExtensionsLocale)) {\n            var\n                // i. Let extension be the String value consisting of the first\n                //    substring of locale that is a Unicode locale extension sequence.\n                extension = locale.match(expUnicodeExSeq)[0],\n\n                // ii. Let extensionIndex be the character position of the initial\n                //     \"-\" of the first Unicode locale extension sequence within locale.\n                extensionIndex = locale.indexOf('-u-');\n\n            // iii. Set result.[[extension]] to extension.\n            result['[[extension]]'] = extension;\n\n            // iv. Set result.[[extensionIndex]] to extensionIndex.\n            result['[[extensionIndex]]'] = extensionIndex;\n        }\n    }\n    // 7. Else\n    else\n        // a. Set result.[[locale]] to the value returned by the DefaultLocale abstract\n        //    operation (defined in 6.2.4).\n        result['[[locale]]'] = DefaultLocale();\n\n    // 8. Return result\n    return result;\n}\n\n/**\n * The BestFitMatcher abstract operation compares requestedLocales, which must be\n * a List as returned by CanonicalizeLocaleList, against the locales in\n * availableLocales and determines the best available language to meet the\n * request. The algorithm is implementation dependent, but should produce results\n * that a typical user of the requested locales would perceive as at least as\n * good as those produced by the LookupMatcher abstract operation. Options\n * specified through Unicode locale extension sequences must be ignored by the\n * algorithm. Information about such subsequences is returned separately.\n * The abstract operation returns a record with a [[locale]] field, whose value\n * is the language tag of the selected locale, which must be an element of\n * availableLocales. If the language tag of the request locale that led to the\n * selected locale contained a Unicode locale extension sequence, then the\n * returned record also contains an [[extension]] field whose value is the first\n * Unicode locale extension sequence, and an [[extensionIndex]] field whose value\n * is the index of the first Unicode locale extension sequence within the request\n * locale language tag.\n */\nfunction /* 9.2.4 */BestFitMatcher (availableLocales, requestedLocales) {\n    return LookupMatcher(availableLocales, requestedLocales);\n}\n\n/**\n * The ResolveLocale abstract operation compares a BCP 47 language priority list\n * requestedLocales against the locales in availableLocales and determines the\n * best available language to meet the request. availableLocales and\n * requestedLocales must be provided as List values, options as a Record.\n */\nfunction /* 9.2.5 */ResolveLocale (availableLocales, requestedLocales, options, relevantExtensionKeys, localeData) {\n    if (availableLocales.length === 0) {\n        throw new ReferenceError('No locale data has been provided for this object yet.');\n    }\n\n    // The following steps are taken:\n    var\n        // 1. Let matcher be the value of options.[[localeMatcher]].\n        matcher = options['[[localeMatcher]]'];\n\n    // 2. If matcher is \"lookup\", then\n    if (matcher === 'lookup')\n        var\n            // a. Let r be the result of calling the LookupMatcher abstract operation\n            //    (defined in 9.2.3) with arguments availableLocales and\n            //    requestedLocales.\n            r = LookupMatcher(availableLocales, requestedLocales);\n\n    // 3. Else\n    else\n        var\n            // a. Let r be the result of calling the BestFitMatcher abstract\n            //    operation (defined in 9.2.4) with arguments availableLocales and\n            //    requestedLocales.\n            r = BestFitMatcher(availableLocales, requestedLocales);\n\n    var\n        // 4. Let foundLocale be the value of r.[[locale]].\n        foundLocale = r['[[locale]]'];\n\n    // 5. If r has an [[extension]] field, then\n    if (hop.call(r, '[[extension]]'))\n        var\n            // a. Let extension be the value of r.[[extension]].\n            extension = r['[[extension]]'],\n            // b. Let extensionIndex be the value of r.[[extensionIndex]].\n            extensionIndex = r['[[extensionIndex]]'],\n            // c. Let split be the standard built-in function object defined in ES5,\n            //    15.5.4.14.\n            split = String.prototype.split,\n            // d. Let extensionSubtags be the result of calling the [[Call]] internal\n            //    method of split with extension as the this value and an argument\n            //    list containing the single item \"-\".\n            extensionSubtags = split.call(extension, '-'),\n            // e. Let extensionSubtagsLength be the result of calling the [[Get]]\n            //    internal method of extensionSubtags with argument \"length\".\n            extensionSubtagsLength = extensionSubtags.length;\n\n    var\n        // 6. Let result be a new Record.\n        result = new Record();\n\n    // 7. Set result.[[dataLocale]] to foundLocale.\n    result['[[dataLocale]]'] = foundLocale;\n\n    var\n        // 8. Let supportedExtension be \"-u\".\n        supportedExtension = '-u',\n        // 9. Let i be 0.\n        i = 0,\n        // 10. Let len be the result of calling the [[Get]] internal method of\n        //     relevantExtensionKeys with argument \"length\".\n        len = relevantExtensionKeys.length;\n\n    // 11 Repeat while i < len:\n    while (i < len) {\n        var\n            // a. Let key be the result of calling the [[Get]] internal method of\n            //    relevantExtensionKeys with argument ToString(i).\n            key = relevantExtensionKeys[i],\n            // b. Let foundLocaleData be the result of calling the [[Get]] internal\n            //    method of localeData with the argument foundLocale.\n            foundLocaleData = localeData[foundLocale],\n            // c. Let keyLocaleData be the result of calling the [[Get]] internal\n            //    method of foundLocaleData with the argument key.\n            keyLocaleData = foundLocaleData[key],\n            // d. Let value be the result of calling the [[Get]] internal method of\n            //    keyLocaleData with argument \"0\".\n            value = keyLocaleData['0'],\n            // e. Let supportedExtensionAddition be \"\".\n            supportedExtensionAddition = '',\n            // f. Let indexOf be the standard built-in function object defined in\n            //    ES5, 15.4.4.14.\n            indexOf = arrIndexOf;\n\n        // g. If extensionSubtags is not undefined, then\n        if (extensionSubtags !== undefined) {\n            var\n                // i. Let keyPos be the result of calling the [[Call]] internal\n                //    method of indexOf with extensionSubtags as the this value and\n                // an argument list containing the single item key.\n                keyPos = indexOf.call(extensionSubtags, key);\n\n            // ii. If keyPos ≠ -1, then\n            if (keyPos !== -1) {\n                // 1. If keyPos + 1 < extensionSubtagsLength and the length of the\n                //    result of calling the [[Get]] internal method of\n                //    extensionSubtags with argument ToString(keyPos +1) is greater\n                //    than 2, then\n                if (keyPos + 1 < extensionSubtagsLength\n                        && extensionSubtags[keyPos + 1].length > 2) {\n                    var\n                        // a. Let requestedValue be the result of calling the [[Get]]\n                        //    internal method of extensionSubtags with argument\n                        //    ToString(keyPos + 1).\n                        requestedValue = extensionSubtags[keyPos + 1],\n                        // b. Let valuePos be the result of calling the [[Call]]\n                        //    internal method of indexOf with keyLocaleData as the\n                        //    this value and an argument list containing the single\n                        //    item requestedValue.\n                        valuePos = indexOf.call(keyLocaleData, requestedValue);\n\n                    // c. If valuePos ≠ -1, then\n                    if (valuePos !== -1)\n                        var\n                            // i. Let value be requestedValue.\n                            value = requestedValue,\n                            // ii. Let supportedExtensionAddition be the\n                            //     concatenation of \"-\", key, \"-\", and value.\n                            supportedExtensionAddition = '-' + key + '-' + value;\n                }\n                // 2. Else\n                else {\n                    var\n                        // a. Let valuePos be the result of calling the [[Call]]\n                        // internal method of indexOf with keyLocaleData as the this\n                        // value and an argument list containing the single item\n                        // \"true\".\n                        valuePos = indexOf(keyLocaleData, 'true');\n\n                    // b. If valuePos ≠ -1, then\n                    if (valuePos !== -1)\n                        var\n                            // i. Let value be \"true\".\n                            value = 'true';\n                }\n            }\n        }\n        // h. If options has a field [[]], then\n        if (hop.call(options, '[[' + key + ']]')) {\n            var\n                // i. Let optionsValue be the value of options.[[]].\n                optionsValue = options['[[' + key + ']]'];\n\n            // ii. If the result of calling the [[Call]] internal method of indexOf\n            //     with keyLocaleData as the this value and an argument list\n            //     containing the single item optionsValue is not -1, then\n            if (indexOf.call(keyLocaleData, optionsValue) !== -1) {\n                // 1. If optionsValue is not equal to value, then\n                if (optionsValue !== value) {\n                    // a. Let value be optionsValue.\n                    value = optionsValue;\n                    // b. Let supportedExtensionAddition be \"\".\n                    supportedExtensionAddition = '';\n                }\n            }\n        }\n        // i. Set result.[[]] to value.\n        result['[[' + key + ']]'] = value;\n\n        // j. Append supportedExtensionAddition to supportedExtension.\n        supportedExtension += supportedExtensionAddition;\n\n        // k. Increase i by 1.\n        i++;\n    }\n    // 12. If the length of supportedExtension is greater than 2, then\n    if (supportedExtension.length > 2) {\n        var\n            // a. Let preExtension be the substring of foundLocale from position 0,\n            //    inclusive, to position extensionIndex, exclusive.\n            preExtension = foundLocale.substring(0, extensionIndex),\n            // b. Let postExtension be the substring of foundLocale from position\n            //    extensionIndex to the end of the string.\n            postExtension = foundLocale.substring(extensionIndex),\n            // c. Let foundLocale be the concatenation of preExtension,\n            //    supportedExtension, and postExtension.\n            foundLocale = preExtension + supportedExtension + postExtension;\n    }\n    // 13. Set result.[[locale]] to foundLocale.\n    result['[[locale]]'] = foundLocale;\n\n    // 14. Return result.\n    return result;\n}\n\n/**\n * The LookupSupportedLocales abstract operation returns the subset of the\n * provided BCP 47 language priority list requestedLocales for which\n * availableLocales has a matching locale when using the BCP 47 Lookup algorithm.\n * Locales appear in the same order in the returned list as in requestedLocales.\n * The following steps are taken:\n */\nfunction /* 9.2.6 */LookupSupportedLocales (availableLocales, requestedLocales) {\n    var\n        // 1. Let len be the number of elements in requestedLocales.\n        len = requestedLocales.length,\n        // 2. Let subset be a new empty List.\n        subset = new List(),\n        // 3. Let k be 0.\n        k = 0;\n\n    // 4. Repeat while k < len\n    while (k < len) {\n        var\n            // a. Let locale be the element of requestedLocales at 0-origined list\n            //    position k.\n            locale = requestedLocales[k],\n            // b. Let noExtensionsLocale be the String value that is locale with all\n            //    Unicode locale extension sequences removed.\n            noExtensionsLocale = String(locale).replace(expUnicodeExSeq, ''),\n            // c. Let availableLocale be the result of calling the\n            //    BestAvailableLocale abstract operation (defined in 9.2.2) with\n            //    arguments availableLocales and noExtensionsLocale.\n            availableLocale = BestAvailableLocale(availableLocales, noExtensionsLocale);\n\n        // d. If availableLocale is not undefined, then append locale to the end of\n        //    subset.\n        if (availableLocale !== undefined)\n            arrPush.call(subset, locale);\n\n        // e. Increment k by 1.\n        k++;\n    }\n\n    var\n        // 5. Let subsetArray be a new Array object whose elements are the same\n        //    values in the same order as the elements of subset.\n        subsetArray = arrSlice.call(subset);\n\n    // 6. Return subsetArray.\n    return subsetArray;\n}\n\n/**\n * The BestFitSupportedLocales abstract operation returns the subset of the\n * provided BCP 47 language priority list requestedLocales for which\n * availableLocales has a matching locale when using the Best Fit Matcher\n * algorithm. Locales appear in the same order in the returned list as in\n * requestedLocales. The steps taken are implementation dependent.\n */\nfunction /*9.2.7 */BestFitSupportedLocales (availableLocales, requestedLocales) {\n    // ###TODO: implement this function as described by the specification###\n    return LookupSupportedLocales(availableLocales, requestedLocales);\n}\n\n/**\n * The SupportedLocales abstract operation returns the subset of the provided BCP\n * 47 language priority list requestedLocales for which availableLocales has a\n * matching locale. Two algorithms are available to match the locales: the Lookup\n * algorithm described in RFC 4647 section 3.4, and an implementation dependent\n * best-fit algorithm. Locales appear in the same order in the returned list as\n * in requestedLocales. The following steps are taken:\n */\nfunction /*9.2.8 */SupportedLocales (availableLocales, requestedLocales, options) {\n    // 1. If options is not undefined, then\n    if (options !== undefined) {\n        var\n            // a. Let options be ToObject(options).\n            options = new Record(toObject(options)),\n            // b. Let matcher be the result of calling the [[Get]] internal method of\n            //    options with argument \"localeMatcher\".\n            matcher = options.localeMatcher;\n\n        // c. If matcher is not undefined, then\n        if (matcher !== undefined) {\n            // i. Let matcher be ToString(matcher).\n            matcher = String(matcher);\n\n            // ii. If matcher is not \"lookup\" or \"best fit\", then throw a RangeError\n            //     exception.\n            if (matcher !== 'lookup' && matcher !== 'best fit')\n                throw new RangeError('matcher should be \"lookup\" or \"best fit\"');\n        }\n    }\n    // 2. If matcher is undefined or \"best fit\", then\n    if (matcher === undefined || matcher === 'best fit')\n        var\n            // a. Let subset be the result of calling the BestFitSupportedLocales\n            //    abstract operation (defined in 9.2.7) with arguments\n            //    availableLocales and requestedLocales.\n            subset = BestFitSupportedLocales(availableLocales, requestedLocales);\n    // 3. Else\n    else\n        var\n            // a. Let subset be the result of calling the LookupSupportedLocales\n            //    abstract operation (defined in 9.2.6) with arguments\n            //    availableLocales and requestedLocales.\n            subset = LookupSupportedLocales(availableLocales, requestedLocales);\n\n    // 4. For each named own property name P of subset,\n    for (var P in subset) {\n        if (!hop.call(subset, P))\n            continue;\n\n        // a. Let desc be the result of calling the [[GetOwnProperty]] internal\n        //    method of subset with P.\n        // b. Set desc.[[Writable]] to false.\n        // c. Set desc.[[Configurable]] to false.\n        // d. Call the [[DefineOwnProperty]] internal method of subset with P, desc,\n        //    and true as arguments.\n        defineProperty(subset, P, {\n            writable: false, configurable: false, value: subset[P]\n        });\n    }\n    // \"Freeze\" the array so no new elements can be added\n    defineProperty(subset, 'length', { writable: false });\n\n    // 5. Return subset\n    return subset;\n}\n\n/**\n * The GetOption abstract operation extracts the value of the property named\n * property from the provided options object, converts it to the required type,\n * checks whether it is one of a List of allowed values, and fills in a fallback\n * value if necessary.\n */\nfunction /*9.2.9 */GetOption (options, property, type, values, fallback) {\n    var\n        // 1. Let value be the result of calling the [[Get]] internal method of\n        //    options with argument property.\n        value = options[property];\n\n    // 2. If value is not undefined, then\n    if (value !== undefined) {\n        // a. Assert: type is \"boolean\" or \"string\".\n        // b. If type is \"boolean\", then let value be ToBoolean(value).\n        // c. If type is \"string\", then let value be ToString(value).\n        value = type === 'boolean' ? Boolean(value)\n                  : (type === 'string' ? String(value) : value);\n\n        // d. If values is not undefined, then\n        if (values !== undefined) {\n            // i. If values does not contain an element equal to value, then throw a\n            //    RangeError exception.\n            if (arrIndexOf.call(values, value) === -1)\n                throw new RangeError(\"'\" + value + \"' is not an allowed value for `\" + property +'`');\n        }\n\n        // e. Return value.\n        return value;\n    }\n    // Else return fallback.\n    return fallback;\n}\n\n/**\n * The GetNumberOption abstract operation extracts a property value from the\n * provided options object, converts it to a Number value, checks whether it is\n * in the allowed range, and fills in a fallback value if necessary.\n */\nfunction /* 9.2.10 */GetNumberOption (options, property, minimum, maximum, fallback) {\n    var\n        // 1. Let value be the result of calling the [[Get]] internal method of\n        //    options with argument property.\n        value = options[property];\n\n    // 2. If value is not undefined, then\n    if (value !== undefined) {\n        // a. Let value be ToNumber(value).\n        value = Number(value);\n\n        // b. If value is NaN or less than minimum or greater than maximum, throw a\n        //    RangeError exception.\n        if (isNaN(value) || value < minimum || value > maximum)\n            throw new RangeError('Value is not a number or outside accepted range');\n\n        // c. Return floor(value).\n        return Math.floor(value);\n    }\n    // 3. Else return fallback.\n    return fallback;\n}\n\n// 11.1 The Intl.NumberFormat constructor\n// ======================================\n\n// Define the NumberFormat constructor internally so it cannot be tainted\nfunction NumberFormatConstructor () {\n    var locales = arguments[0];\n    var options = arguments[1];\n\n    if (!this || this === Intl) {\n        return new Intl.NumberFormat(locales, options);\n    }\n\n    return InitializeNumberFormat(toObject(this), locales, options);\n}\n\ndefineProperty(Intl, 'NumberFormat', {\n    configurable: true,\n    writable: true,\n    value: NumberFormatConstructor\n});\n\n// Must explicitly set prototypes as unwritable\ndefineProperty(Intl.NumberFormat, 'prototype', {\n    writable: false\n});\n\n/**\n * The abstract operation InitializeNumberFormat accepts the arguments\n * numberFormat (which must be an object), locales, and options. It initializes\n * numberFormat as a NumberFormat object.\n */\nfunction /*11.1.1.1 */InitializeNumberFormat (numberFormat, locales, options) {\n    var\n    // This will be a internal properties object if we're not already initialized\n        internal = getInternalProperties(numberFormat),\n\n    // Create an object whose props can be used to restore the values of RegExp props\n        regexpState = createRegExpRestore();\n\n    // 1. If numberFormat has an [[initializedIntlObject]] internal property with\n    // value true, throw a TypeError exception.\n    if (internal['[[initializedIntlObject]]'] === true)\n        throw new TypeError('`this` object has already been initialized as an Intl object');\n\n    // Need this to access the `internal` object\n    defineProperty(numberFormat, '__getInternalProperties', {\n        value: function () {\n            // NOTE: Non-standard, for internal use only\n            if (arguments[0] === secret)\n                return internal;\n        }\n    });\n\n    // 2. Set the [[initializedIntlObject]] internal property of numberFormat to true.\n    internal['[[initializedIntlObject]]'] = true;\n\n    var\n    // 3. Let requestedLocales be the result of calling the CanonicalizeLocaleList\n    //    abstract operation (defined in 9.2.1) with argument locales.\n        requestedLocales = CanonicalizeLocaleList(locales);\n\n    // 4. If options is undefined, then\n    if (options === undefined)\n        // a. Let options be the result of creating a new object as if by the\n        // expression new Object() where Object is the standard built-in constructor\n        // with that name.\n        options = {};\n\n    // 5. Else\n    else\n        // a. Let options be ToObject(options).\n        options = toObject(options);\n\n    var\n    // 6. Let opt be a new Record.\n        opt = new Record(),\n\n    // 7. Let matcher be the result of calling the GetOption abstract operation\n    //    (defined in 9.2.9) with the arguments options, \"localeMatcher\", \"string\",\n    //    a List containing the two String values \"lookup\" and \"best fit\", and\n    //    \"best fit\".\n        matcher =  GetOption(options, 'localeMatcher', 'string', new List('lookup', 'best fit'), 'best fit');\n\n    // 8. Set opt.[[localeMatcher]] to matcher.\n    opt['[[localeMatcher]]'] = matcher;\n\n    var\n    // 9. Let NumberFormat be the standard built-in object that is the initial value\n    //    of Intl.NumberFormat.\n    // 10. Let localeData be the value of the [[localeData]] internal property of\n    //     NumberFormat.\n        localeData = internals.NumberFormat['[[localeData]]'],\n\n    // 11. Let r be the result of calling the ResolveLocale abstract operation\n    //     (defined in 9.2.5) with the [[availableLocales]] internal property of\n    //     NumberFormat, requestedLocales, opt, the [[relevantExtensionKeys]]\n    //     internal property of NumberFormat, and localeData.\n        r = ResolveLocale(\n                internals.NumberFormat['[[availableLocales]]'], requestedLocales,\n                opt, internals.NumberFormat['[[relevantExtensionKeys]]'], localeData\n            );\n\n    // 12. Set the [[locale]] internal property of numberFormat to the value of\n    //     r.[[locale]].\n    internal['[[locale]]'] = r['[[locale]]'];\n\n    // 13. Set the [[numberingSystem]] internal property of numberFormat to the value\n    //     of r.[[nu]].\n    internal['[[numberingSystem]]'] = r['[[nu]]'];\n\n    // The specification doesn't tell us to do this, but it's helpful later on\n    internal['[[dataLocale]]'] = r['[[dataLocale]]'];\n\n    var\n    // 14. Let dataLocale be the value of r.[[dataLocale]].\n        dataLocale = r['[[dataLocale]]'],\n\n    // 15. Let s be the result of calling the GetOption abstract operation with the\n    //     arguments options, \"style\", \"string\", a List containing the three String\n    //     values \"decimal\", \"percent\", and \"currency\", and \"decimal\".\n        s = GetOption(options, 'style', 'string', new List('decimal', 'percent', 'currency'), 'decimal');\n\n    // 16. Set the [[style]] internal property of numberFormat to s.\n    internal['[[style]]'] = s;\n\n    var\n    // 17. Let c be the result of calling the GetOption abstract operation with the\n    //     arguments options, \"currency\", \"string\", undefined, and undefined.\n        c = GetOption(options, 'currency', 'string');\n\n    // 18. If c is not undefined and the result of calling the\n    //     IsWellFormedCurrencyCode abstract operation (defined in 6.3.1) with\n    //     argument c is false, then throw a RangeError exception.\n    if (c !== undefined && !IsWellFormedCurrencyCode(c))\n        throw new RangeError(\"'\" + c + \"' is not a valid currency code\");\n\n    // 19. If s is \"currency\" and c is undefined, throw a TypeError exception.\n    if (s === 'currency' && c === undefined)\n        throw new TypeError('Currency code is required when style is currency');\n\n    // 20. If s is \"currency\", then\n    if (s === 'currency') {\n        // a. Let c be the result of converting c to upper case as specified in 6.1.\n        c = c.toUpperCase();\n\n        // b. Set the [[currency]] internal property of numberFormat to c.\n        internal['[[currency]]'] = c;\n\n        var\n        // c. Let cDigits be the result of calling the CurrencyDigits abstract\n        //    operation (defined below) with argument c.\n            cDigits = CurrencyDigits(c);\n    }\n\n    var\n    // 21. Let cd be the result of calling the GetOption abstract operation with the\n    //     arguments options, \"currencyDisplay\", \"string\", a List containing the\n    //     three String values \"code\", \"symbol\", and \"name\", and \"symbol\".\n        cd = GetOption(options, 'currencyDisplay', 'string', new List('code', 'symbol', 'name'), 'symbol');\n\n    // 22. If s is \"currency\", then set the [[currencyDisplay]] internal property of\n    //     numberFormat to cd.\n    if (s === 'currency')\n        internal['[[currencyDisplay]]'] = cd;\n\n    var\n    // 23. Let mnid be the result of calling the GetNumberOption abstract operation\n    //     (defined in 9.2.10) with arguments options, \"minimumIntegerDigits\", 1, 21,\n    //     and 1.\n        mnid = GetNumberOption(options, 'minimumIntegerDigits', 1, 21, 1);\n\n    // 24. Set the [[minimumIntegerDigits]] internal property of numberFormat to mnid.\n    internal['[[minimumIntegerDigits]]'] = mnid;\n\n    var\n    // 25. If s is \"currency\", then let mnfdDefault be cDigits; else let mnfdDefault\n    //     be 0.\n        mnfdDefault = s === 'currency' ? cDigits : 0,\n\n    // 26. Let mnfd be the result of calling the GetNumberOption abstract operation\n    //     with arguments options, \"minimumFractionDigits\", 0, 20, and mnfdDefault.\n        mnfd = GetNumberOption(options, 'minimumFractionDigits', 0, 20, mnfdDefault);\n\n    // 27. Set the [[minimumFractionDigits]] internal property of numberFormat to mnfd.\n    internal['[[minimumFractionDigits]]'] = mnfd;\n\n    var\n    // 28. If s is \"currency\", then let mxfdDefault be max(mnfd, cDigits); else if s\n    //     is \"percent\", then let mxfdDefault be max(mnfd, 0); else let mxfdDefault\n    //     be max(mnfd, 3).\n        mxfdDefault = s === 'currency' ? Math.max(mnfd, cDigits)\n                    : (s === 'percent' ? Math.max(mnfd, 0) : Math.max(mnfd, 3)),\n\n    // 29. Let mxfd be the result of calling the GetNumberOption abstract operation\n    //     with arguments options, \"maximumFractionDigits\", mnfd, 20, and mxfdDefault.\n        mxfd = GetNumberOption(options, 'maximumFractionDigits', mnfd, 20, mxfdDefault);\n\n    // 30. Set the [[maximumFractionDigits]] internal property of numberFormat to mxfd.\n    internal['[[maximumFractionDigits]]'] = mxfd;\n\n    var\n    // 31. Let mnsd be the result of calling the [[Get]] internal method of options\n    //     with argument \"minimumSignificantDigits\".\n        mnsd = options.minimumSignificantDigits,\n\n    // 32. Let mxsd be the result of calling the [[Get]] internal method of options\n    //     with argument \"maximumSignificantDigits\".\n        mxsd = options.maximumSignificantDigits;\n\n    // 33. If mnsd is not undefined or mxsd is not undefined, then:\n    if (mnsd !== undefined || mxsd !== undefined) {\n        // a. Let mnsd be the result of calling the GetNumberOption abstract\n        //    operation with arguments options, \"minimumSignificantDigits\", 1, 21,\n        //    and 1.\n        mnsd = GetNumberOption(options, 'minimumSignificantDigits', 1, 21, 1);\n\n        // b. Let mxsd be the result of calling the GetNumberOption abstract\n        //     operation with arguments options, \"maximumSignificantDigits\", mnsd,\n        //     21, and 21.\n        mxsd = GetNumberOption(options, 'maximumSignificantDigits', mnsd, 21, 21);\n\n        // c. Set the [[minimumSignificantDigits]] internal property of numberFormat\n        //    to mnsd, and the [[maximumSignificantDigits]] internal property of\n        //    numberFormat to mxsd.\n        internal['[[minimumSignificantDigits]]'] = mnsd;\n        internal['[[maximumSignificantDigits]]'] = mxsd;\n    }\n    var\n    // 34. Let g be the result of calling the GetOption abstract operation with the\n    //     arguments options, \"useGrouping\", \"boolean\", undefined, and true.\n        g = GetOption(options, 'useGrouping', 'boolean', undefined, true);\n\n    // 35. Set the [[useGrouping]] internal property of numberFormat to g.\n    internal['[[useGrouping]]'] = g;\n\n    var\n    // 36. Let dataLocaleData be the result of calling the [[Get]] internal method of\n    //     localeData with argument dataLocale.\n        dataLocaleData = localeData[dataLocale],\n\n    // 37. Let patterns be the result of calling the [[Get]] internal method of\n    //     dataLocaleData with argument \"patterns\".\n        patterns = dataLocaleData.patterns;\n\n    // 38. Assert: patterns is an object (see 11.2.3)\n\n    var\n    // 39. Let stylePatterns be the result of calling the [[Get]] internal method of\n    //     patterns with argument s.\n        stylePatterns = patterns[s];\n\n    // 40. Set the [[positivePattern]] internal property of numberFormat to the\n    //     result of calling the [[Get]] internal method of stylePatterns with the\n    //     argument \"positivePattern\".\n    internal['[[positivePattern]]'] = stylePatterns.positivePattern;\n\n    // 41. Set the [[negativePattern]] internal property of numberFormat to the\n    //     result of calling the [[Get]] internal method of stylePatterns with the\n    //     argument \"negativePattern\".\n    internal['[[negativePattern]]'] = stylePatterns.negativePattern;\n\n    // 42. Set the [[boundFormat]] internal property of numberFormat to undefined.\n    internal['[[boundFormat]]'] = undefined;\n\n    // 43. Set the [[initializedNumberFormat]] internal property of numberFormat to\n    //     true.\n    internal['[[initializedNumberFormat]]'] = true;\n\n    // In ES3, we need to pre-bind the format() function\n    if (es3)\n        numberFormat.format = GetFormatNumber.call(numberFormat);\n\n    // Restore the RegExp properties\n    regexpState.exp.test(regexpState.input);\n\n    // Return the newly initialised object\n    return numberFormat;\n}\n\nfunction CurrencyDigits(currency) {\n    // When the CurrencyDigits abstract operation is called with an argument currency\n    // (which must be an upper case String value), the following steps are taken:\n\n    // 1. If the ISO 4217 currency and funds code list contains currency as an\n    // alphabetic code, then return the minor unit value corresponding to the\n    // currency from the list; else return 2.\n    return currencyMinorUnits[currency] !== undefined\n                ? currencyMinorUnits[currency]\n                : 2;\n}\n\n/* 11.2.3 */internals.NumberFormat = {\n    '[[availableLocales]]': [],\n    '[[relevantExtensionKeys]]': ['nu'],\n    '[[localeData]]': {}\n};\n\n/**\n * When the supportedLocalesOf method of Intl.NumberFormat is called, the\n * following steps are taken:\n */\n/* 11.2.2 */defineProperty(Intl.NumberFormat, 'supportedLocalesOf', {\n    configurable: true,\n    writable: true,\n    value: fnBind.call(supportedLocalesOf, internals.NumberFormat)\n});\n\n/**\n * This named accessor property returns a function that formats a number\n * according to the effective locale and the formatting options of this\n * NumberFormat object.\n */\n/* 11.3.2 */defineProperty(Intl.NumberFormat.prototype, 'format', {\n    configurable: true,\n    get: GetFormatNumber\n});\n\nfunction GetFormatNumber() {\n        var internal = this != null && typeof this === 'object' && getInternalProperties(this);\n\n        // Satisfy test 11.3_b\n        if (!internal || !internal['[[initializedNumberFormat]]'])\n            throw new TypeError('`this` value for format() is not an initialized Intl.NumberFormat object.');\n\n        // The value of the [[Get]] attribute is a function that takes the following\n        // steps:\n\n        // 1. If the [[boundFormat]] internal property of this NumberFormat object\n        //    is undefined, then:\n        if (internal['[[boundFormat]]'] === undefined) {\n            var\n            // a. Let F be a Function object, with internal properties set as\n            //    specified for built-in functions in ES5, 15, or successor, and the\n            //    length property set to 1, that takes the argument value and\n            //    performs the following steps:\n                F = function (value) {\n                    // i. If value is not provided, then let value be undefined.\n                    // ii. Let x be ToNumber(value).\n                    // iii. Return the result of calling the FormatNumber abstract\n                    //      operation (defined below) with arguments this and x.\n                    return FormatNumber(this, /* x = */Number(value));\n                },\n\n            // b. Let bind be the standard built-in function object defined in ES5,\n            //    15.3.4.5.\n            // c. Let bf be the result of calling the [[Call]] internal method of\n            //    bind with F as the this value and an argument list containing\n            //    the single item this.\n                bf = fnBind.call(F, this);\n\n            // d. Set the [[boundFormat]] internal property of this NumberFormat\n            //    object to bf.\n            internal['[[boundFormat]]'] = bf;\n        }\n        // Return the value of the [[boundFormat]] internal property of this\n        // NumberFormat object.\n        return internal['[[boundFormat]]'];\n    }\n\n/**\n * When the FormatNumber abstract operation is called with arguments numberFormat\n * (which must be an object initialized as a NumberFormat) and x (which must be a\n * Number value), it returns a String value representing x according to the\n * effective locale and the formatting options of numberFormat.\n */\nfunction FormatNumber (numberFormat, x) {\n    var n,\n\n    // Create an object whose props can be used to restore the values of RegExp props\n        regexpState = createRegExpRestore(),\n\n        internal = getInternalProperties(numberFormat),\n        locale = internal['[[dataLocale]]'],\n        nums   = internal['[[numberingSystem]]'],\n        data   = internals.NumberFormat['[[localeData]]'][locale],\n        ild    = data.symbols[nums] || data.symbols.latn,\n\n    // 1. Let negative be false.\n        negative = false;\n\n    // 2. If the result of isFinite(x) is false, then\n    if (isFinite(x) === false) {\n        // a. If x is NaN, then let n be an ILD String value indicating the NaN value.\n        if (isNaN(x))\n            n = ild.nan;\n\n        // b. Else\n        else {\n            // a. Let n be an ILD String value indicating infinity.\n            n = ild.infinity;\n            // b. If x < 0, then let negative be true.\n            if (x < 0)\n                negative = true;\n        }\n    }\n    // 3. Else\n    else {\n        // a. If x < 0, then\n        if (x < 0) {\n            // i. Let negative be true.\n            negative = true;\n            // ii. Let x be -x.\n            x = -x;\n        }\n\n        // b. If the value of the [[style]] internal property of numberFormat is\n        //    \"percent\", let x be 100 × x.\n        if (internal['[[style]]'] === 'percent')\n            x *= 100;\n\n        // c. If the [[minimumSignificantDigits]] and [[maximumSignificantDigits]]\n        //    internal properties of numberFormat are present, then\n        if (hop.call(internal, '[[minimumSignificantDigits]]') &&\n                hop.call(internal, '[[maximumSignificantDigits]]'))\n            // i. Let n be the result of calling the ToRawPrecision abstract operation\n            //    (defined below), passing as arguments x and the values of the\n            //    [[minimumSignificantDigits]] and [[maximumSignificantDigits]]\n            //    internal properties of numberFormat.\n            n = ToRawPrecision(x,\n                  internal['[[minimumSignificantDigits]]'],\n                  internal['[[maximumSignificantDigits]]']);\n        // d. Else\n        else\n            // i. Let n be the result of calling the ToRawFixed abstract operation\n            //    (defined below), passing as arguments x and the values of the\n            //    [[minimumIntegerDigits]], [[minimumFractionDigits]], and\n            //    [[maximumFractionDigits]] internal properties of numberFormat.\n            n = ToRawFixed(x,\n                  internal['[[minimumIntegerDigits]]'],\n                  internal['[[minimumFractionDigits]]'],\n                  internal['[[maximumFractionDigits]]']);\n\n        // e. If the value of the [[numberingSystem]] internal property of\n        //    numberFormat matches one of the values in the “Numbering System” column\n        //    of Table 2 below, then\n        if (numSys[nums]) {\n            // i. Let digits be an array whose 10 String valued elements are the\n            //    UTF-16 string representations of the 10 digits specified in the\n            //    “Digits” column of Table 2 in the row containing the value of the\n            //    [[numberingSystem]] internal property.\n            var digits = numSys[internal['[[numberingSystem]]']];\n            // ii. Replace each digit in n with the value of digits[digit].\n            n = String(n).replace(/\\d/g, function (digit) {\n                return digits[digit];\n            });\n        }\n        // f. Else use an implementation dependent algorithm to map n to the\n        //    appropriate representation of n in the given numbering system.\n        else\n            n = String(n); // ###TODO###\n\n        // g. If n contains the character \".\", then replace it with an ILND String\n        //    representing the decimal separator.\n        n = n.replace(/\\./g, ild.decimal);\n\n        // h. If the value of the [[useGrouping]] internal property of numberFormat\n        //    is true, then insert an ILND String representing a grouping separator\n        //    into an ILND set of locations within the integer part of n.\n        if (internal['[[useGrouping]]'] === true) {\n            var\n                parts  = n.split(ild.decimal),\n                igr    = parts[0],\n\n                // Primary group represents the group closest to the decimal\n                pgSize = data.patterns.primaryGroupSize || 3,\n\n                // Secondary group is every other group\n                sgSize = data.patterns.secondaryGroupSize || pgSize;\n\n            // Group only if necessary\n            if (igr.length > pgSize) {\n                var\n                    groups = new List(),\n\n                    // Index of the primary grouping separator\n                    end    = igr.length - pgSize,\n\n                    // Starting index for our loop\n                    idx    = end % sgSize,\n\n                    start  = igr.slice(0, idx);\n\n                if (start.length)\n                    arrPush.call(groups, start);\n\n                // Loop to separate into secondary grouping digits\n                while (idx < end) {\n                    arrPush.call(groups, igr.slice(idx, idx + sgSize));\n                    idx += sgSize;\n                }\n\n                // Add the primary grouping digits\n                arrPush.call(groups, igr.slice(end));\n\n                parts[0] = arrJoin.call(groups, ild.group);\n            }\n\n            n = arrJoin.call(parts, ild.decimal);\n        }\n    }\n\n    var\n    // 4. If negative is true, then let result be the value of the [[negativePattern]]\n    //    internal property of numberFormat; else let result be the value of the\n    //    [[positivePattern]] internal property of numberFormat.\n        result = internal[negative === true ? '[[negativePattern]]' : '[[positivePattern]]'];\n\n    // 5. Replace the substring \"{number}\" within result with n.\n    result = result.replace('{number}', n);\n\n    // 6. If the value of the [[style]] internal property of numberFormat is\n    //    \"currency\", then:\n    if (internal['[[style]]'] === 'currency') {\n        var cd,\n        // a. Let currency be the value of the [[currency]] internal property of\n        //    numberFormat.\n            currency = internal['[[currency]]'],\n\n        // Shorthand for the currency data\n            cData = data.currencies[currency];\n\n        // b. If the value of the [[currencyDisplay]] internal property of\n        //    numberFormat is \"code\", then let cd be currency.\n        // c. Else if the value of the [[currencyDisplay]] internal property of\n        //    numberFormat is \"symbol\", then let cd be an ILD string representing\n        //    currency in short form. If the implementation does not have such a\n        //    representation of currency, then use currency itself.\n        // d. Else if the value of the [[currencyDisplay]] internal property of\n        //    numberFormat is \"name\", then let cd be an ILD string representing\n        //    currency in long form. If the implementation does not have such a\n        //    representation of currency, then use currency itself.\n        switch (internal['[[currencyDisplay]]']) {\n            case 'symbol':\n                cd = cData || currency;\n                break;\n\n            default:\n            case 'code':\n            case 'name':\n                cd = currency;\n        }\n\n        // e. Replace the substring \"{currency}\" within result with cd.\n        result = result.replace('{currency}', cd);\n    }\n\n    // Restore the RegExp properties\n    regexpState.exp.test(regexpState.input);\n\n    // 7. Return result.\n    return result;\n}\n\n/**\n * When the ToRawPrecision abstract operation is called with arguments x (which\n * must be a finite non-negative number), minPrecision, and maxPrecision (both\n * must be integers between 1 and 21) the following steps are taken:\n */\nfunction ToRawPrecision (x, minPrecision, maxPrecision) {\n    var\n    // 1. Let p be maxPrecision.\n        p = maxPrecision;\n\n    // 2. If x = 0, then\n    if (x === 0) {\n        var\n        // a. Let m be the String consisting of p occurrences of the character \"0\".\n            m = arrJoin.call(Array (p + 1), '0'),\n        // b. Let e be 0.\n            e = 0;\n    }\n    // 3. Else\n    else {\n        // a. Let e and n be integers such that 10ᵖ⁻¹ ≤ n < 10ᵖ and for which the\n        //    exact mathematical value of n × 10ᵉ⁻ᵖ⁺¹ – x is as close to zero as\n        //    possible. If there are two such sets of e and n, pick the e and n for\n        //    which n × 10ᵉ⁻ᵖ⁺¹ is larger.\n        var\n            e = log10Floor(Math.abs(x)),\n\n            // Easier to get to m from here\n            f = Math.round(Math.exp((Math.abs(e - p + 1)) * Math.LN10)),\n\n        // b. Let m be the String consisting of the digits of the decimal\n        //    representation of n (in order, with no leading zeroes)\n            m = String(Math.round(e - p + 1 < 0 ? x * f : x / f));\n    }\n\n    // 4. If e ≥ p, then\n    if (e >= p)\n        // a. Return the concatenation of m and e-p+1 occurrences of the character \"0\".\n        return m + arrJoin.call(Array(e-p+1 + 1), '0');\n\n    // 5. If e = p-1, then\n    else if (e === p - 1)\n        // a. Return m.\n        return m;\n\n    // 6. If e ≥ 0, then\n    else if (e >= 0)\n        // a. Let m be the concatenation of the first e+1 characters of m, the character\n        //    \".\", and the remaining p–(e+1) characters of m.\n        m = m.slice(0, e + 1) + '.' + m.slice(e + 1);\n\n    // 7. If e < 0, then\n    else if (e < 0)\n        // a. Let m be the concatenation of the String \"0.\", –(e+1) occurrences of the\n        //    character \"0\", and the string m.\n        m = '0.' + arrJoin.call(Array (-(e+1) + 1), '0') + m;\n\n    // 8. If m contains the character \".\", and maxPrecision > minPrecision, then\n    if (m.indexOf(\".\") >= 0 && maxPrecision > minPrecision) {\n        var\n        // a. Let cut be maxPrecision – minPrecision.\n            cut = maxPrecision - minPrecision;\n\n        // b. Repeat while cut > 0 and the last character of m is \"0\":\n        while (cut > 0 && m.charAt(m.length-1) === '0') {\n            //  i. Remove the last character from m.\n            m = m.slice(0, -1);\n\n            //  ii. Decrease cut by 1.\n            cut--;\n        }\n\n        // c. If the last character of m is \".\", then\n        if (m.charAt(m.length-1) === '.')\n            //    i. Remove the last character from m.\n            m = m.slice(0, -1);\n    }\n    // 9. Return m.\n    return m;\n}\n\n/**\n * When the ToRawFixed abstract operation is called with arguments x (which must\n * be a finite non-negative number), minInteger (which must be an integer between\n * 1 and 21), minFraction, and maxFraction (which must be integers between 0 and\n * 20) the following steps are taken:\n */\nfunction ToRawFixed (x, minInteger, minFraction, maxFraction) {\n    // (or not because Number.toPrototype.toFixed does a lot of it for us)\n    var idx,\n\n        // We can pick up after the fixed formatted string (m) is created\n        m   = Number.prototype.toFixed.call(x, maxFraction),\n\n        // 4. If [maxFraction] ≠ 0, then\n        //    ...\n        //    e. Let int be the number of characters in a.\n        //\n        // 5. Else let int be the number of characters in m.\n        igr = m.split(\".\")[0].length,  // int is a reserved word\n\n        // 6. Let cut be maxFraction – minFraction.\n        cut = maxFraction - minFraction,\n\n        exp = (idx = m.indexOf('e')) > -1 ? m.slice(idx + 1) : 0;\n\n    if (exp) {\n        m = m.slice(0, idx).replace('.', '');\n        m += arrJoin.call(Array(exp - (m.length - 1) + 1), '0')\n          + '.' + arrJoin.call(Array(maxFraction + 1), '0');\n\n        igr = m.length;\n    }\n\n    // 7. Repeat while cut > 0 and the last character of m is \"0\":\n    while (cut > 0 && m.slice(-1) === \"0\") {\n        // a. Remove the last character from m.\n        m = m.slice(0, -1);\n\n        // b. Decrease cut by 1.\n        cut--;\n    }\n\n    // 8. If the last character of m is \".\", then\n    if (m.slice(-1) === \".\")\n        // a. Remove the last character from m.\n        m = m.slice(0, -1);\n\n    // 9. If int < minInteger, then\n    if (igr < minInteger)\n        // a. Let z be the String consisting of minInteger–int occurrences of the\n        //    character \"0\".\n        var z = arrJoin.call(Array(minInteger - igr + 1), '0');\n\n    // 10. Let m be the concatenation of Strings z and m.\n    // 11. Return m.\n    return (z ? z : '') + m;\n}\n\n// Sect 11.3.2 Table 2, Numbering systems\n// ======================================\nvar numSys = {\n    arab:    [ '\\u0660', '\\u0661', '\\u0662', '\\u0663', '\\u0664', '\\u0665', '\\u0666', '\\u0667', '\\u0668', '\\u0669' ],\n    arabext: [ '\\u06F0', '\\u06F1', '\\u06F2', '\\u06F3', '\\u06F4', '\\u06F5', '\\u06F6', '\\u06F7', '\\u06F8', '\\u06F9' ],\n    bali:    [ '\\u1B50', '\\u1B51', '\\u1B52', '\\u1B53', '\\u1B54', '\\u1B55', '\\u1B56', '\\u1B57', '\\u1B58', '\\u1B59' ],\n    beng:    [ '\\u09E6', '\\u09E7', '\\u09E8', '\\u09E9', '\\u09EA', '\\u09EB', '\\u09EC', '\\u09ED', '\\u09EE', '\\u09EF' ],\n    deva:    [ '\\u0966', '\\u0967', '\\u0968', '\\u0969', '\\u096A', '\\u096B', '\\u096C', '\\u096D', '\\u096E', '\\u096F' ],\n    fullwide:[ '\\uFF10', '\\uFF11', '\\uFF12', '\\uFF13', '\\uFF14', '\\uFF15', '\\uFF16', '\\uFF17', '\\uFF18', '\\uFF19' ],\n    gujr:    [ '\\u0AE6', '\\u0AE7', '\\u0AE8', '\\u0AE9', '\\u0AEA', '\\u0AEB', '\\u0AEC', '\\u0AED', '\\u0AEE', '\\u0AEF' ],\n    guru:    [ '\\u0A66', '\\u0A67', '\\u0A68', '\\u0A69', '\\u0A6A', '\\u0A6B', '\\u0A6C', '\\u0A6D', '\\u0A6E', '\\u0A6F' ],\n    hanidec: [ '\\u3007', '\\u4E00', '\\u4E8C', '\\u4E09', '\\u56DB', '\\u4E94', '\\u516D', '\\u4E03', '\\u516B', '\\u4E5D' ],\n    khmr:    [ '\\u17E0', '\\u17E1', '\\u17E2', '\\u17E3', '\\u17E4', '\\u17E5', '\\u17E6', '\\u17E7', '\\u17E8', '\\u17E9' ],\n    knda:    [ '\\u0CE6', '\\u0CE7', '\\u0CE8', '\\u0CE9', '\\u0CEA', '\\u0CEB', '\\u0CEC', '\\u0CED', '\\u0CEE', '\\u0CEF' ],\n    laoo:    [ '\\u0ED0', '\\u0ED1', '\\u0ED2', '\\u0ED3', '\\u0ED4', '\\u0ED5', '\\u0ED6', '\\u0ED7', '\\u0ED8', '\\u0ED9' ],\n    latn:    [ '\\u0030', '\\u0031', '\\u0032', '\\u0033', '\\u0034', '\\u0035', '\\u0036', '\\u0037', '\\u0038', '\\u0039' ],\n    limb:    [ '\\u1946', '\\u1947', '\\u1948', '\\u1949', '\\u194A', '\\u194B', '\\u194C', '\\u194D', '\\u194E', '\\u194F' ],\n    mlym:    [ '\\u0D66', '\\u0D67', '\\u0D68', '\\u0D69', '\\u0D6A', '\\u0D6B', '\\u0D6C', '\\u0D6D', '\\u0D6E', '\\u0D6F' ],\n    mong:    [ '\\u1810', '\\u1811', '\\u1812', '\\u1813', '\\u1814', '\\u1815', '\\u1816', '\\u1817', '\\u1818', '\\u1819' ],\n    mymr:    [ '\\u1040', '\\u1041', '\\u1042', '\\u1043', '\\u1044', '\\u1045', '\\u1046', '\\u1047', '\\u1048', '\\u1049' ],\n    orya:    [ '\\u0B66', '\\u0B67', '\\u0B68', '\\u0B69', '\\u0B6A', '\\u0B6B', '\\u0B6C', '\\u0B6D', '\\u0B6E', '\\u0B6F' ],\n    tamldec: [ '\\u0BE6', '\\u0BE7', '\\u0BE8', '\\u0BE9', '\\u0BEA', '\\u0BEB', '\\u0BEC', '\\u0BED', '\\u0BEE', '\\u0BEF' ],\n    telu:    [ '\\u0C66', '\\u0C67', '\\u0C68', '\\u0C69', '\\u0C6A', '\\u0C6B', '\\u0C6C', '\\u0C6D', '\\u0C6E', '\\u0C6F' ],\n    thai:    [ '\\u0E50', '\\u0E51', '\\u0E52', '\\u0E53', '\\u0E54', '\\u0E55', '\\u0E56', '\\u0E57', '\\u0E58', '\\u0E59' ],\n    tibt:    [ '\\u0F20', '\\u0F21', '\\u0F22', '\\u0F23', '\\u0F24', '\\u0F25', '\\u0F26', '\\u0F27', '\\u0F28', '\\u0F29' ]\n};\n\n/**\n * This function provides access to the locale and formatting options computed\n * during initialization of the object.\n *\n * The function returns a new object whose properties and attributes are set as\n * if constructed by an object literal assigning to each of the following\n * properties the value of the corresponding internal property of this\n * NumberFormat object (see 11.4): locale, numberingSystem, style, currency,\n * currencyDisplay, minimumIntegerDigits, minimumFractionDigits,\n * maximumFractionDigits, minimumSignificantDigits, maximumSignificantDigits, and\n * useGrouping. Properties whose corresponding internal properties are not present\n * are not assigned.\n */\n/* 11.3.3 */defineProperty(Intl.NumberFormat.prototype, 'resolvedOptions', {\n    configurable: true,\n    writable: true,\n    value: function () {\n        var prop,\n            descs = new Record(),\n            props = [\n                'locale', 'numberingSystem', 'style', 'currency', 'currencyDisplay',\n                'minimumIntegerDigits', 'minimumFractionDigits', 'maximumFractionDigits',\n                'minimumSignificantDigits', 'maximumSignificantDigits', 'useGrouping'\n            ],\n            internal = this != null && typeof this === 'object' && getInternalProperties(this);\n\n        // Satisfy test 11.3_b\n        if (!internal || !internal['[[initializedNumberFormat]]'])\n            throw new TypeError('`this` value for resolvedOptions() is not an initialized Intl.NumberFormat object.');\n\n        for (var i = 0, max = props.length; i < max; i++) {\n            if (hop.call(internal, prop = '[['+ props[i] +']]'))\n                descs[props[i]] = { value: internal[prop], writable: true, configurable: true, enumerable: true };\n        }\n\n        return objCreate({}, descs);\n    }\n});\n\n// 12.1 The Intl.DateTimeFormat constructor\n// ==================================\n\n// Define the DateTimeFormat constructor internally so it cannot be tainted\nfunction DateTimeFormatConstructor () {\n    var locales = arguments[0];\n    var options = arguments[1];\n\n    if (!this || this === Intl) {\n        return new Intl.DateTimeFormat(locales, options);\n    }\n    return InitializeDateTimeFormat(toObject(this), locales, options);\n}\n\ndefineProperty(Intl, 'DateTimeFormat', {\n    configurable: true,\n    writable: true,\n    value: DateTimeFormatConstructor\n});\n\n// Must explicitly set prototypes as unwritable\ndefineProperty(DateTimeFormatConstructor, 'prototype', {\n    writable: false\n});\n\n/**\n * The abstract operation InitializeDateTimeFormat accepts the arguments dateTimeFormat\n * (which must be an object), locales, and options. It initializes dateTimeFormat as a\n * DateTimeFormat object.\n */\nfunction/* 12.1.1.1 */InitializeDateTimeFormat (dateTimeFormat, locales, options) {\n    var\n    // This will be a internal properties object if we're not already initialized\n        internal = getInternalProperties(dateTimeFormat),\n\n    // Create an object whose props can be used to restore the values of RegExp props\n        regexpState = createRegExpRestore();\n\n    // 1. If dateTimeFormat has an [[initializedIntlObject]] internal property with\n    //    value true, throw a TypeError exception.\n    if (internal['[[initializedIntlObject]]'] === true)\n        throw new TypeError('`this` object has already been initialized as an Intl object');\n\n    // Need this to access the `internal` object\n    defineProperty(dateTimeFormat, '__getInternalProperties', {\n        value: function () {\n            // NOTE: Non-standard, for internal use only\n            if (arguments[0] === secret)\n                return internal;\n        }\n    });\n\n    // 2. Set the [[initializedIntlObject]] internal property of numberFormat to true.\n    internal['[[initializedIntlObject]]'] = true;\n\n    var\n    // 3. Let requestedLocales be the result of calling the CanonicalizeLocaleList\n    //    abstract operation (defined in 9.2.1) with argument locales.\n        requestedLocales = CanonicalizeLocaleList(locales),\n\n    // 4. Let options be the result of calling the ToDateTimeOptions abstract\n    //    operation (defined below) with arguments options, \"any\", and \"date\".\n        options = ToDateTimeOptions(options, 'any', 'date'),\n\n    // 5. Let opt be a new Record.\n        opt = new Record();\n\n    // 6. Let matcher be the result of calling the GetOption abstract operation\n    //    (defined in 9.2.9) with arguments options, \"localeMatcher\", \"string\", a List\n    //    containing the two String values \"lookup\" and \"best fit\", and \"best fit\".\n        matcher = GetOption(options, 'localeMatcher', 'string', new List('lookup', 'best fit'), 'best fit');\n\n    // 7. Set opt.[[localeMatcher]] to matcher.\n    opt['[[localeMatcher]]'] = matcher;\n\n    var\n    // 8. Let DateTimeFormat be the standard built-in object that is the initial\n    //    value of Intl.DateTimeFormat.\n        DateTimeFormat = internals.DateTimeFormat, // This is what we *really* need\n\n    // 9. Let localeData be the value of the [[localeData]] internal property of\n    //    DateTimeFormat.\n        localeData = DateTimeFormat['[[localeData]]'],\n\n    // 10. Let r be the result of calling the ResolveLocale abstract operation\n    //     (defined in 9.2.5) with the [[availableLocales]] internal property of\n    //      DateTimeFormat, requestedLocales, opt, the [[relevantExtensionKeys]]\n    //      internal property of DateTimeFormat, and localeData.\n        r = ResolveLocale(DateTimeFormat['[[availableLocales]]'], requestedLocales,\n                opt, DateTimeFormat['[[relevantExtensionKeys]]'], localeData);\n\n    // 11. Set the [[locale]] internal property of dateTimeFormat to the value of\n    //     r.[[locale]].\n    internal['[[locale]]'] = r['[[locale]]'];\n\n    // 12. Set the [[calendar]] internal property of dateTimeFormat to the value of\n    //     r.[[ca]].\n    internal['[[calendar]]'] = r['[[ca]]'];\n\n    // 13. Set the [[numberingSystem]] internal property of dateTimeFormat to the value of\n    //     r.[[nu]].\n    internal['[[numberingSystem]]'] = r['[[nu]]'];\n\n    // The specification doesn't tell us to do this, but it's helpful later on\n    internal['[[dataLocale]]'] = r['[[dataLocale]]'];\n\n    var\n    // 14. Let dataLocale be the value of r.[[dataLocale]].\n        dataLocale = r['[[dataLocale]]'],\n\n    // 15. Let tz be the result of calling the [[Get]] internal method of options with\n    //     argument \"timeZone\".\n        tz = options.timeZone;\n\n    // 16. If tz is not undefined, then\n    if (tz !== undefined) {\n        // a. Let tz be ToString(tz).\n        // b. Convert tz to upper case as described in 6.1.\n        //    NOTE: If an implementation accepts additional time zone values, as permitted\n        //          under certain conditions by the Conformance clause, different casing\n        //          rules apply.\n        tz = toLatinUpperCase(tz);\n\n        // c. If tz is not \"UTC\", then throw a RangeError exception.\n        // ###TODO: accept more time zones###\n        if (tz !== 'UTC')\n            throw new RangeError('timeZone is not supported.');\n    }\n\n    // 17. Set the [[timeZone]] internal property of dateTimeFormat to tz.\n    internal['[[timeZone]]'] = tz;\n\n    // 18. Let opt be a new Record.\n    opt = new Record();\n\n    // 19. For each row of Table 3, except the header row, do:\n    for (var prop in dateTimeComponents) {\n        if (!hop.call(dateTimeComponents, prop))\n            continue;\n\n        var\n        // 20. Let prop be the name given in the Property column of the row.\n        // 21. Let value be the result of calling the GetOption abstract operation,\n        //     passing as argument options, the name given in the Property column of the\n        //     row, \"string\", a List containing the strings given in the Values column of\n        //     the row, and undefined.\n            value = GetOption(options, prop, 'string', dateTimeComponents[prop]);\n\n        // 22. Set opt.[[]] to value.\n        opt['[['+prop+']]'] = value;\n    }\n\n    var\n        // Assigned a value below\n        bestFormat,\n\n        // 23. Let dataLocaleData be the result of calling the [[Get]] internal method of\n        //     localeData with argument dataLocale.\n        dataLocaleData = localeData[dataLocale],\n\n        // 24. Let formats be the result of calling the [[Get]] internal method of\n        //     dataLocaleData with argument \"formats\".\n        //     Note: we process the CLDR formats into the spec'd structure\n        formats = ToDateTimeFormats(dataLocaleData.formats),\n\n        // 25. Let matcher be the result of calling the GetOption abstract operation with\n        //     arguments options, \"formatMatcher\", \"string\", a List containing the two String\n        //     values \"basic\" and \"best fit\", and \"best fit\".\n        matcher = GetOption(options, 'formatMatcher', 'string', new List('basic', 'best fit'), 'best fit');\n\n    // Optimization: caching the processed formats as a one time operation by\n    // replacing the initial structure from localeData\n    dataLocaleData.formats = formats;\n\n    // 26. If matcher is \"basic\", then\n    if (matcher === 'basic')\n        // 27. Let bestFormat be the result of calling the BasicFormatMatcher abstract\n        //     operation (defined below) with opt and formats.\n        bestFormat = BasicFormatMatcher(opt, formats);\n\n    // 28. Else\n    else\n        // 29. Let bestFormat be the result of calling the BestFitFormatMatcher\n        //     abstract operation (defined below) with opt and formats.\n        bestFormat = BestFitFormatMatcher(opt, formats);\n\n    // 30. For each row in Table 3, except the header row, do\n    for (var prop in dateTimeComponents) {\n        if (!hop.call(dateTimeComponents, prop))\n            continue;\n\n        // a. Let prop be the name given in the Property column of the row.\n        // b. Let pDesc be the result of calling the [[GetOwnProperty]] internal method of\n        //    bestFormat with argument prop.\n        // c. If pDesc is not undefined, then\n        if (hop.call(bestFormat, prop)) {\n            var\n            // i. Let p be the result of calling the [[Get]] internal method of bestFormat\n            //    with argument prop.\n                p = bestFormat[prop];\n\n            // ii. Set the [[]] internal property of dateTimeFormat to p.\n            // Diverging from spec becuase of bug #58\n            // https://github.com/tc39/ecma402/issues/58\n            internal['[['+prop+']]'] = opt['[['+prop+']]'] || p;\n        }\n    }\n\n    var\n        // Assigned a value below\n        pattern,\n\n    // 31. Let hr12 be the result of calling the GetOption abstract operation with\n    //     arguments options, \"hour12\", \"boolean\", undefined, and undefined.\n        hr12 = GetOption(options, 'hour12', 'boolean'/*, undefined, undefined*/);\n\n    // 32. If dateTimeFormat has an internal property [[hour]], then\n    if (internal['[[hour]]']) {\n        // a. If hr12 is undefined, then let hr12 be the result of calling the [[Get]]\n        //    internal method of dataLocaleData with argument \"hour12\".\n        hr12 = hr12 === undefined ? dataLocaleData.hour12 : hr12;\n\n        // b. Set the [[hour12]] internal property of dateTimeFormat to hr12.\n        internal['[[hour12]]'] = hr12;\n\n        // c. If hr12 is true, then\n        if (hr12 === true) {\n            var\n            // i. Let hourNo0 be the result of calling the [[Get]] internal method of\n            //    dataLocaleData with argument \"hourNo0\".\n                hourNo0 = dataLocaleData.hourNo0;\n\n            // ii. Set the [[hourNo0]] internal property of dateTimeFormat to hourNo0.\n            internal['[[hourNo0]]'] = hourNo0;\n\n            // iii. Let pattern be the result of calling the [[Get]] internal method of\n            //      bestFormat with argument \"pattern12\".\n            pattern = bestFormat.pattern12;\n        }\n\n        // d. Else\n        else\n            // i. Let pattern be the result of calling the [[Get]] internal method of\n            //    bestFormat with argument \"pattern\".\n            pattern = bestFormat.pattern;\n    }\n\n    // 33. Else\n    else\n        // a. Let pattern be the result of calling the [[Get]] internal method of\n        //    bestFormat with argument \"pattern\".\n        pattern = bestFormat.pattern;\n\n    // 34. Set the [[pattern]] internal property of dateTimeFormat to pattern.\n    internal['[[pattern]]'] = pattern;\n\n    // 35. Set the [[boundFormat]] internal property of dateTimeFormat to undefined.\n    internal['[[boundFormat]]'] = undefined;\n\n    // 36. Set the [[initializedDateTimeFormat]] internal property of dateTimeFormat to\n    //     true.\n    internal['[[initializedDateTimeFormat]]'] = true;\n\n    // In ES3, we need to pre-bind the format() function\n    if (es3)\n        dateTimeFormat.format = GetFormatDateTime.call(dateTimeFormat);\n\n    // Restore the RegExp properties\n    regexpState.exp.test(regexpState.input);\n\n    // Return the newly initialised object\n    return dateTimeFormat;\n}\n\n/**\n * Several DateTimeFormat algorithms use values from the following table, which provides\n * property names and allowable values for the components of date and time formats:\n */\nvar dateTimeComponents = {\n         weekday: [ \"narrow\", \"short\", \"long\" ],\n             era: [ \"narrow\", \"short\", \"long\" ],\n            year: [ \"2-digit\", \"numeric\" ],\n           month: [ \"2-digit\", \"numeric\", \"narrow\", \"short\", \"long\" ],\n             day: [ \"2-digit\", \"numeric\" ],\n            hour: [ \"2-digit\", \"numeric\" ],\n          minute: [ \"2-digit\", \"numeric\" ],\n          second: [ \"2-digit\", \"numeric\" ],\n    timeZoneName: [ \"short\", \"long\" ]\n};\n\n/**\n * When the ToDateTimeOptions abstract operation is called with arguments options,\n * required, and defaults, the following steps are taken:\n */\nfunction ToDateTimeFormats(formats) {\n    if (Object.prototype.toString.call(formats) === '[object Array]') {\n        return formats;\n    }\n    return src$cldr$$.createDateTimeFormats(formats);\n}\n\n/**\n * When the ToDateTimeOptions abstract operation is called with arguments options,\n * required, and defaults, the following steps are taken:\n */\nfunction ToDateTimeOptions (options, required, defaults) {\n    // 1. If options is undefined, then let options be null, else let options be\n    //    ToObject(options).\n    if (options === undefined)\n        options = null;\n\n    else {\n        // (#12) options needs to be a Record, but it also needs to inherit properties\n        var opt2 = toObject(options);\n        options = new Record();\n\n        for (var k in opt2)\n            options[k] = opt2[k];\n    }\n\n    var\n    // 2. Let create be the standard built-in function object defined in ES5, 15.2.3.5.\n        create = objCreate,\n\n    // 3. Let options be the result of calling the [[Call]] internal method of create with\n    //    undefined as the this value and an argument list containing the single item\n    //    options.\n        options = create(options),\n\n    // 4. Let needDefaults be true.\n        needDefaults = true;\n\n    // 5. If required is \"date\" or \"any\", then\n    if (required === 'date' || required === 'any') {\n        // a. For each of the property names \"weekday\", \"year\", \"month\", \"day\":\n            // i. If the result of calling the [[Get]] internal method of options with the\n            //    property name is not undefined, then let needDefaults be false.\n        if (options.weekday !== undefined || options.year !== undefined\n                || options.month !== undefined || options.day !== undefined)\n            needDefaults = false;\n    }\n\n    // 6. If required is \"time\" or \"any\", then\n    if (required === 'time' || required === 'any') {\n        // a. For each of the property names \"hour\", \"minute\", \"second\":\n            // i. If the result of calling the [[Get]] internal method of options with the\n            //    property name is not undefined, then let needDefaults be false.\n        if (options.hour !== undefined || options.minute !== undefined || options.second !== undefined)\n                needDefaults = false;\n    }\n\n    // 7. If needDefaults is true and defaults is either \"date\" or \"all\", then\n    if (needDefaults && (defaults === 'date' || defaults === 'all'))\n        // a. For each of the property names \"year\", \"month\", \"day\":\n            // i. Call the [[DefineOwnProperty]] internal method of options with the\n            //    property name, Property Descriptor {[[Value]]: \"numeric\", [[Writable]]:\n            //    true, [[Enumerable]]: true, [[Configurable]]: true}, and false.\n        options.year = options.month = options.day = 'numeric';\n\n    // 8. If needDefaults is true and defaults is either \"time\" or \"all\", then\n    if (needDefaults && (defaults === 'time' || defaults === 'all'))\n        // a. For each of the property names \"hour\", \"minute\", \"second\":\n            // i. Call the [[DefineOwnProperty]] internal method of options with the\n            //    property name, Property Descriptor {[[Value]]: \"numeric\", [[Writable]]:\n            //    true, [[Enumerable]]: true, [[Configurable]]: true}, and false.\n        options.hour = options.minute = options.second = 'numeric';\n\n    // 9. Return options.\n    return options;\n}\n\n/**\n * When the BasicFormatMatcher abstract operation is called with two arguments options and\n * formats, the following steps are taken:\n */\nfunction BasicFormatMatcher (options, formats) {\n    return calculateScore(options, formats);\n}\n\n/**\n * Calculates score for BestFitFormatMatcher and BasicFormatMatcher.\n * Abstracted from BasicFormatMatcher section.\n */\nfunction calculateScore (options, formats, bestFit) {\n    var\n    // Additional penalty type when bestFit === true\n       diffDataTypePenalty = 8,\n\n    // 1. Let removalPenalty be 120.\n        removalPenalty = 120,\n\n    // 2. Let additionPenalty be 20.\n        additionPenalty = 20,\n\n    // 3. Let longLessPenalty be 8.\n        longLessPenalty = 8,\n\n    // 4. Let longMorePenalty be 6.\n        longMorePenalty = 6,\n\n    // 5. Let shortLessPenalty be 6.\n        shortLessPenalty = 6,\n\n    // 6. Let shortMorePenalty be 3.\n        shortMorePenalty = 3,\n\n    // 7. Let bestScore be -Infinity.\n        bestScore = -Infinity,\n\n    // 8. Let bestFormat be undefined.\n        bestFormat,\n\n    // 9. Let i be 0.\n        i = 0,\n\n    // 10. Let len be the result of calling the [[Get]] internal method of formats with argument \"length\".\n        len = formats.length;\n\n    // 11. Repeat while i < len:\n    while (i < len) {\n        var\n        // a. Let format be the result of calling the [[Get]] internal method of formats with argument ToString(i).\n            format = formats[i],\n\n        // b. Let score be 0.\n            score = 0;\n\n        // c. For each property shown in Table 3:\n        for (var property in dateTimeComponents) {\n            if (!hop.call(dateTimeComponents, property))\n                continue;\n\n            var\n            // i. Let optionsProp be options.[[]].\n                optionsProp = options['[['+ property +']]'],\n\n            // ii. Let formatPropDesc be the result of calling the [[GetOwnProperty]] internal method of format\n            //     with argument property.\n            // iii. If formatPropDesc is not undefined, then\n            //     1. Let formatProp be the result of calling the [[Get]] internal method of format with argument property.\n                formatProp = hop.call(format, property) ? format[property] : undefined;\n\n            // iv. If optionsProp is undefined and formatProp is not undefined, then decrease score by\n            //     additionPenalty.\n            if (optionsProp === undefined && formatProp !== undefined)\n                score -= additionPenalty;\n\n            // v. Else if optionsProp is not undefined and formatProp is undefined, then decrease score by\n            //    removalPenalty.\n            else if (optionsProp !== undefined && formatProp === undefined)\n                score -= removalPenalty;\n\n            // vi. Else\n            else {\n                var\n                // 1. Let values be the array [\"2-digit\", \"numeric\", \"narrow\", \"short\",\n                //    \"long\"].\n                    values = [ '2-digit', 'numeric', 'narrow', 'short', 'long' ],\n\n                // 2. Let optionsPropIndex be the index of optionsProp within values.\n                    optionsPropIndex = arrIndexOf.call(values, optionsProp),\n\n                // 3. Let formatPropIndex be the index of formatProp within values.\n                    formatPropIndex = arrIndexOf.call(values, formatProp),\n\n                // 4. Let delta be max(min(formatPropIndex - optionsPropIndex, 2), -2).\n                    delta = Math.max(Math.min(formatPropIndex - optionsPropIndex, 2), -2);\n\n                // When the bestFit argument is true, subtract additional penalty where data types are not the same\n                if (bestFit && (\n                    ((optionsProp === 'numeric' || optionsProp === '2-digit') && (formatProp !== 'numeric' && formatProp !== '2-digit') || (optionsProp !== 'numeric' && optionsProp !== '2-digit') && (formatProp === '2-digit' || formatProp === 'numeric'))\n                ))\n                    score -= diffDataTypePenalty;\n\n                // 5. If delta = 2, decrease score by longMorePenalty.\n                if (delta === 2)\n                    score -= longMorePenalty;\n\n                // 6. Else if delta = 1, decrease score by shortMorePenalty.\n                else if (delta === 1)\n                    score -= shortMorePenalty;\n\n                // 7. Else if delta = -1, decrease score by shortLessPenalty.\n                else if (delta === -1)\n                    score -= shortLessPenalty;\n\n                // 8. Else if delta = -2, decrease score by longLessPenalty.\n                else if (delta === -2)\n                    score -= longLessPenalty;\n            }\n        }\n\n        // d. If score > bestScore, then\n        if (score > bestScore) {\n            // i. Let bestScore be score.\n            bestScore = score;\n\n            // ii. Let bestFormat be format.\n            bestFormat = format;\n        }\n\n        // e. Increase i by 1.\n        i++;\n    }\n\n    // 12. Return bestFormat.\n    return bestFormat;\n}\n\n/**\n * When the BestFitFormatMatcher abstract operation is called with two arguments options\n * and formats, it performs implementation dependent steps, which should return a set of\n * component representations that a typical user of the selected locale would perceive as\n * at least as good as the one returned by BasicFormatMatcher.\n *\n * This polyfill defines the algorithm to be the same as BasicFormatMatcher,\n * with the addition of bonus points awarded where the requested format is of\n * the same data type as the potentially matching format.\n *\n * For example,\n *\n *     { month: 'numeric', day: 'numeric' }\n *\n * should match\n *\n *     { month: '2-digit', day: '2-digit' }\n *\n * rather than\n *\n *     { month: 'short', day: 'numeric' }\n *\n * This makes sense because a user requesting a formatted date with numeric parts would\n * not expect to see the returned format containing narrow, short or long part names\n */\nfunction BestFitFormatMatcher (options, formats) {\n    return calculateScore(options, formats, true);\n}\n\n/* 12.2.3 */internals.DateTimeFormat = {\n    '[[availableLocales]]': [],\n    '[[relevantExtensionKeys]]': ['ca', 'nu'],\n    '[[localeData]]': {}\n};\n\n/**\n * When the supportedLocalesOf method of Intl.DateTimeFormat is called, the\n * following steps are taken:\n */\n/* 12.2.2 */defineProperty(Intl.DateTimeFormat, 'supportedLocalesOf', {\n    configurable: true,\n    writable: true,\n    value: fnBind.call(supportedLocalesOf, internals.DateTimeFormat)\n});\n\n/**\n * This named accessor property returns a function that formats a number\n * according to the effective locale and the formatting options of this\n * DateTimeFormat object.\n */\n/* 12.3.2 */defineProperty(Intl.DateTimeFormat.prototype, 'format', {\n    configurable: true,\n    get: GetFormatDateTime\n});\n\nfunction GetFormatDateTime() {\n    var internal = this != null && typeof this === 'object' && getInternalProperties(this);\n\n    // Satisfy test 12.3_b\n    if (!internal || !internal['[[initializedDateTimeFormat]]'])\n        throw new TypeError('`this` value for format() is not an initialized Intl.DateTimeFormat object.');\n\n    // The value of the [[Get]] attribute is a function that takes the following\n    // steps:\n\n    // 1. If the [[boundFormat]] internal property of this DateTimeFormat object\n    //    is undefined, then:\n    if (internal['[[boundFormat]]'] === undefined) {\n        var\n        // a. Let F be a Function object, with internal properties set as\n        //    specified for built-in functions in ES5, 15, or successor, and the\n        //    length property set to 0, that takes the argument date and\n        //    performs the following steps:\n            F = function () {\n                //   i. If date is not provided or is undefined, then let x be the\n                //      result as if by the expression Date.now() where Date.now is\n                //      the standard built-in function defined in ES5, 15.9.4.4.\n                //  ii. Else let x be ToNumber(date).\n                // iii. Return the result of calling the FormatDateTime abstract\n                //      operation (defined below) with arguments this and x.\n                var x = Number(arguments.length === 0 ? Date.now() : arguments[0]);\n                return FormatDateTime(this, x);\n            },\n        // b. Let bind be the standard built-in function object defined in ES5,\n        //    15.3.4.5.\n        // c. Let bf be the result of calling the [[Call]] internal method of\n        //    bind with F as the this value and an argument list containing\n        //    the single item this.\n            bf = fnBind.call(F, this);\n        // d. Set the [[boundFormat]] internal property of this NumberFormat\n        //    object to bf.\n        internal['[[boundFormat]]'] = bf;\n    }\n    // Return the value of the [[boundFormat]] internal property of this\n    // NumberFormat object.\n    return internal['[[boundFormat]]'];\n}\n\n/**\n * When the FormatDateTime abstract operation is called with arguments dateTimeFormat\n * (which must be an object initialized as a DateTimeFormat) and x (which must be a Number\n * value), it returns a String value representing x (interpreted as a time value as\n * specified in ES5, 15.9.1.1) according to the effective locale and the formatting\n * options of dateTimeFormat.\n */\nfunction FormatDateTime(dateTimeFormat, x) {\n    // 1. If x is not a finite Number, then throw a RangeError exception.\n    if (!isFinite(x))\n        throw new RangeError('Invalid valid date passed to format');\n\n    var\n        internal = dateTimeFormat.__getInternalProperties(secret),\n\n    // Creating restore point for properties on the RegExp object... please wait\n        regexpState = createRegExpRestore(),\n\n    // 2. Let locale be the value of the [[locale]] internal property of dateTimeFormat.\n        locale = internal['[[locale]]'],\n\n    // 3. Let nf be the result of creating a new NumberFormat object as if by the\n    // expression new Intl.NumberFormat([locale], {useGrouping: false}) where\n    // Intl.NumberFormat is the standard built-in constructor defined in 11.1.3.\n        nf = new Intl.NumberFormat([locale], {useGrouping: false}),\n\n    // 4. Let nf2 be the result of creating a new NumberFormat object as if by the\n    // expression new Intl.NumberFormat([locale], {minimumIntegerDigits: 2, useGrouping:\n    // false}) where Intl.NumberFormat is the standard built-in constructor defined in\n    // 11.1.3.\n        nf2 = new Intl.NumberFormat([locale], {minimumIntegerDigits: 2, useGrouping: false}),\n\n    // 5. Let tm be the result of calling the ToLocalTime abstract operation (defined\n    // below) with x, the value of the [[calendar]] internal property of dateTimeFormat,\n    // and the value of the [[timeZone]] internal property of dateTimeFormat.\n        tm = ToLocalTime(x, internal['[[calendar]]'], internal['[[timeZone]]']),\n\n    // 6. Let result be the value of the [[pattern]] internal property of dateTimeFormat.\n        result = internal['[[pattern]]'],\n\n    // Need the locale minus any extensions\n        dataLocale = internal['[[dataLocale]]'],\n\n    // Need the calendar data from CLDR\n        localeData = internals.DateTimeFormat['[[localeData]]'][dataLocale].calendars,\n        ca = internal['[[calendar]]'];\n\n    // 7. For each row of Table 3, except the header row, do:\n    for (var p in dateTimeComponents) {\n        // a. If dateTimeFormat has an internal property with the name given in the\n        //    Property column of the row, then:\n        if (hop.call(internal, '[['+ p +']]')) {\n            var\n            // Assigned values below\n                pm, fv,\n\n            //   i. Let p be the name given in the Property column of the row.\n            //  ii. Let f be the value of the [[

]] internal property of dateTimeFormat.\n f = internal['[['+ p +']]'],\n\n // iii. Let v be the value of tm.[[

]].\n v = tm['[['+ p +']]'];\n\n // iv. If p is \"year\" and v ≤ 0, then let v be 1 - v.\n if (p === 'year' && v <= 0)\n v = 1 - v;\n\n // v. If p is \"month\", then increase v by 1.\n else if (p === 'month')\n v++;\n\n // vi. If p is \"hour\" and the value of the [[hour12]] internal property of\n // dateTimeFormat is true, then\n else if (p === 'hour' && internal['[[hour12]]'] === true) {\n // 1. Let v be v modulo 12.\n v = v % 12;\n\n // 2. If v is equal to the value of tm.[[

]], then let pm be false; else\n // let pm be true.\n pm = v !== tm['[['+ p +']]'];\n\n // 3. If v is 0 and the value of the [[hourNo0]] internal property of\n // dateTimeFormat is true, then let v be 12.\n if (v === 0 && internal['[[hourNo0]]'] === true)\n v = 12;\n }\n\n // vii. If f is \"numeric\", then\n if (f === 'numeric')\n // 1. Let fv be the result of calling the FormatNumber abstract operation\n // (defined in 11.3.2) with arguments nf and v.\n fv = FormatNumber(nf, v);\n\n // viii. Else if f is \"2-digit\", then\n else if (f === '2-digit') {\n // 1. Let fv be the result of calling the FormatNumber abstract operation\n // with arguments nf2 and v.\n fv = FormatNumber(nf2, v);\n\n // 2. If the length of fv is greater than 2, let fv be the substring of fv\n // containing the last two characters.\n if (fv.length > 2)\n fv = fv.slice(-2);\n }\n\n // ix. Else if f is \"narrow\", \"short\", or \"long\", then let fv be a String\n // value representing f in the desired form; the String value depends upon\n // the implementation and the effective locale and calendar of\n // dateTimeFormat. If p is \"month\", then the String value may also depend\n // on whether dateTimeFormat has a [[day]] internal property. If p is\n // \"timeZoneName\", then the String value may also depend on the value of\n // the [[inDST]] field of tm.\n else if (f in dateWidths) {\n switch (p) {\n case 'month':\n fv = resolveDateString(localeData, ca, 'months', f, tm['[['+ p +']]']);\n break;\n\n case 'weekday':\n try {\n fv = resolveDateString(localeData, ca, 'days', f, tm['[['+ p +']]']);\n // fv = resolveDateString(ca.days, f)[tm['[['+ p +']]']];\n } catch (e) {\n throw new Error('Could not find weekday data for locale '+locale);\n }\n break;\n\n case 'timeZoneName':\n fv = ''; // TODO\n break;\n\n // TODO: Era\n default:\n fv = tm['[['+ p +']]'];\n }\n }\n\n // x. Replace the substring of result that consists of \"{\", p, and \"}\", with\n // fv.\n result = result.replace('{'+ p +'}', fv);\n }\n }\n // 8. If dateTimeFormat has an internal property [[hour12]] whose value is true, then\n if (internal['[[hour12]]'] === true) {\n // a. If pm is true, then let fv be an implementation and locale dependent String\n // value representing “post meridiem”; else let fv be an implementation and\n // locale dependent String value representing “ante meridiem”.\n fv = resolveDateString(localeData, ca, 'dayPeriods', pm ? 'pm' : 'am');\n\n // b. Replace the substring of result that consists of \"{ampm}\", with fv.\n result = result.replace('{ampm}', fv);\n }\n\n // Restore properties of the RegExp object\n regexpState.exp.test(regexpState.input);\n\n // 9. Return result.\n return result;\n}\n\n/**\n * When the ToLocalTime abstract operation is called with arguments date, calendar, and\n * timeZone, the following steps are taken:\n */\nfunction ToLocalTime(date, calendar, timeZone) {\n // 1. Apply calendrical calculations on date for the given calendar and time zone to\n // produce weekday, era, year, month, day, hour, minute, second, and inDST values.\n // The calculations should use best available information about the specified\n // calendar and time zone. If the calendar is \"gregory\", then the calculations must\n // match the algorithms specified in ES5, 15.9.1, except that calculations are not\n // bound by the restrictions on the use of best available information on time zones\n // for local time zone adjustment and daylight saving time adjustment imposed by\n // ES5, 15.9.1.7 and 15.9.1.8.\n // ###TODO###\n var d = new Date(date),\n m = 'get' + (timeZone || '');\n\n // 2. Return a Record with fields [[weekday]], [[era]], [[year]], [[month]], [[day]],\n // [[hour]], [[minute]], [[second]], and [[inDST]], each with the corresponding\n // calculated value.\n return new Record({\n '[[weekday]]': d[m + 'Day'](),\n '[[era]]' : +(d[m + 'FullYear']() >= 0),\n '[[year]]' : d[m + 'FullYear'](),\n '[[month]]' : d[m + 'Month'](),\n '[[day]]' : d[m + 'Date'](),\n '[[hour]]' : d[m + 'Hours'](),\n '[[minute]]' : d[m + 'Minutes'](),\n '[[second]]' : d[m + 'Seconds'](),\n '[[inDST]]' : false // ###TODO###\n });\n}\n\n/**\n * The function returns a new object whose properties and attributes are set as if\n * constructed by an object literal assigning to each of the following properties the\n * value of the corresponding internal property of this DateTimeFormat object (see 12.4):\n * locale, calendar, numberingSystem, timeZone, hour12, weekday, era, year, month, day,\n * hour, minute, second, and timeZoneName. Properties whose corresponding internal\n * properties are not present are not assigned.\n */\n/* 12.3.3 */defineProperty(Intl.DateTimeFormat.prototype, 'resolvedOptions', {\n writable: true,\n configurable: true,\n value: function () {\n var prop,\n descs = new Record(),\n props = [\n 'locale', 'calendar', 'numberingSystem', 'timeZone', 'hour12', 'weekday',\n 'era', 'year', 'month', 'day', 'hour', 'minute', 'second', 'timeZoneName'\n ],\n internal = this != null && typeof this === 'object' && getInternalProperties(this);\n\n // Satisfy test 12.3_b\n if (!internal || !internal['[[initializedDateTimeFormat]]'])\n throw new TypeError('`this` value for resolvedOptions() is not an initialized Intl.DateTimeFormat object.');\n\n for (var i = 0, max = props.length; i < max; i++) {\n if (hop.call(internal, prop = '[[' + props[i] + ']]'))\n descs[props[i]] = { value: internal[prop], writable: true, configurable: true, enumerable: true };\n }\n\n return objCreate({}, descs);\n }\n});\n\n// Sect 13 Locale Sensitive Functions of the ECMAScript Language Specification\n// ===========================================================================\n\nvar ls = Intl.__localeSensitiveProtos = {\n Number: {},\n Date: {}\n};\n\n/**\n * When the toLocaleString method is called with optional arguments locales and options,\n * the following steps are taken:\n */\n/* 13.2.1 */ls.Number.toLocaleString = function () {\n // Satisfy test 13.2.1_1\n if (Object.prototype.toString.call(this) !== '[object Number]')\n throw new TypeError('`this` value must be a number for Number.prototype.toLocaleString()');\n\n // 1. Let x be this Number value (as defined in ES5, 15.7.4).\n // 2. If locales is not provided, then let locales be undefined.\n // 3. If options is not provided, then let options be undefined.\n // 4. Let numberFormat be the result of creating a new object as if by the\n // expression new Intl.NumberFormat(locales, options) where\n // Intl.NumberFormat is the standard built-in constructor defined in 11.1.3.\n // 5. Return the result of calling the FormatNumber abstract operation\n // (defined in 11.3.2) with arguments numberFormat and x.\n return FormatNumber(new NumberFormatConstructor(arguments[0], arguments[1]), this);\n};\n\n/**\n * When the toLocaleString method is called with optional arguments locales and options,\n * the following steps are taken:\n */\n/* 13.3.1 */ls.Date.toLocaleString = function () {\n // Satisfy test 13.3.0_1\n if (Object.prototype.toString.call(this) !== '[object Date]')\n throw new TypeError('`this` value must be a Date instance for Date.prototype.toLocaleString()');\n\n var\n // 1. Let x be this time value (as defined in ES5, 15.9.5).\n x = +this;\n\n // 2. If x is NaN, then return \"Invalid Date\".\n if (isNaN(x))\n return 'Invalid Date';\n\n var\n // 3. If locales is not provided, then let locales be undefined.\n locales = arguments[0],\n\n // 4. If options is not provided, then let options be undefined.\n options = arguments[1],\n\n // 5. Let options be the result of calling the ToDateTimeOptions abstract\n // operation (defined in 12.1.1) with arguments options, \"any\", and \"all\".\n options = ToDateTimeOptions(options, 'any', 'all'),\n\n // 6. Let dateTimeFormat be the result of creating a new object as if by the\n // expression new Intl.DateTimeFormat(locales, options) where\n // Intl.DateTimeFormat is the standard built-in constructor defined in 12.1.3.\n dateTimeFormat = new DateTimeFormatConstructor(locales, options);\n\n // 7. Return the result of calling the FormatDateTime abstract operation (defined\n // in 12.3.2) with arguments dateTimeFormat and x.\n return FormatDateTime(dateTimeFormat, x);\n};\n\n/**\n * When the toLocaleDateString method is called with optional arguments locales and\n * options, the following steps are taken:\n */\n/* 13.3.2 */ls.Date.toLocaleDateString = function () {\n // Satisfy test 13.3.0_1\n if (Object.prototype.toString.call(this) !== '[object Date]')\n throw new TypeError('`this` value must be a Date instance for Date.prototype.toLocaleDateString()');\n\n var\n // 1. Let x be this time value (as defined in ES5, 15.9.5).\n x = +this;\n\n // 2. If x is NaN, then return \"Invalid Date\".\n if (isNaN(x))\n return 'Invalid Date';\n\n var\n // 3. If locales is not provided, then let locales be undefined.\n locales = arguments[0],\n\n // 4. If options is not provided, then let options be undefined.\n options = arguments[1],\n\n // 5. Let options be the result of calling the ToDateTimeOptions abstract\n // operation (defined in 12.1.1) with arguments options, \"date\", and \"date\".\n options = ToDateTimeOptions(options, 'date', 'date'),\n\n // 6. Let dateTimeFormat be the result of creating a new object as if by the\n // expression new Intl.DateTimeFormat(locales, options) where\n // Intl.DateTimeFormat is the standard built-in constructor defined in 12.1.3.\n dateTimeFormat = new DateTimeFormatConstructor(locales, options);\n\n // 7. Return the result of calling the FormatDateTime abstract operation (defined\n // in 12.3.2) with arguments dateTimeFormat and x.\n return FormatDateTime(dateTimeFormat, x);\n};\n\n/**\n * When the toLocaleTimeString method is called with optional arguments locales and\n * options, the following steps are taken:\n */\n/* 13.3.3 */ls.Date.toLocaleTimeString = function () {\n // Satisfy test 13.3.0_1\n if (Object.prototype.toString.call(this) !== '[object Date]')\n throw new TypeError('`this` value must be a Date instance for Date.prototype.toLocaleTimeString()');\n\n var\n // 1. Let x be this time value (as defined in ES5, 15.9.5).\n x = +this;\n\n // 2. If x is NaN, then return \"Invalid Date\".\n if (isNaN(x))\n return 'Invalid Date';\n\n var\n // 3. If locales is not provided, then let locales be undefined.\n locales = arguments[0],\n\n // 4. If options is not provided, then let options be undefined.\n options = arguments[1],\n\n // 5. Let options be the result of calling the ToDateTimeOptions abstract\n // operation (defined in 12.1.1) with arguments options, \"time\", and \"time\".\n options = ToDateTimeOptions(options, 'time', 'time'),\n\n // 6. Let dateTimeFormat be the result of creating a new object as if by the\n // expression new Intl.DateTimeFormat(locales, options) where\n // Intl.DateTimeFormat is the standard built-in constructor defined in 12.1.3.\n dateTimeFormat = new DateTimeFormatConstructor(locales, options);\n\n // 7. Return the result of calling the FormatDateTime abstract operation (defined\n // in 12.3.2) with arguments dateTimeFormat and x.\n return FormatDateTime(dateTimeFormat, x);\n};\n\ndefineProperty(Intl, '__applyLocaleSensitivePrototypes', {\n writable: true,\n configurable: true,\n value: function () {\n defineProperty(Number.prototype, 'toLocaleString', { writable: true, configurable: true, value: ls.Number.toLocaleString });\n // Need this here for IE 8, to avoid the _DontEnum_ bug\n defineProperty(Date.prototype, 'toLocaleString', { writable: true, configurable: true, value: ls.Date.toLocaleString });\n\n for (var k in ls.Date) {\n if (hop.call(ls.Date, k))\n defineProperty(Date.prototype, k, { writable: true, configurable: true, value: ls.Date[k] });\n }\n }\n});\n\n/**\n * Can't really ship a single script with data for hundreds of locales, so we provide\n * this __addLocaleData method as a means for the developer to add the data on an\n * as-needed basis\n */\ndefineProperty(Intl, '__addLocaleData', {\n value: function (data) {\n if (!IsStructurallyValidLanguageTag(data.locale))\n throw new Error(\"Object passed doesn't identify itself with a valid language tag\");\n\n addLocaleData(data, data.locale);\n }\n});\n\nfunction addLocaleData (data, tag) {\n // Both NumberFormat and DateTimeFormat require number data, so throw if it isn't present\n if (!data.number)\n throw new Error(\"Object passed doesn't contain locale data for Intl.NumberFormat\");\n\n var locale,\n locales = [ tag ],\n parts = tag.split('-');\n\n // Create fallbacks for locale data with scripts, e.g. Latn, Hans, Vaii, etc\n if (parts.length > 2 && parts[1].length === 4)\n arrPush.call(locales, parts[0] + '-' + parts[2]);\n\n while (locale = arrShift.call(locales)) {\n // Add to NumberFormat internal properties as per 11.2.3\n arrPush.call(internals.NumberFormat['[[availableLocales]]'], locale);\n internals.NumberFormat['[[localeData]]'][locale] = data.number;\n\n // ...and DateTimeFormat internal properties as per 12.2.3\n if (data.date) {\n data.date.nu = data.number.nu;\n arrPush.call(internals.DateTimeFormat['[[availableLocales]]'], locale);\n internals.DateTimeFormat['[[localeData]]'][locale] = data.date;\n }\n }\n\n // If this is the first set of locale data added, make it the default\n if (defaultLocale === undefined)\n defaultLocale = tag;\n\n // 11.3 (the NumberFormat prototype object is an Intl.NumberFormat instance)\n if (!numberFormatProtoInitialised) {\n InitializeNumberFormat(Intl.NumberFormat.prototype);\n numberFormatProtoInitialised = true;\n }\n\n // 11.3 (the NumberFormat prototype object is an Intl.NumberFormat instance)\n if (data.date && !dateTimeFormatProtoInitialised) {\n InitializeDateTimeFormat(Intl.DateTimeFormat.prototype);\n dateTimeFormatProtoInitialised = true;\n }\n}\n\n// Helper functions\n// ================\n\n/**\n * A function to deal with the inaccuracy of calculating log10 in pre-ES6\n * JavaScript environments. Math.log(num) / Math.LN10 was responsible for\n * causing issue #62.\n */\nfunction log10Floor (n) {\n // ES6 provides the more accurate Math.log10\n if (typeof Math.log10 === 'function')\n return Math.floor(Math.log10(n));\n\n var x = Math.round(Math.log(n) * Math.LOG10E);\n return x - (Number('1e' + x) > n);\n}\n\n/**\n * A merge of the Intl.{Constructor}.supportedLocalesOf functions\n * To make life easier, the function should be bound to the constructor's internal\n * properties object.\n */\nfunction supportedLocalesOf(locales) {\n /*jshint validthis:true */\n\n // Bound functions only have the `this` value altered if being used as a constructor,\n // this lets us imitate a native function that has no constructor\n if (!hop.call(this, '[[availableLocales]]'))\n throw new TypeError('supportedLocalesOf() is not a constructor');\n\n var\n // Create an object whose props can be used to restore the values of RegExp props\n regexpState = createRegExpRestore(),\n\n // 1. If options is not provided, then let options be undefined.\n options = arguments[1],\n\n // 2. Let availableLocales be the value of the [[availableLocales]] internal\n // property of the standard built-in object that is the initial value of\n // Intl.NumberFormat.\n\n availableLocales = this['[[availableLocales]]'],\n\n // 3. Let requestedLocales be the result of calling the CanonicalizeLocaleList\n // abstract operation (defined in 9.2.1) with argument locales.\n requestedLocales = CanonicalizeLocaleList(locales);\n\n // Restore the RegExp properties\n regexpState.exp.test(regexpState.input);\n\n // 4. Return the result of calling the SupportedLocales abstract operation\n // (defined in 9.2.8) with arguments availableLocales, requestedLocales,\n // and options.\n return SupportedLocales(availableLocales, requestedLocales, options);\n}\n\n/**\n * Returns a string for a date component, resolved using multiple inheritance as specified\n * as specified in the Unicode Technical Standard 35.\n */\nfunction resolveDateString(data, ca, component, width, key) {\n // From http://www.unicode.org/reports/tr35/tr35.html#Multiple_Inheritance:\n // 'In clearly specified instances, resources may inherit from within the same locale.\n // For example, ... the Buddhist calendar inherits from the Gregorian calendar.'\n var obj = data[ca] && data[ca][component]\n ? data[ca][component]\n : data.gregory[component],\n\n // \"sideways\" inheritance resolves strings when a key doesn't exist\n alts = {\n narrow: ['short', 'long'],\n short: ['long', 'narrow'],\n long: ['short', 'narrow']\n },\n\n //\n resolved = hop.call(obj, width)\n ? obj[width]\n : hop.call(obj, alts[width][0])\n ? obj[alts[width][0]]\n : obj[alts[width][1]];\n\n // `key` wouldn't be specified for components 'dayPeriods'\n return key != null ? resolved[key] : resolved;\n}\n\n/**\n * A map that doesn't contain Object in its prototype chain\n */\nRecord.prototype = objCreate(null);\nfunction Record (obj) {\n // Copy only own properties over unless this object is already a Record instance\n for (var k in obj) {\n if (obj instanceof Record || hop.call(obj, k))\n defineProperty(this, k, { value: obj[k], enumerable: true, writable: true, configurable: true });\n }\n}\n\n/**\n * An ordered list\n */\nList.prototype = objCreate(null);\nfunction List() {\n defineProperty(this, 'length', { writable:true, value: 0 });\n\n if (arguments.length)\n arrPush.apply(this, arrSlice.call(arguments));\n}\n\n/**\n * Constructs a regular expression to restore tainted RegExp properties\n */\nfunction createRegExpRestore () {\n var esc = /[.?*+^$[\\]\\\\(){}|-]/g,\n lm = RegExp.lastMatch || '',\n ml = RegExp.multiline ? 'm' : '',\n ret = { input: RegExp.input },\n reg = new List(),\n has = false,\n cap = {};\n\n // Create a snapshot of all the 'captured' properties\n for (var i = 1; i <= 9; i++)\n has = (cap['$'+i] = RegExp['$'+i]) || has;\n\n // Now we've snapshotted some properties, escape the lastMatch string\n lm = lm.replace(esc, '\\\\$&');\n\n // If any of the captured strings were non-empty, iterate over them all\n if (has) {\n for (var i = 1; i <= 9; i++) {\n var m = cap['$'+i];\n\n // If it's empty, add an empty capturing group\n if (!m)\n lm = '()' + lm;\n\n // Else find the string in lm and escape & wrap it to capture it\n else {\n m = m.replace(esc, '\\\\$&');\n lm = lm.replace(m, '(' + m + ')');\n }\n\n // Push it to the reg and chop lm to make sure further groups come after\n arrPush.call(reg, lm.slice(0, lm.indexOf('(') + 1));\n lm = lm.slice(lm.indexOf('(') + 1);\n }\n }\n\n // Create the regular expression that will reconstruct the RegExp properties\n ret.exp = new RegExp(arrJoin.call(reg, '') + lm, ml);\n\n return ret;\n}\n\n/**\n * Convert only a-z to uppercase as per section 6.1 of the spec\n */\nfunction toLatinUpperCase (str) {\n var i = str.length;\n\n while (i--) {\n var ch = str.charAt(i);\n\n if (ch >= \"a\" && ch <= \"z\")\n str = str.slice(0, i) + ch.toUpperCase() + str.slice(i+1);\n }\n\n return str;\n}\n\n/**\n * Mimics ES5's abstract ToObject() function\n */\nfunction toObject (arg) {\n if (arg == null)\n throw new TypeError('Cannot convert null or undefined to object');\n\n return Object(arg);\n}\n\n/**\n * Returns \"internal\" properties for an object\n */\nfunction getInternalProperties (obj) {\n if (hop.call(obj, '__getInternalProperties'))\n return obj.__getInternalProperties(secret);\n else\n return objCreate(null);\n}\n\nexports[\"default\"] = Intl;\n\n//# sourceMappingURL=core.js.map","/* jshint esnext: true, laxbreak:true */\n\n/**\n* Defines regular expressions for various operations related to the BCP 47 syntax,\n* as defined at http://tools.ietf.org/html/bcp47#section-2.1\n*/\n\n\"use strict\";\n\nvar\n // extlang = 3ALPHA ; selected ISO 639 codes\n // *2(\"-\" 3ALPHA) ; permanently reserved\n extlang = '[a-z]{3}(?:-[a-z]{3}){0,2}',\n\n // language = 2*3ALPHA ; shortest ISO 639 code\n // [\"-\" extlang] ; sometimes followed by\n // ; extended language subtags\n // / 4ALPHA ; or reserved for future use\n // / 5*8ALPHA ; or registered language subtag\n language = '(?:[a-z]{2,3}(?:-' + extlang + ')?|[a-z]{4}|[a-z]{5,8})',\n\n // script = 4ALPHA ; ISO 15924 code\n script = '[a-z]{4}',\n\n // region = 2ALPHA ; ISO 3166-1 code\n // / 3DIGIT ; UN M.49 code\n region = '(?:[a-z]{2}|\\\\d{3})',\n\n // variant = 5*8alphanum ; registered variants\n // / (DIGIT 3alphanum)\n variant = '(?:[a-z0-9]{5,8}|\\\\d[a-z0-9]{3})',\n\n // ; Single alphanumerics\n // ; \"x\" reserved for private use\n // singleton = DIGIT ; 0 - 9\n // / %x41-57 ; A - W\n // / %x59-5A ; Y - Z\n // / %x61-77 ; a - w\n // / %x79-7A ; y - z\n singleton = '[0-9a-wy-z]',\n\n // extension = singleton 1*(\"-\" (2*8alphanum))\n extension = singleton + '(?:-[a-z0-9]{2,8})+',\n\n // privateuse = \"x\" 1*(\"-\" (1*8alphanum))\n privateuse = 'x(?:-[a-z0-9]{1,8})+',\n\n // irregular = \"en-GB-oed\" ; irregular tags do not match\n // / \"i-ami\" ; the 'langtag' production and\n // / \"i-bnn\" ; would not otherwise be\n // / \"i-default\" ; considered 'well-formed'\n // / \"i-enochian\" ; These tags are all valid,\n // / \"i-hak\" ; but most are deprecated\n // / \"i-klingon\" ; in favor of more modern\n // / \"i-lux\" ; subtags or subtag\n // / \"i-mingo\" ; combination\n // / \"i-navajo\"\n // / \"i-pwn\"\n // / \"i-tao\"\n // / \"i-tay\"\n // / \"i-tsu\"\n // / \"sgn-BE-FR\"\n // / \"sgn-BE-NL\"\n // / \"sgn-CH-DE\"\n irregular = '(?:en-GB-oed'\n + '|i-(?:ami|bnn|default|enochian|hak|klingon|lux|mingo|navajo|pwn|tao|tay|tsu)'\n + '|sgn-(?:BE-FR|BE-NL|CH-DE))',\n\n // regular = \"art-lojban\" ; these tags match the 'langtag'\n // / \"cel-gaulish\" ; production, but their subtags\n // / \"no-bok\" ; are not extended language\n // / \"no-nyn\" ; or variant subtags: their meaning\n // / \"zh-guoyu\" ; is defined by their registration\n // / \"zh-hakka\" ; and all of these are deprecated\n // / \"zh-min\" ; in favor of a more modern\n // / \"zh-min-nan\" ; subtag or sequence of subtags\n // / \"zh-xiang\"\n regular = '(?:art-lojban|cel-gaulish|no-bok|no-nyn'\n + '|zh-(?:guoyu|hakka|min|min-nan|xiang))',\n\n // grandfathered = irregular ; non-redundant tags registered\n // / regular ; during the RFC 3066 era\n grandfathered = '(?:' + irregular + '|' + regular + ')',\n\n // langtag = language\n // [\"-\" script]\n // [\"-\" region]\n // *(\"-\" variant)\n // *(\"-\" extension)\n // [\"-\" privateuse]\n langtag = language + '(?:-' + script + ')?(?:-' + region + ')?(?:-'\n + variant + ')*(?:-' + extension + ')*(?:-' + privateuse + ')?';\n\nvar expBCP47Syntax = RegExp('^(?:'+langtag+'|'+privateuse+'|'+grandfathered+')$', 'i');\n\nvar expVariantDupes = RegExp('^(?!x).*?-('+variant+')-(?:\\\\w{4,8}-(?!x-))*\\\\1\\\\b', 'i');\n\nvar expSingletonDupes = RegExp('^(?!x).*?-('+singleton+')-(?:\\\\w+-(?!x-))*\\\\1\\\\b', 'i');\n\nvar expExtSequences = RegExp('-'+extension, 'ig');\nexports.expBCP47Syntax = expBCP47Syntax, exports.expVariantDupes = expVariantDupes, exports.expSingletonDupes = expSingletonDupes, exports.expExtSequences = expExtSequences;\n\n//# sourceMappingURL=exp.js.map","/**\n * @license\n * lodash 3.10.1 (Custom Build) \n * Build: `lodash modern -d -o ./index.js`\n * Copyright 2012-2015 The Dojo Foundation \n * Based on Underscore.js 1.8.3 \n * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license \n */\n;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '3.10.1';\n\n /** Used to compose bitmasks for wrapper metadata. */\n var BIND_FLAG = 1,\n BIND_KEY_FLAG = 2,\n CURRY_BOUND_FLAG = 4,\n CURRY_FLAG = 8,\n CURRY_RIGHT_FLAG = 16,\n PARTIAL_FLAG = 32,\n PARTIAL_RIGHT_FLAG = 64,\n ARY_FLAG = 128,\n REARG_FLAG = 256;\n\n /** Used as default options for `_.trunc`. */\n var DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n /** Used to detect when a function becomes hot. */\n var HOT_COUNT = 150,\n HOT_SPAN = 16;\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Used to indicate the type of lazy iteratees. */\n var LAZY_FILTER_FLAG = 1,\n LAZY_MAP_FLAG = 2;\n\n /** Used as the `TypeError` message for \"Functions\" methods. */\n var FUNC_ERROR_TEXT = 'Expected a function';\n\n /** Used as the internal argument placeholder. */\n var PLACEHOLDER = '__lodash_placeholder__';\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\n var arrayBufferTag = '[object ArrayBuffer]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n /** Used to match empty string literals in compiled template source. */\n var reEmptyStringLeading = /\\b__p \\+= '';/g,\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n /** Used to match HTML entities and HTML characters. */\n var reEscapedHtml = /&(?:amp|lt|gt|quot|#39|#96);/g,\n reUnescapedHtml = /[&<>\"'`]/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source),\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to match template delimiters. */\n var reEscape = /<%-([\\s\\S]+?)%>/g,\n reEvaluate = /<%([\\s\\S]+?)%>/g,\n reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n /** Used to match property names within property paths. */\n var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\n\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\n\\\\]|\\\\.)*?)\\2)\\]/g;\n\n /**\n * Used to match `RegExp` [syntax characters](http://ecma-international.org/ecma-262/6.0/#sec-patterns)\n * and those outlined by [`EscapeRegExpPattern`](http://ecma-international.org/ecma-262/6.0/#sec-escaperegexppattern).\n */\n var reRegExpChars = /^[:!,]|[\\\\^$.*+?()[\\]{}|\\/]|(^[0-9a-fA-Fnrtuvx])|([\\n\\r\\u2028\\u2029])/g,\n reHasRegExpChars = RegExp(reRegExpChars.source);\n\n /** Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks). */\n var reComboMark = /[\\u0300-\\u036f\\ufe20-\\ufe23]/g;\n\n /** Used to match backslashes in property paths. */\n var reEscapeChar = /\\\\(\\\\)?/g;\n\n /** Used to match [ES template delimiters](http://ecma-international.org/ecma-262/6.0/#sec-template-literal-lexical-components). */\n var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n /** Used to match `RegExp` flags from their coerced string values. */\n var reFlags = /\\w*$/;\n\n /** Used to detect hexadecimal string values. */\n var reHasHexPrefix = /^0[xX]/;\n\n /** Used to detect host constructors (Safari > 5). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^\\d+$/;\n\n /** Used to match latin-1 supplementary letters (excluding mathematical operators). */\n var reLatin1 = /[\\xc0-\\xd6\\xd8-\\xde\\xdf-\\xf6\\xf8-\\xff]/g;\n\n /** Used to ensure capturing order of template delimiters. */\n var reNoMatch = /($^)/;\n\n /** Used to match unescaped characters in compiled string literals. */\n var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n /** Used to match words to create compound words. */\n var reWords = (function() {\n var upper = '[A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde]',\n lower = '[a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff]+';\n\n return RegExp(upper + '+(?=' + upper + lower + ')|' + upper + '?' + lower + '|' + upper + '+|[0-9]+', 'g');\n }());\n\n /** Used to assign default `context` object properties. */\n var contextProps = [\n 'Array', 'ArrayBuffer', 'Date', 'Error', 'Float32Array', 'Float64Array',\n 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Math', 'Number',\n 'Object', 'RegExp', 'Set', 'String', '_', 'clearTimeout', 'isFinite',\n 'parseFloat', 'parseInt', 'setTimeout', 'TypeError', 'Uint8Array',\n 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap'\n ];\n\n /** Used to make template sourceURLs easier to identify. */\n var templateCounter = -1;\n\n /** Used to identify `toStringTag` values of typed arrays. */\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n typedArrayTags[dateTag] = typedArrayTags[errorTag] =\n typedArrayTags[funcTag] = typedArrayTags[mapTag] =\n typedArrayTags[numberTag] = typedArrayTags[objectTag] =\n typedArrayTags[regexpTag] = typedArrayTags[setTag] =\n typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;\n\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] =\n cloneableTags[arrayBufferTag] = cloneableTags[boolTag] =\n cloneableTags[dateTag] = cloneableTags[float32Tag] =\n cloneableTags[float64Tag] = cloneableTags[int8Tag] =\n cloneableTags[int16Tag] = cloneableTags[int32Tag] =\n cloneableTags[numberTag] = cloneableTags[objectTag] =\n cloneableTags[regexpTag] = cloneableTags[stringTag] =\n cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] =\n cloneableTags[mapTag] = cloneableTags[setTag] =\n cloneableTags[weakMapTag] = false;\n\n /** Used to map latin-1 supplementary letters to basic latin letters. */\n var deburredLetters = {\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcC': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xeC': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss'\n };\n\n /** Used to map characters to HTML entities. */\n var htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`'\n };\n\n /** Used to map HTML entities to characters. */\n var htmlUnescapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\",\n '`': '`'\n };\n\n /** Used to determine if values are of the language type `Object`. */\n var objectTypes = {\n 'function': true,\n 'object': true\n };\n\n /** Used to escape characters for inclusion in compiled regexes. */\n var regexpEscapes = {\n '0': 'x30', '1': 'x31', '2': 'x32', '3': 'x33', '4': 'x34',\n '5': 'x35', '6': 'x36', '7': 'x37', '8': 'x38', '9': 'x39',\n 'A': 'x41', 'B': 'x42', 'C': 'x43', 'D': 'x44', 'E': 'x45', 'F': 'x46',\n 'a': 'x61', 'b': 'x62', 'c': 'x63', 'd': 'x64', 'e': 'x65', 'f': 'x66',\n 'n': 'x6e', 'r': 'x72', 't': 'x74', 'u': 'x75', 'v': 'x76', 'x': 'x78'\n };\n\n /** Used to escape characters for inclusion in compiled string literals. */\n var stringEscapes = {\n '\\\\': '\\\\',\n \"'\": \"'\",\n '\\n': 'n',\n '\\r': 'r',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n /** Detect free variable `exports`. */\n var freeExports = objectTypes[typeof exports] && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = objectTypes[typeof module] && module && !module.nodeType && module;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = freeExports && freeModule && typeof global == 'object' && global && global.Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = objectTypes[typeof self] && self && self.Object && self;\n\n /** Detect free variable `window`. */\n var freeWindow = objectTypes[typeof window] && window && window.Object && window;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports && freeExports;\n\n /**\n * Used as a reference to the global object.\n *\n * The `this` value is used if it's the global object to avoid Greasemonkey's\n * restricted `window` object, otherwise the `window` object is used.\n */\n var root = freeGlobal || ((freeWindow !== (this && this.window)) && freeWindow) || freeSelf || this;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * The base implementation of `compareAscending` which compares values and\n * sorts them in ascending order without guaranteeing a stable sort.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\n function baseCompareAscending(value, other) {\n if (value !== other) {\n var valIsNull = value === null,\n valIsUndef = value === undefined,\n valIsReflexive = value === value;\n\n var othIsNull = other === null,\n othIsUndef = other === undefined,\n othIsReflexive = other === other;\n\n if ((value > other && !othIsNull) || !valIsReflexive ||\n (valIsNull && !othIsUndef && othIsReflexive) ||\n (valIsUndef && othIsReflexive)) {\n return 1;\n }\n if ((value < other && !valIsNull) || !othIsReflexive ||\n (othIsNull && !valIsUndef && valIsReflexive) ||\n (othIsUndef && valIsReflexive)) {\n return -1;\n }\n }\n return 0;\n }\n\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for callback shorthands and `this` binding.\n *\n * @private\n * @param {Array} array The array to search.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseFindIndex(array, predicate, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.indexOf` without support for binary searches.\n *\n * @private\n * @param {Array} array The array to search.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOf(array, value, fromIndex) {\n if (value !== value) {\n return indexOfNaN(array, fromIndex);\n }\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.isFunction` without support for environments\n * with incorrect `typeof` results.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n */\n function baseIsFunction(value) {\n // Avoid a Chakra JIT bug in compatibility modes of IE 11.\n // See https://github.com/jashkenas/underscore/issues/1621 for more details.\n return typeof value == 'function' || false;\n }\n\n /**\n * Converts `value` to a string if it's not one. An empty string is returned\n * for `null` or `undefined` values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\n function baseToString(value) {\n return value == null ? '' : (value + '');\n }\n\n /**\n * Used by `_.trim` and `_.trimLeft` to get the index of the first character\n * of `string` that is not found in `chars`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @param {string} chars The characters to find.\n * @returns {number} Returns the index of the first character not found in `chars`.\n */\n function charsLeftIndex(string, chars) {\n var index = -1,\n length = string.length;\n\n while (++index < length && chars.indexOf(string.charAt(index)) > -1) {}\n return index;\n }\n\n /**\n * Used by `_.trim` and `_.trimRight` to get the index of the last character\n * of `string` that is not found in `chars`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @param {string} chars The characters to find.\n * @returns {number} Returns the index of the last character not found in `chars`.\n */\n function charsRightIndex(string, chars) {\n var index = string.length;\n\n while (index-- && chars.indexOf(string.charAt(index)) > -1) {}\n return index;\n }\n\n /**\n * Used by `_.sortBy` to compare transformed elements of a collection and stable\n * sort them in ascending order.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @returns {number} Returns the sort order indicator for `object`.\n */\n function compareAscending(object, other) {\n return baseCompareAscending(object.criteria, other.criteria) || (object.index - other.index);\n }\n\n /**\n * Used by `_.sortByOrder` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all valuess are sorted in ascending order. Otherwise,\n * a value is sorted in ascending order if its corresponding order is \"asc\", and\n * descending if \"desc\".\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\n function compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = baseCompareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * ((order === 'asc' || order === true) ? 1 : -1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://code.google.com/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n }\n\n /**\n * Used by `_.deburr` to convert latin-1 supplementary letters to basic latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\n function deburrLetter(letter) {\n return deburredLetters[letter];\n }\n\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n function escapeHtmlChar(chr) {\n return htmlEscapes[chr];\n }\n\n /**\n * Used by `_.escapeRegExp` to escape characters for inclusion in compiled regexes.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @param {string} leadingChar The capture group for a leading character.\n * @param {string} whitespaceChar The capture group for a whitespace character.\n * @returns {string} Returns the escaped character.\n */\n function escapeRegExpChar(chr, leadingChar, whitespaceChar) {\n if (leadingChar) {\n chr = regexpEscapes[chr];\n } else if (whitespaceChar) {\n chr = stringEscapes[chr];\n }\n return '\\\\' + chr;\n }\n\n /**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n function escapeStringChar(chr) {\n return '\\\\' + stringEscapes[chr];\n }\n\n /**\n * Gets the index at which the first occurrence of `NaN` is found in `array`.\n *\n * @private\n * @param {Array} array The array to search.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched `NaN`, else `-1`.\n */\n function indexOfNaN(array, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 0 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n var other = array[index];\n if (other !== other) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * Checks if `value` is object-like.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n */\n function isObjectLike(value) {\n return !!value && typeof value == 'object';\n }\n\n /**\n * Used by `trimmedLeftIndex` and `trimmedRightIndex` to determine if a\n * character code is whitespace.\n *\n * @private\n * @param {number} charCode The character code to inspect.\n * @returns {boolean} Returns `true` if `charCode` is whitespace, else `false`.\n */\n function isSpace(charCode) {\n return ((charCode <= 160 && (charCode >= 9 && charCode <= 13) || charCode == 32 || charCode == 160) || charCode == 5760 || charCode == 6158 ||\n (charCode >= 8192 && (charCode <= 8202 || charCode == 8232 || charCode == 8233 || charCode == 8239 || charCode == 8287 || charCode == 12288 || charCode == 65279)));\n }\n\n /**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\n function replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = -1,\n result = [];\n\n while (++index < length) {\n if (array[index] === placeholder) {\n array[index] = PLACEHOLDER;\n result[++resIndex] = index;\n }\n }\n return result;\n }\n\n /**\n * An implementation of `_.uniq` optimized for sorted arrays without support\n * for callback shorthands and `this` binding.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The function invoked per iteration.\n * @returns {Array} Returns the new duplicate-value-free array.\n */\n function sortedUniq(array, iteratee) {\n var seen,\n index = -1,\n length = array.length,\n resIndex = -1,\n result = [];\n\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value, index, array) : value;\n\n if (!index || seen !== computed) {\n seen = computed;\n result[++resIndex] = value;\n }\n }\n return result;\n }\n\n /**\n * Used by `_.trim` and `_.trimLeft` to get the index of the first non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the first non-whitespace character.\n */\n function trimmedLeftIndex(string) {\n var index = -1,\n length = string.length;\n\n while (++index < length && isSpace(string.charCodeAt(index))) {}\n return index;\n }\n\n /**\n * Used by `_.trim` and `_.trimRight` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\n function trimmedRightIndex(string) {\n var index = string.length;\n\n while (index-- && isSpace(string.charCodeAt(index))) {}\n return index;\n }\n\n /**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\n function unescapeHtmlChar(chr) {\n return htmlUnescapes[chr];\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Create a new pristine `lodash` function using the given `context` object.\n *\n * @static\n * @memberOf _\n * @category Utility\n * @param {Object} [context=root] The context object.\n * @returns {Function} Returns a new `lodash` function.\n * @example\n *\n * _.mixin({ 'foo': _.constant('foo') });\n *\n * var lodash = _.runInContext();\n * lodash.mixin({ 'bar': lodash.constant('bar') });\n *\n * _.isFunction(_.foo);\n * // => true\n * _.isFunction(_.bar);\n * // => false\n *\n * lodash.isFunction(lodash.foo);\n * // => false\n * lodash.isFunction(lodash.bar);\n * // => true\n *\n * // using `context` to mock `Date#getTime` use in `_.now`\n * var mock = _.runInContext({\n * 'Date': function() {\n * return { 'getTime': getTimeMock };\n * }\n * });\n *\n * // or creating a suped-up `defer` in Node.js\n * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n */\n function runInContext(context) {\n // Avoid issues with some ES3 environments that attempt to use values, named\n // after built-in constructors like `Object`, for the creation of literals.\n // ES5 clears this up by stating that literals must use built-in constructors.\n // See https://es5.github.io/#x11.1.5 for more details.\n context = context ? _.defaults(root.Object(), context, _.pick(root, contextProps)) : root;\n\n /** Native constructor references. */\n var Array = context.Array,\n Date = context.Date,\n Error = context.Error,\n Function = context.Function,\n Math = context.Math,\n Number = context.Number,\n Object = context.Object,\n RegExp = context.RegExp,\n String = context.String,\n TypeError = context.TypeError;\n\n /** Used for native method references. */\n var arrayProto = Array.prototype,\n objectProto = Object.prototype,\n stringProto = String.prototype;\n\n /** Used to resolve the decompiled source of functions. */\n var fnToString = Function.prototype.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\n\n /**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\n var objToString = objectProto.toString;\n\n /** Used to restore the original `_` reference in `_.noConflict`. */\n var oldDash = root._;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' +\n fnToString.call(hasOwnProperty).replace(/[\\\\^$.*+?()[\\]{}|]/g, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n );\n\n /** Native method references. */\n var ArrayBuffer = context.ArrayBuffer,\n clearTimeout = context.clearTimeout,\n parseFloat = context.parseFloat,\n pow = Math.pow,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n Set = getNative(context, 'Set'),\n setTimeout = context.setTimeout,\n splice = arrayProto.splice,\n Uint8Array = context.Uint8Array,\n WeakMap = getNative(context, 'WeakMap');\n\n /* Native method references for those with the same name as other `lodash` methods. */\n var nativeCeil = Math.ceil,\n nativeCreate = getNative(Object, 'create'),\n nativeFloor = Math.floor,\n nativeIsArray = getNative(Array, 'isArray'),\n nativeIsFinite = context.isFinite,\n nativeKeys = getNative(Object, 'keys'),\n nativeMax = Math.max,\n nativeMin = Math.min,\n nativeNow = getNative(Date, 'now'),\n nativeParseInt = context.parseInt,\n nativeRandom = Math.random;\n\n /** Used as references for `-Infinity` and `Infinity`. */\n var NEGATIVE_INFINITY = Number.NEGATIVE_INFINITY,\n POSITIVE_INFINITY = Number.POSITIVE_INFINITY;\n\n /** Used as references for the maximum length and index of an array. */\n var MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n /**\n * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer)\n * of an array-like value.\n */\n var MAX_SAFE_INTEGER = 9007199254740991;\n\n /** Used to store function metadata. */\n var metaMap = WeakMap && new WeakMap;\n\n /** Used to lookup unminified function names. */\n var realNames = {};\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit chaining.\n * Methods that operate on and return arrays, collections, and functions can\n * be chained together. Methods that retrieve a single value or may return a\n * primitive value will automatically end the chain returning the unwrapped\n * value. Explicit chaining may be enabled using `_.chain`. The execution of\n * chained methods is lazy, that is, execution is deferred until `_#value`\n * is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion. Shortcut\n * fusion is an optimization strategy which merge iteratee calls; this can help\n * to avoid the creation of intermediate data structures and greatly reduce the\n * number of iteratee executions.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `reverse`, `shift`, `slice`, `sort`,\n * `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `compact`, `drop`, `dropRight`, `dropRightWhile`, `dropWhile`, `filter`,\n * `first`, `initial`, `last`, `map`, `pluck`, `reject`, `rest`, `reverse`,\n * `slice`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, `toArray`,\n * and `where`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `at`, `before`, `bind`, `bindAll`, `bindKey`,\n * `callback`, `chain`, `chunk`, `commit`, `compact`, `concat`, `constant`,\n * `countBy`, `create`, `curry`, `debounce`, `defaults`, `defaultsDeep`,\n * `defer`, `delay`, `difference`, `drop`, `dropRight`, `dropRightWhile`,\n * `dropWhile`, `fill`, `filter`, `flatten`, `flattenDeep`, `flow`, `flowRight`,\n * `forEach`, `forEachRight`, `forIn`, `forInRight`, `forOwn`, `forOwnRight`,\n * `functions`, `groupBy`, `indexBy`, `initial`, `intersection`, `invert`,\n * `invoke`, `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`,\n * `matchesProperty`, `memoize`, `merge`, `method`, `methodOf`, `mixin`,\n * `modArgs`, `negate`, `omit`, `once`, `pairs`, `partial`, `partialRight`,\n * `partition`, `pick`, `plant`, `pluck`, `property`, `propertyOf`, `pull`,\n * `pullAt`, `push`, `range`, `rearg`, `reject`, `remove`, `rest`, `restParam`,\n * `reverse`, `set`, `shuffle`, `slice`, `sort`, `sortBy`, `sortByAll`,\n * `sortByOrder`, `splice`, `spread`, `take`, `takeRight`, `takeRightWhile`,\n * `takeWhile`, `tap`, `throttle`, `thru`, `times`, `toArray`, `toPlainObject`,\n * `transform`, `union`, `uniq`, `unshift`, `unzip`, `unzipWith`, `values`,\n * `valuesIn`, `where`, `without`, `wrap`, `xor`, `zip`, `zipObject`, `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clone`, `cloneDeep`,\n * `deburr`, `endsWith`, `escape`, `escapeRegExp`, `every`, `find`, `findIndex`,\n * `findKey`, `findLast`, `findLastIndex`, `findLastKey`, `findWhere`, `first`,\n * `floor`, `get`, `gt`, `gte`, `has`, `identity`, `includes`, `indexOf`,\n * `inRange`, `isArguments`, `isArray`, `isBoolean`, `isDate`, `isElement`,\n * `isEmpty`, `isEqual`, `isError`, `isFinite` `isFunction`, `isMatch`,\n * `isNative`, `isNaN`, `isNull`, `isNumber`, `isObject`, `isPlainObject`,\n * `isRegExp`, `isString`, `isUndefined`, `isTypedArray`, `join`, `kebabCase`,\n * `last`, `lastIndexOf`, `lt`, `lte`, `max`, `min`, `noConflict`, `noop`,\n * `now`, `pad`, `padLeft`, `padRight`, `parseInt`, `pop`, `random`, `reduce`,\n * `reduceRight`, `repeat`, `result`, `round`, `runInContext`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedLastIndex`, `startCase`,\n * `startsWith`, `sum`, `template`, `trim`, `trimLeft`, `trimRight`, `trunc`,\n * `unescape`, `uniqueId`, `value`, and `words`\n *\n * The wrapper method `sample` will return a wrapped value when `n` is provided,\n * otherwise an unwrapped value is returned.\n *\n * @name _\n * @constructor\n * @category Chain\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // returns an unwrapped value\n * wrapped.reduce(function(total, n) {\n * return total + n;\n * });\n * // => 6\n *\n * // returns a wrapped value\n * var squares = wrapped.map(function(n) {\n * return n * n;\n * });\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__chain__') && hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n }\n\n /**\n * The function whose prototype all chaining wrappers inherit from.\n *\n * @private\n */\n function baseLodash() {\n // No operation performed.\n }\n\n /**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable chaining for all wrapper methods.\n * @param {Array} [actions=[]] Actions to peform to resolve the unwrapped value.\n */\n function LodashWrapper(value, chainAll, actions) {\n this.__wrapped__ = value;\n this.__actions__ = actions || [];\n this.__chain__ = !!chainAll;\n }\n\n /**\n * An object environment feature flags.\n *\n * @static\n * @memberOf _\n * @type Object\n */\n var support = lodash.support = {};\n\n /**\n * By default, the template delimiters used by lodash are like those in\n * embedded Ruby (ERB). Change the following template settings to use\n * alternative delimiters.\n *\n * @static\n * @memberOf _\n * @type Object\n */\n lodash.templateSettings = {\n\n /**\n * Used to detect `data` property values to be HTML-escaped.\n *\n * @memberOf _.templateSettings\n * @type RegExp\n */\n 'escape': reEscape,\n\n /**\n * Used to detect code to be evaluated.\n *\n * @memberOf _.templateSettings\n * @type RegExp\n */\n 'evaluate': reEvaluate,\n\n /**\n * Used to detect `data` property values to inject.\n *\n * @memberOf _.templateSettings\n * @type RegExp\n */\n 'interpolate': reInterpolate,\n\n /**\n * Used to reference the data object in the template text.\n *\n * @memberOf _.templateSettings\n * @type string\n */\n 'variable': '',\n\n /**\n * Used to import variables into the compiled template.\n *\n * @memberOf _.templateSettings\n * @type Object\n */\n 'imports': {\n\n /**\n * A reference to the `lodash` function.\n *\n * @memberOf _.templateSettings.imports\n * @type Function\n */\n '_': lodash\n }\n };\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @param {*} value The value to wrap.\n */\n function LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = POSITIVE_INFINITY;\n this.__views__ = [];\n }\n\n /**\n * Creates a clone of the lazy wrapper object.\n *\n * @private\n * @name clone\n * @memberOf LazyWrapper\n * @returns {Object} Returns the cloned `LazyWrapper` object.\n */\n function lazyClone() {\n var result = new LazyWrapper(this.__wrapped__);\n result.__actions__ = arrayCopy(this.__actions__);\n result.__dir__ = this.__dir__;\n result.__filtered__ = this.__filtered__;\n result.__iteratees__ = arrayCopy(this.__iteratees__);\n result.__takeCount__ = this.__takeCount__;\n result.__views__ = arrayCopy(this.__views__);\n return result;\n }\n\n /**\n * Reverses the direction of lazy iteration.\n *\n * @private\n * @name reverse\n * @memberOf LazyWrapper\n * @returns {Object} Returns the new reversed `LazyWrapper` object.\n */\n function lazyReverse() {\n if (this.__filtered__) {\n var result = new LazyWrapper(this);\n result.__dir__ = -1;\n result.__filtered__ = true;\n } else {\n result = this.clone();\n result.__dir__ *= -1;\n }\n return result;\n }\n\n /**\n * Extracts the unwrapped value from its lazy wrapper.\n *\n * @private\n * @name value\n * @memberOf LazyWrapper\n * @returns {*} Returns the unwrapped value.\n */\n function lazyValue() {\n var array = this.__wrapped__.value(),\n dir = this.__dir__,\n isArr = isArray(array),\n isRight = dir < 0,\n arrLength = isArr ? array.length : 0,\n view = getView(0, arrLength, this.__views__),\n start = view.start,\n end = view.end,\n length = end - start,\n index = isRight ? end : (start - 1),\n iteratees = this.__iteratees__,\n iterLength = iteratees.length,\n resIndex = 0,\n takeCount = nativeMin(length, this.__takeCount__);\n\n if (!isArr || arrLength < LARGE_ARRAY_SIZE || (arrLength == length && takeCount == length)) {\n return baseWrapperValue((isRight && isArr) ? array.reverse() : array, this.__actions__);\n }\n var result = [];\n\n outer:\n while (length-- && resIndex < takeCount) {\n index += dir;\n\n var iterIndex = -1,\n value = array[index];\n\n while (++iterIndex < iterLength) {\n var data = iteratees[iterIndex],\n iteratee = data.iteratee,\n type = data.type,\n computed = iteratee(value);\n\n if (type == LAZY_MAP_FLAG) {\n value = computed;\n } else if (!computed) {\n if (type == LAZY_FILTER_FLAG) {\n continue outer;\n } else {\n break outer;\n }\n }\n }\n result[resIndex++] = value;\n }\n return result;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a cache object to store key/value pairs.\n *\n * @private\n * @static\n * @name Cache\n * @memberOf _.memoize\n */\n function MapCache() {\n this.__data__ = {};\n }\n\n /**\n * Removes `key` and its value from the cache.\n *\n * @private\n * @name delete\n * @memberOf _.memoize.Cache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed successfully, else `false`.\n */\n function mapDelete(key) {\n return this.has(key) && delete this.__data__[key];\n }\n\n /**\n * Gets the cached value for `key`.\n *\n * @private\n * @name get\n * @memberOf _.memoize.Cache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the cached value.\n */\n function mapGet(key) {\n return key == '__proto__' ? undefined : this.__data__[key];\n }\n\n /**\n * Checks if a cached value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf _.memoize.Cache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function mapHas(key) {\n return key != '__proto__' && hasOwnProperty.call(this.__data__, key);\n }\n\n /**\n * Sets `value` to `key` of the cache.\n *\n * @private\n * @name set\n * @memberOf _.memoize.Cache\n * @param {string} key The key of the value to cache.\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache object.\n */\n function mapSet(key, value) {\n if (key != '__proto__') {\n this.__data__[key] = value;\n }\n return this;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n *\n * Creates a cache object to store unique values.\n *\n * @private\n * @param {Array} [values] The values to cache.\n */\n function SetCache(values) {\n var length = values ? values.length : 0;\n\n this.data = { 'hash': nativeCreate(null), 'set': new Set };\n while (length--) {\n this.push(values[length]);\n }\n }\n\n /**\n * Checks if `value` is in `cache` mimicking the return signature of\n * `_.indexOf` by returning `0` if the value is found, else `-1`.\n *\n * @private\n * @param {Object} cache The cache to search.\n * @param {*} value The value to search for.\n * @returns {number} Returns `0` if `value` is found, else `-1`.\n */\n function cacheIndexOf(cache, value) {\n var data = cache.data,\n result = (typeof value == 'string' || isObject(value)) ? data.set.has(value) : data.hash[value];\n\n return result ? 0 : -1;\n }\n\n /**\n * Adds `value` to the cache.\n *\n * @private\n * @name push\n * @memberOf SetCache\n * @param {*} value The value to cache.\n */\n function cachePush(value) {\n var data = this.data;\n if (typeof value == 'string' || isObject(value)) {\n data.set.add(value);\n } else {\n data.hash[value] = true;\n }\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a new array joining `array` with `other`.\n *\n * @private\n * @param {Array} array The array to join.\n * @param {Array} other The other array to join.\n * @returns {Array} Returns the new concatenated array.\n */\n function arrayConcat(array, other) {\n var index = -1,\n length = array.length,\n othIndex = -1,\n othLength = other.length,\n result = Array(length + othLength);\n\n while (++index < length) {\n result[index] = array[index];\n }\n while (++othIndex < othLength) {\n result[index++] = other[othIndex];\n }\n return result;\n }\n\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n function arrayCopy(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n }\n\n /**\n * A specialized version of `_.forEach` for arrays without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.forEachRight` for arrays without support for\n * callback shorthands and `this` binding.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEachRight(array, iteratee) {\n var length = array.length;\n\n while (length--) {\n if (iteratee(array[length], length, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.every` for arrays without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\n function arrayEvery(array, predicate) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * A specialized version of `baseExtremum` for arrays which invokes `iteratee`\n * with one argument: (value).\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} comparator The function used to compare values.\n * @param {*} exValue The initial extremum value.\n * @returns {*} Returns the extremum value.\n */\n function arrayExtremum(array, iteratee, comparator, exValue) {\n var index = -1,\n length = array.length,\n computed = exValue,\n result = computed;\n\n while (++index < length) {\n var value = array[index],\n current = +iteratee(value);\n\n if (comparator(current, computed)) {\n computed = current;\n result = value;\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.filter` for arrays without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function arrayFilter(array, predicate) {\n var index = -1,\n length = array.length,\n resIndex = -1,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[++resIndex] = value;\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.map` for arrays without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function arrayMap(array, iteratee) {\n var index = -1,\n length = array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n }\n\n /**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n function arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n }\n\n /**\n * A specialized version of `_.reduce` for arrays without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initFromArray] Specify using the first element of `array`\n * as the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduce(array, iteratee, accumulator, initFromArray) {\n var index = -1,\n length = array.length;\n\n if (initFromArray && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.reduceRight` for arrays without support for\n * callback shorthands and `this` binding.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initFromArray] Specify using the last element of `array`\n * as the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduceRight(array, iteratee, accumulator, initFromArray) {\n var length = array.length;\n if (initFromArray && length) {\n accumulator = array[--length];\n }\n while (length--) {\n accumulator = iteratee(accumulator, array[length], length, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.some` for arrays without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function arraySome(array, predicate) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `_.sum` for arrays without support for callback\n * shorthands and `this` binding..\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\n function arraySum(array, iteratee) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n result += +iteratee(array[length]) || 0;\n }\n return result;\n }\n\n /**\n * Used by `_.defaults` to customize its `_.assign` use.\n *\n * @private\n * @param {*} objectValue The destination object property value.\n * @param {*} sourceValue The source object property value.\n * @returns {*} Returns the value to assign to the destination object.\n */\n function assignDefaults(objectValue, sourceValue) {\n return objectValue === undefined ? sourceValue : objectValue;\n }\n\n /**\n * Used by `_.template` to customize its `_.assign` use.\n *\n * **Note:** This function is like `assignDefaults` except that it ignores\n * inherited property values when checking if a property is `undefined`.\n *\n * @private\n * @param {*} objectValue The destination object property value.\n * @param {*} sourceValue The source object property value.\n * @param {string} key The key associated with the object and source values.\n * @param {Object} object The destination object.\n * @returns {*} Returns the value to assign to the destination object.\n */\n function assignOwnDefaults(objectValue, sourceValue, key, object) {\n return (objectValue === undefined || !hasOwnProperty.call(object, key))\n ? sourceValue\n : objectValue;\n }\n\n /**\n * A specialized version of `_.assign` for customizing assigned values without\n * support for argument juggling, multiple sources, and `this` binding `customizer`\n * functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n */\n function assignWith(object, source, customizer) {\n var index = -1,\n props = keys(source),\n length = props.length;\n\n while (++index < length) {\n var key = props[index],\n value = object[key],\n result = customizer(value, source[key], key, object, source);\n\n if ((result === result ? (result !== value) : (value === value)) ||\n (value === undefined && !(key in object))) {\n object[key] = result;\n }\n }\n return object;\n }\n\n /**\n * The base implementation of `_.assign` without support for argument juggling,\n * multiple sources, and `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssign(object, source) {\n return source == null\n ? object\n : baseCopy(source, keys(source), object);\n }\n\n /**\n * The base implementation of `_.at` without support for string collections\n * and individual key arguments.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {number[]|string[]} props The property names or indexes of elements to pick.\n * @returns {Array} Returns the new array of picked elements.\n */\n function baseAt(collection, props) {\n var index = -1,\n isNil = collection == null,\n isArr = !isNil && isArrayLike(collection),\n length = isArr ? collection.length : 0,\n propsLength = props.length,\n result = Array(propsLength);\n\n while(++index < propsLength) {\n var key = props[index];\n if (isArr) {\n result[index] = isIndex(key, length) ? collection[key] : undefined;\n } else {\n result[index] = isNil ? undefined : collection[key];\n }\n }\n return result;\n }\n\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property names to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @returns {Object} Returns `object`.\n */\n function baseCopy(source, props, object) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n object[key] = source[key];\n }\n return object;\n }\n\n /**\n * The base implementation of `_.callback` which supports specifying the\n * number of arguments to provide to `func`.\n *\n * @private\n * @param {*} [func=_.identity] The value to convert to a callback.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {number} [argCount] The number of arguments to provide to `func`.\n * @returns {Function} Returns the callback.\n */\n function baseCallback(func, thisArg, argCount) {\n var type = typeof func;\n if (type == 'function') {\n return thisArg === undefined\n ? func\n : bindCallback(func, thisArg, argCount);\n }\n if (func == null) {\n return identity;\n }\n if (type == 'object') {\n return baseMatches(func);\n }\n return thisArg === undefined\n ? property(func)\n : baseMatchesProperty(func, thisArg);\n }\n\n /**\n * The base implementation of `_.clone` without support for argument juggling\n * and `this` binding `customizer` functions.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @param {Function} [customizer] The function to customize cloning values.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The object `value` belongs to.\n * @param {Array} [stackA=[]] Tracks traversed source objects.\n * @param {Array} [stackB=[]] Associates clones with source counterparts.\n * @returns {*} Returns the cloned value.\n */\n function baseClone(value, isDeep, customizer, key, object, stackA, stackB) {\n var result;\n if (customizer) {\n result = object ? customizer(value, key, object) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return arrayCopy(value, result);\n }\n } else {\n var tag = objToString.call(value),\n isFunc = tag == funcTag;\n\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = initCloneObject(isFunc ? {} : value);\n if (!isDeep) {\n return baseAssign(result, value);\n }\n } else {\n return cloneableTags[tag]\n ? initCloneByTag(value, tag, isDeep)\n : (object ? value : {});\n }\n }\n // Check for circular references and return its corresponding clone.\n stackA || (stackA = []);\n stackB || (stackB = []);\n\n var length = stackA.length;\n while (length--) {\n if (stackA[length] == value) {\n return stackB[length];\n }\n }\n // Add the source value to the stack of traversed objects and associate it with its clone.\n stackA.push(value);\n stackB.push(result);\n\n // Recursively populate clone (susceptible to call stack limits).\n (isArr ? arrayEach : baseForOwn)(value, function(subValue, key) {\n result[key] = baseClone(subValue, isDeep, customizer, key, value, stackA, stackB);\n });\n return result;\n }\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} prototype The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n var baseCreate = (function() {\n function object() {}\n return function(prototype) {\n if (isObject(prototype)) {\n object.prototype = prototype;\n var result = new object;\n object.prototype = undefined;\n }\n return result || {};\n };\n }());\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts an index\n * of where to slice the arguments to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Object} args The arguments provide to `func`.\n * @returns {number} Returns the timer id.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of `_.difference` which accepts a single array\n * of values to exclude.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n */\n function baseDifference(array, values) {\n var length = array ? array.length : 0,\n result = [];\n\n if (!length) {\n return result;\n }\n var index = -1,\n indexOf = getIndexOf(),\n isCommon = indexOf == baseIndexOf,\n cache = (isCommon && values.length >= LARGE_ARRAY_SIZE) ? createCache(values) : null,\n valuesLength = values.length;\n\n if (cache) {\n indexOf = cacheIndexOf;\n isCommon = false;\n values = cache;\n }\n outer:\n while (++index < length) {\n var value = array[index];\n\n if (isCommon && value === value) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === value) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (indexOf(values, value, 0) < 0) {\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.forEach` without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object|string} Returns `collection`.\n */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.forEachRight` without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object|string} Returns `collection`.\n */\n var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n /**\n * The base implementation of `_.every` without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * Gets the extremum value of `collection` invoking `iteratee` for each value\n * in `collection` to generate the criterion by which the value is ranked.\n * The `iteratee` is invoked with three arguments: (value, index|key, collection).\n *\n * @private\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} comparator The function used to compare values.\n * @param {*} exValue The initial extremum value.\n * @returns {*} Returns the extremum value.\n */\n function baseExtremum(collection, iteratee, comparator, exValue) {\n var computed = exValue,\n result = computed;\n\n baseEach(collection, function(value, index, collection) {\n var current = +iteratee(value, index, collection);\n if (comparator(current, computed) || (current === exValue && current === result)) {\n computed = current;\n result = value;\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.fill` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n */\n function baseFill(array, value, start, end) {\n var length = array.length;\n\n start = start == null ? 0 : (+start || 0);\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = (end === undefined || end > length) ? length : (+end || 0);\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : (end >>> 0);\n start >>>= 0;\n\n while (start < length) {\n array[start++] = value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.filter` without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.find`, `_.findLast`, `_.findKey`, and `_.findLastKey`,\n * without support for callback shorthands and `this` binding, which iterates\n * over `collection` using the provided `eachFunc`.\n *\n * @private\n * @param {Array|Object|string} collection The collection to search.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @param {boolean} [retKey] Specify returning the key of the found element\n * instead of the element itself.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\n function baseFind(collection, predicate, eachFunc, retKey) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = retKey ? key : value;\n return false;\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.flatten` with added support for restricting\n * flattening and specifying the start index.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {boolean} [isDeep] Specify a deep flatten.\n * @param {boolean} [isStrict] Restrict flattening to arrays-like objects.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\n function baseFlatten(array, isDeep, isStrict, result) {\n result || (result = []);\n\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index];\n if (isObjectLike(value) && isArrayLike(value) &&\n (isStrict || isArray(value) || isArguments(value))) {\n if (isDeep) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, isDeep, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `baseForIn` and `baseForOwn` which iterates\n * over `object` properties returned by `keysFunc` invoking `iteratee` for\n * each property. Iteratee functions may exit iteration early by explicitly\n * returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseFor = createBaseFor();\n\n /**\n * This function is like `baseFor` except that it iterates over properties\n * in the opposite order.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseForRight = createBaseFor(true);\n\n /**\n * The base implementation of `_.forIn` without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForIn(object, iteratee) {\n return baseFor(object, iteratee, keysIn);\n }\n\n /**\n * The base implementation of `_.forOwn` without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwn(object, iteratee) {\n return baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.forOwnRight` without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwnRight(object, iteratee) {\n return baseForRight(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from those provided.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the new array of filtered property names.\n */\n function baseFunctions(object, props) {\n var index = -1,\n length = props.length,\n resIndex = -1,\n result = [];\n\n while (++index < length) {\n var key = props[index];\n if (isFunction(object[key])) {\n result[++resIndex] = key;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `get` without support for string paths\n * and default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path of the property to get.\n * @param {string} [pathKey] The key representation of path.\n * @returns {*} Returns the resolved value.\n */\n function baseGet(object, path, pathKey) {\n if (object == null) {\n return;\n }\n if (pathKey !== undefined && pathKey in toObject(object)) {\n path = [pathKey];\n }\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[path[index++]];\n }\n return (index && index == length) ? object : undefined;\n }\n\n /**\n * The base implementation of `_.isEqual` without support for `this` binding\n * `customizer` functions.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparing values.\n * @param {boolean} [isLoose] Specify performing partial comparisons.\n * @param {Array} [stackA] Tracks traversed `value` objects.\n * @param {Array} [stackB] Tracks traversed `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n function baseIsEqual(value, other, customizer, isLoose, stackA, stackB) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObject(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, baseIsEqual, customizer, isLoose, stackA, stackB);\n }\n\n /**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} [customizer] The function to customize comparing objects.\n * @param {boolean} [isLoose] Specify performing partial comparisons.\n * @param {Array} [stackA=[]] Tracks traversed `value` objects.\n * @param {Array} [stackB=[]] Tracks traversed `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseIsEqualDeep(object, other, equalFunc, customizer, isLoose, stackA, stackB) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = arrayTag,\n othTag = arrayTag;\n\n if (!objIsArr) {\n objTag = objToString.call(object);\n if (objTag == argsTag) {\n objTag = objectTag;\n } else if (objTag != objectTag) {\n objIsArr = isTypedArray(object);\n }\n }\n if (!othIsArr) {\n othTag = objToString.call(other);\n if (othTag == argsTag) {\n othTag = objectTag;\n } else if (othTag != objectTag) {\n othIsArr = isTypedArray(other);\n }\n }\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && !(objIsArr || objIsObj)) {\n return equalByTag(object, other, objTag);\n }\n if (!isLoose) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n return equalFunc(objIsWrapped ? object.value() : object, othIsWrapped ? other.value() : other, customizer, isLoose, stackA, stackB);\n }\n }\n if (!isSameTag) {\n return false;\n }\n // Assume cyclic values are equal.\n // For more information on detecting circular references see https://es5.github.io/#JO.\n stackA || (stackA = []);\n stackB || (stackB = []);\n\n var length = stackA.length;\n while (length--) {\n if (stackA[length] == object) {\n return stackB[length] == other;\n }\n }\n // Add `object` and `other` to the stack of traversed objects.\n stackA.push(object);\n stackB.push(other);\n\n var result = (objIsArr ? equalArrays : equalObjects)(object, other, equalFunc, customizer, isLoose, stackA, stackB);\n\n stackA.pop();\n stackB.pop();\n\n return result;\n }\n\n /**\n * The base implementation of `_.isMatch` without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} matchData The propery names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparing objects.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\n function baseIsMatch(object, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = toObject(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var result = customizer ? customizer(objValue, srcValue, key) : undefined;\n if (!(result === undefined ? baseIsEqual(srcValue, objValue, customizer, true) : result)) {\n return false;\n }\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.map` without support for callback shorthands\n * and `this` binding.\n *\n * @private\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n }\n\n /**\n * The base implementation of `_.matches` which does not clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new function.\n */\n function baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n var key = matchData[0][0],\n value = matchData[0][1];\n\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === value && (value !== undefined || (key in toObject(object)));\n };\n }\n return function(object) {\n return baseIsMatch(object, matchData);\n };\n }\n\n /**\n * The base implementation of `_.matchesProperty` which does not clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to compare.\n * @returns {Function} Returns the new function.\n */\n function baseMatchesProperty(path, srcValue) {\n var isArr = isArray(path),\n isCommon = isKey(path) && isStrictComparable(srcValue),\n pathKey = (path + '');\n\n path = toPath(path);\n return function(object) {\n if (object == null) {\n return false;\n }\n var key = pathKey;\n object = toObject(object);\n if ((isArr || !isCommon) && !(key in object)) {\n object = path.length == 1 ? object : baseGet(object, baseSlice(path, 0, -1));\n if (object == null) {\n return false;\n }\n key = last(path);\n object = toObject(object);\n }\n return object[key] === srcValue\n ? (srcValue !== undefined || (key in object))\n : baseIsEqual(srcValue, object[key], undefined, true);\n };\n }\n\n /**\n * The base implementation of `_.merge` without support for argument juggling,\n * multiple sources, and `this` binding `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Array} [stackA=[]] Tracks traversed source objects.\n * @param {Array} [stackB=[]] Associates values with source counterparts.\n * @returns {Object} Returns `object`.\n */\n function baseMerge(object, source, customizer, stackA, stackB) {\n if (!isObject(object)) {\n return object;\n }\n var isSrcArr = isArrayLike(source) && (isArray(source) || isTypedArray(source)),\n props = isSrcArr ? undefined : keys(source);\n\n arrayEach(props || source, function(srcValue, key) {\n if (props) {\n key = srcValue;\n srcValue = source[key];\n }\n if (isObjectLike(srcValue)) {\n stackA || (stackA = []);\n stackB || (stackB = []);\n baseMergeDeep(object, source, key, baseMerge, customizer, stackA, stackB);\n }\n else {\n var value = object[key],\n result = customizer ? customizer(value, srcValue, key, object, source) : undefined,\n isCommon = result === undefined;\n\n if (isCommon) {\n result = srcValue;\n }\n if ((result !== undefined || (isSrcArr && !(key in object))) &&\n (isCommon || (result === result ? (result !== value) : (value === value)))) {\n object[key] = result;\n }\n }\n });\n return object;\n }\n\n /**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Array} [stackA=[]] Tracks traversed source objects.\n * @param {Array} [stackB=[]] Associates values with source counterparts.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseMergeDeep(object, source, key, mergeFunc, customizer, stackA, stackB) {\n var length = stackA.length,\n srcValue = source[key];\n\n while (length--) {\n if (stackA[length] == srcValue) {\n object[key] = stackB[length];\n return;\n }\n }\n var value = object[key],\n result = customizer ? customizer(value, srcValue, key, object, source) : undefined,\n isCommon = result === undefined;\n\n if (isCommon) {\n result = srcValue;\n if (isArrayLike(srcValue) && (isArray(srcValue) || isTypedArray(srcValue))) {\n result = isArray(value)\n ? value\n : (isArrayLike(value) ? arrayCopy(value) : []);\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n result = isArguments(value)\n ? toPlainObject(value)\n : (isPlainObject(value) ? value : {});\n }\n else {\n isCommon = false;\n }\n }\n // Add the source value to the stack of traversed objects and associate\n // it with its merged value.\n stackA.push(srcValue);\n stackB.push(result);\n\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n object[key] = mergeFunc(result, srcValue, customizer, stackA, stackB);\n } else if (result === result ? (result !== value) : (value === value)) {\n object[key] = result;\n }\n }\n\n /**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new function.\n */\n function baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new function.\n */\n function basePropertyDeep(path) {\n var pathKey = (path + '');\n path = toPath(path);\n return function(object) {\n return baseGet(object, path, pathKey);\n };\n }\n\n /**\n * The base implementation of `_.pullAt` without support for individual\n * index arguments and capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\n function basePullAt(array, indexes) {\n var length = array ? indexes.length : 0;\n while (length--) {\n var index = indexes[length];\n if (index != previous && isIndex(index)) {\n var previous = index;\n splice.call(array, index, 1);\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.random` without support for argument juggling\n * and returning floating-point numbers.\n *\n * @private\n * @param {number} min The minimum possible value.\n * @param {number} max The maximum possible value.\n * @returns {number} Returns the random number.\n */\n function baseRandom(min, max) {\n return min + nativeFloor(nativeRandom() * (max - min + 1));\n }\n\n /**\n * The base implementation of `_.reduce` and `_.reduceRight` without support\n * for callback shorthands and `this` binding, which iterates over `collection`\n * using the provided `eachFunc`.\n *\n * @private\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initFromCollection Specify using the first or last element\n * of `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\n function baseReduce(collection, iteratee, accumulator, initFromCollection, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initFromCollection\n ? (initFromCollection = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `setData` without support for hot loop detection.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n };\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n start = start == null ? 0 : (+start || 0);\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = (end === undefined || end > length) ? length : (+end || 0);\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n }\n\n /**\n * The base implementation of `_.some` without support for callback shorthands\n * and `this` binding.\n *\n * @private\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n }\n\n /**\n * The base implementation of `_.sortBy` which uses `comparer` to define\n * the sort order of `array` and replaces criteria objects with their\n * corresponding values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\n function baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.sortByOrder` without param guards.\n *\n * @private\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {boolean[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\n function baseSortByOrder(collection, iteratees, orders) {\n var callback = getCallback(),\n index = -1;\n\n iteratees = arrayMap(iteratees, function(iteratee) { return callback(iteratee); });\n\n var result = baseMap(collection, function(value) {\n var criteria = arrayMap(iteratees, function(iteratee) { return iteratee(value); });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n }\n\n /**\n * The base implementation of `_.sum` without support for callback shorthands\n * and `this` binding.\n *\n * @private\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\n function baseSum(collection, iteratee) {\n var result = 0;\n baseEach(collection, function(value, index, collection) {\n result += +iteratee(value, index, collection) || 0;\n });\n return result;\n }\n\n /**\n * The base implementation of `_.uniq` without support for callback shorthands\n * and `this` binding.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The function invoked per iteration.\n * @returns {Array} Returns the new duplicate-value-free array.\n */\n function baseUniq(array, iteratee) {\n var index = -1,\n indexOf = getIndexOf(),\n length = array.length,\n isCommon = indexOf == baseIndexOf,\n isLarge = isCommon && length >= LARGE_ARRAY_SIZE,\n seen = isLarge ? createCache() : null,\n result = [];\n\n if (seen) {\n indexOf = cacheIndexOf;\n isCommon = false;\n } else {\n isLarge = false;\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value, index, array) : value;\n\n if (isCommon && value === value) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (indexOf(seen, computed, 0) < 0) {\n if (iteratee || isLarge) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n function baseValues(object, props) {\n var index = -1,\n length = props.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = object[props[index]];\n }\n return result;\n }\n\n /**\n * The base implementation of `_.dropRightWhile`, `_.dropWhile`, `_.takeRightWhile`,\n * and `_.takeWhile` without support for callback shorthands and `this` binding.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseWhile(array, predicate, isDrop, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length) && predicate(array[index], index, array)) {}\n return isDrop\n ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n }\n\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to peform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n function baseWrapperValue(value, actions) {\n var result = value;\n if (result instanceof LazyWrapper) {\n result = result.value();\n }\n var index = -1,\n length = actions.length;\n\n while (++index < length) {\n var action = actions[index];\n result = action.func.apply(action.thisArg, arrayPush([result], action.args));\n }\n return result;\n }\n\n /**\n * Performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function binaryIndex(array, value, retHighest) {\n var low = 0,\n high = array ? array.length : low;\n\n if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n while (low < high) {\n var mid = (low + high) >>> 1,\n computed = array[mid];\n\n if ((retHighest ? (computed <= value) : (computed < value)) && computed !== null) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n return binaryIndexBy(array, value, identity, retHighest);\n }\n\n /**\n * This function is like `binaryIndex` except that it invokes `iteratee` for\n * `value` and each element of `array` to compute their sort ranking. The\n * iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function binaryIndexBy(array, value, iteratee, retHighest) {\n value = iteratee(value);\n\n var low = 0,\n high = array ? array.length : 0,\n valIsNaN = value !== value,\n valIsNull = value === null,\n valIsUndef = value === undefined;\n\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n isDef = computed !== undefined,\n isReflexive = computed === computed;\n\n if (valIsNaN) {\n var setLow = isReflexive || retHighest;\n } else if (valIsNull) {\n setLow = isReflexive && isDef && (retHighest || computed != null);\n } else if (valIsUndef) {\n setLow = isReflexive && (retHighest || isDef);\n } else if (computed == null) {\n setLow = false;\n } else {\n setLow = retHighest ? (computed <= value) : (computed < value);\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n }\n\n /**\n * A specialized version of `baseCallback` which only supports `this` binding\n * and specifying the number of arguments to provide to `func`.\n *\n * @private\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {number} [argCount] The number of arguments to provide to `func`.\n * @returns {Function} Returns the callback.\n */\n function bindCallback(func, thisArg, argCount) {\n if (typeof func != 'function') {\n return identity;\n }\n if (thisArg === undefined) {\n return func;\n }\n switch (argCount) {\n case 1: return function(value) {\n return func.call(thisArg, value);\n };\n case 3: return function(value, index, collection) {\n return func.call(thisArg, value, index, collection);\n };\n case 4: return function(accumulator, value, index, collection) {\n return func.call(thisArg, accumulator, value, index, collection);\n };\n case 5: return function(value, other, key, object, source) {\n return func.call(thisArg, value, other, key, object, source);\n };\n }\n return function() {\n return func.apply(thisArg, arguments);\n };\n }\n\n /**\n * Creates a clone of the given array buffer.\n *\n * @private\n * @param {ArrayBuffer} buffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n function bufferClone(buffer) {\n var result = new ArrayBuffer(buffer.byteLength),\n view = new Uint8Array(result);\n\n view.set(new Uint8Array(buffer));\n return result;\n }\n\n /**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array|Object} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgs(args, partials, holders) {\n var holdersLength = holders.length,\n argsIndex = -1,\n argsLength = nativeMax(args.length - holdersLength, 0),\n leftIndex = -1,\n leftLength = partials.length,\n result = Array(leftLength + argsLength);\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n while (argsLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array|Object} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgsRight(args, partials, holders) {\n var holdersIndex = -1,\n holdersLength = holders.length,\n argsIndex = -1,\n argsLength = nativeMax(args.length - holdersLength, 0),\n rightIndex = -1,\n rightLength = partials.length,\n result = Array(argsLength + rightLength);\n\n while (++argsIndex < argsLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * Creates a `_.countBy`, `_.groupBy`, `_.indexBy`, or `_.partition` function.\n *\n * @private\n * @param {Function} setter The function to set keys and values of the accumulator object.\n * @param {Function} [initializer] The function to initialize the accumulator object.\n * @returns {Function} Returns the new aggregator function.\n */\n function createAggregator(setter, initializer) {\n return function(collection, iteratee, thisArg) {\n var result = initializer ? initializer() : {};\n iteratee = getCallback(iteratee, thisArg, 3);\n\n if (isArray(collection)) {\n var index = -1,\n length = collection.length;\n\n while (++index < length) {\n var value = collection[index];\n setter(result, value, iteratee(value, index, collection), collection);\n }\n } else {\n baseEach(collection, function(value, key, collection) {\n setter(result, value, iteratee(value, key, collection), collection);\n });\n }\n return result;\n };\n }\n\n /**\n * Creates a `_.assign`, `_.defaults`, or `_.merge` function.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return restParam(function(object, sources) {\n var index = -1,\n length = object == null ? 0 : sources.length,\n customizer = length > 2 ? sources[length - 2] : undefined,\n guard = length > 2 ? sources[2] : undefined,\n thisArg = length > 1 ? sources[length - 1] : undefined;\n\n if (typeof customizer == 'function') {\n customizer = bindCallback(customizer, thisArg, 5);\n length -= 2;\n } else {\n customizer = typeof thisArg == 'function' ? thisArg : undefined;\n length -= (customizer ? 1 : 0);\n }\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, customizer);\n }\n }\n return object;\n });\n }\n\n /**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n var length = collection ? getLength(collection) : 0;\n if (!isLength(length)) {\n return eachFunc(collection, iteratee);\n }\n var index = fromRight ? length : -1,\n iterable = toObject(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n }\n\n /**\n * Creates a base function for `_.forIn` or `_.forInRight`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var iterable = toObject(object),\n props = keysFunc(object),\n length = props.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length)) {\n var key = props[index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n }\n\n /**\n * Creates a function that wraps `func` and invokes it with the `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to bind.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new bound function.\n */\n function createBindWrapper(func, thisArg) {\n var Ctor = createCtorWrapper(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(thisArg, arguments);\n }\n return wrapper;\n }\n\n /**\n * Creates a `Set` cache object to optimize linear searches of large arrays.\n *\n * @private\n * @param {Array} [values] The values to cache.\n * @returns {null|Object} Returns the new cache object if `Set` is supported, else `null`.\n */\n function createCache(values) {\n return (nativeCreate && Set) ? new SetCache(values) : null;\n }\n\n /**\n * Creates a function that produces compound words out of the words in a\n * given string.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\n function createCompounder(callback) {\n return function(string) {\n var index = -1,\n array = words(deburr(string)),\n length = array.length,\n result = '';\n\n while (++index < length) {\n result = callback(result, array[index], index);\n }\n return result;\n };\n }\n\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtorWrapper(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors.\n // See http://ecma-international.org/ecma-262/6.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a `_.curry` or `_.curryRight` function.\n *\n * @private\n * @param {boolean} flag The curry bit flag.\n * @returns {Function} Returns the new curry function.\n */\n function createCurry(flag) {\n function curryFunc(func, arity, guard) {\n if (guard && isIterateeCall(func, arity, guard)) {\n arity = undefined;\n }\n var result = createWrapper(func, flag, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curryFunc.placeholder;\n return result;\n }\n return curryFunc;\n }\n\n /**\n * Creates a `_.defaults` or `_.defaultsDeep` function.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Function} Returns the new defaults function.\n */\n function createDefaults(assigner, customizer) {\n return restParam(function(args) {\n var object = args[0];\n if (object == null) {\n return object;\n }\n args.push(customizer);\n return assigner.apply(undefined, args);\n });\n }\n\n /**\n * Creates a `_.max` or `_.min` function.\n *\n * @private\n * @param {Function} comparator The function used to compare values.\n * @param {*} exValue The initial extremum value.\n * @returns {Function} Returns the new extremum function.\n */\n function createExtremum(comparator, exValue) {\n return function(collection, iteratee, thisArg) {\n if (thisArg && isIterateeCall(collection, iteratee, thisArg)) {\n iteratee = undefined;\n }\n iteratee = getCallback(iteratee, thisArg, 3);\n if (iteratee.length == 1) {\n collection = isArray(collection) ? collection : toIterable(collection);\n var result = arrayExtremum(collection, iteratee, comparator, exValue);\n if (!(collection.length && result === exValue)) {\n return result;\n }\n }\n return baseExtremum(collection, iteratee, comparator, exValue);\n };\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new find function.\n */\n function createFind(eachFunc, fromRight) {\n return function(collection, predicate, thisArg) {\n predicate = getCallback(predicate, thisArg, 3);\n if (isArray(collection)) {\n var index = baseFindIndex(collection, predicate, fromRight);\n return index > -1 ? collection[index] : undefined;\n }\n return baseFind(collection, predicate, eachFunc);\n };\n }\n\n /**\n * Creates a `_.findIndex` or `_.findLastIndex` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new find function.\n */\n function createFindIndex(fromRight) {\n return function(array, predicate, thisArg) {\n if (!(array && array.length)) {\n return -1;\n }\n predicate = getCallback(predicate, thisArg, 3);\n return baseFindIndex(array, predicate, fromRight);\n };\n }\n\n /**\n * Creates a `_.findKey` or `_.findLastKey` function.\n *\n * @private\n * @param {Function} objectFunc The function to iterate over an object.\n * @returns {Function} Returns the new find function.\n */\n function createFindKey(objectFunc) {\n return function(object, predicate, thisArg) {\n predicate = getCallback(predicate, thisArg, 3);\n return baseFind(object, predicate, objectFunc, true);\n };\n }\n\n /**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\n function createFlow(fromRight) {\n return function() {\n var wrapper,\n length = arguments.length,\n index = fromRight ? length : -1,\n leftIndex = 0,\n funcs = Array(length);\n\n while ((fromRight ? index-- : ++index < length)) {\n var func = funcs[leftIndex++] = arguments[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (!wrapper && LodashWrapper.prototype.thru && getFuncName(func) == 'wrapper') {\n wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? -1 : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) && data[1] == (ARY_FLAG | CURRY_FLAG | PARTIAL_FLAG | REARG_FLAG) && !data[4].length && data[9] == 1) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func)) ? wrapper[funcName]() : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value) && value.length >= LARGE_ARRAY_SIZE) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n };\n }\n\n /**\n * Creates a function for `_.forEach` or `_.forEachRight`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over an array.\n * @param {Function} eachFunc The function to iterate over a collection.\n * @returns {Function} Returns the new each function.\n */\n function createForEach(arrayFunc, eachFunc) {\n return function(collection, iteratee, thisArg) {\n return (typeof iteratee == 'function' && thisArg === undefined && isArray(collection))\n ? arrayFunc(collection, iteratee)\n : eachFunc(collection, bindCallback(iteratee, thisArg, 3));\n };\n }\n\n /**\n * Creates a function for `_.forIn` or `_.forInRight`.\n *\n * @private\n * @param {Function} objectFunc The function to iterate over an object.\n * @returns {Function} Returns the new each function.\n */\n function createForIn(objectFunc) {\n return function(object, iteratee, thisArg) {\n if (typeof iteratee != 'function' || thisArg !== undefined) {\n iteratee = bindCallback(iteratee, thisArg, 3);\n }\n return objectFunc(object, iteratee, keysIn);\n };\n }\n\n /**\n * Creates a function for `_.forOwn` or `_.forOwnRight`.\n *\n * @private\n * @param {Function} objectFunc The function to iterate over an object.\n * @returns {Function} Returns the new each function.\n */\n function createForOwn(objectFunc) {\n return function(object, iteratee, thisArg) {\n if (typeof iteratee != 'function' || thisArg !== undefined) {\n iteratee = bindCallback(iteratee, thisArg, 3);\n }\n return objectFunc(object, iteratee);\n };\n }\n\n /**\n * Creates a function for `_.mapKeys` or `_.mapValues`.\n *\n * @private\n * @param {boolean} [isMapKeys] Specify mapping keys instead of values.\n * @returns {Function} Returns the new map function.\n */\n function createObjectMapper(isMapKeys) {\n return function(object, iteratee, thisArg) {\n var result = {};\n iteratee = getCallback(iteratee, thisArg, 3);\n\n baseForOwn(object, function(value, key, object) {\n var mapped = iteratee(value, key, object);\n key = isMapKeys ? mapped : key;\n value = isMapKeys ? value : mapped;\n result[key] = value;\n });\n return result;\n };\n }\n\n /**\n * Creates a function for `_.padLeft` or `_.padRight`.\n *\n * @private\n * @param {boolean} [fromRight] Specify padding from the right.\n * @returns {Function} Returns the new pad function.\n */\n function createPadDir(fromRight) {\n return function(string, length, chars) {\n string = baseToString(string);\n return (fromRight ? string : '') + createPadding(string, length, chars) + (fromRight ? '' : string);\n };\n }\n\n /**\n * Creates a `_.partial` or `_.partialRight` function.\n *\n * @private\n * @param {boolean} flag The partial bit flag.\n * @returns {Function} Returns the new partial function.\n */\n function createPartial(flag) {\n var partialFunc = restParam(function(func, partials) {\n var holders = replaceHolders(partials, partialFunc.placeholder);\n return createWrapper(func, flag, undefined, partials, holders);\n });\n return partialFunc;\n }\n\n /**\n * Creates a function for `_.reduce` or `_.reduceRight`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over an array.\n * @param {Function} eachFunc The function to iterate over a collection.\n * @returns {Function} Returns the new each function.\n */\n function createReduce(arrayFunc, eachFunc) {\n return function(collection, iteratee, accumulator, thisArg) {\n var initFromArray = arguments.length < 3;\n return (typeof iteratee == 'function' && thisArg === undefined && isArray(collection))\n ? arrayFunc(collection, iteratee, accumulator, initFromArray)\n : baseReduce(collection, getCallback(iteratee, thisArg, 4), accumulator, initFromArray, eachFunc);\n };\n }\n\n /**\n * Creates a function that wraps `func` and invokes it with optional `this`\n * binding of, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to reference.\n * @param {number} bitmask The bitmask of flags. See `createWrapper` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createHybridWrapper(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & ARY_FLAG,\n isBind = bitmask & BIND_FLAG,\n isBindKey = bitmask & BIND_KEY_FLAG,\n isCurry = bitmask & CURRY_FLAG,\n isCurryBound = bitmask & CURRY_BOUND_FLAG,\n isCurryRight = bitmask & CURRY_RIGHT_FLAG,\n Ctor = isBindKey ? undefined : createCtorWrapper(func);\n\n function wrapper() {\n // Avoid `arguments` object use disqualifying optimizations by\n // converting it to an array before providing it to other functions.\n var length = arguments.length,\n index = length,\n args = Array(length);\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (partials) {\n args = composeArgs(args, partials, holders);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight);\n }\n if (isCurry || isCurryRight) {\n var placeholder = wrapper.placeholder,\n argsHolders = replaceHolders(args, placeholder);\n\n length -= argsHolders.length;\n if (length < arity) {\n var newArgPos = argPos ? arrayCopy(argPos) : undefined,\n newArity = nativeMax(arity - length, 0),\n newsHolders = isCurry ? argsHolders : undefined,\n newHoldersRight = isCurry ? undefined : argsHolders,\n newPartials = isCurry ? args : undefined,\n newPartialsRight = isCurry ? undefined : args;\n\n bitmask |= (isCurry ? PARTIAL_FLAG : PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? PARTIAL_RIGHT_FLAG : PARTIAL_FLAG);\n\n if (!isCurryBound) {\n bitmask &= ~(BIND_FLAG | BIND_KEY_FLAG);\n }\n var newData = [func, bitmask, thisArg, newPartials, newsHolders, newPartialsRight, newHoldersRight, newArgPos, ary, newArity],\n result = createHybridWrapper.apply(undefined, newData);\n\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return result;\n }\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n if (argPos) {\n args = reorder(args, argPos);\n }\n if (isAry && ary < args.length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtorWrapper(func);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n }\n\n /**\n * Creates the padding required for `string` based on the given `length`.\n * The `chars` string is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {string} string The string to create padding for.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the pad for `string`.\n */\n function createPadding(string, length, chars) {\n var strLength = string.length;\n length = +length;\n\n if (strLength >= length || !nativeIsFinite(length)) {\n return '';\n }\n var padLength = length - strLength;\n chars = chars == null ? ' ' : (chars + '');\n return repeat(chars, nativeCeil(padLength / chars.length)).slice(0, padLength);\n }\n\n /**\n * Creates a function that wraps `func` and invokes it with the optional `this`\n * binding of `thisArg` and the `partials` prepended to those provided to\n * the wrapper.\n *\n * @private\n * @param {Function} func The function to partially apply arguments to.\n * @param {number} bitmask The bitmask of flags. See `createWrapper` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to the new function.\n * @returns {Function} Returns the new bound function.\n */\n function createPartialWrapper(func, bitmask, thisArg, partials) {\n var isBind = bitmask & BIND_FLAG,\n Ctor = createCtorWrapper(func);\n\n function wrapper() {\n // Avoid `arguments` object use disqualifying optimizations by\n // converting it to an array before providing it `func`.\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength);\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.ceil`, `_.floor`, or `_.round` function.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\n function createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n precision = precision === undefined ? 0 : (+precision || 0);\n if (precision) {\n precision = pow(10, precision);\n return func(number * precision) / precision;\n }\n return func(number);\n };\n }\n\n /**\n * Creates a `_.sortedIndex` or `_.sortedLastIndex` function.\n *\n * @private\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {Function} Returns the new index function.\n */\n function createSortedIndex(retHighest) {\n return function(array, value, iteratee, thisArg) {\n var callback = getCallback(iteratee);\n return (iteratee == null && callback === baseCallback)\n ? binaryIndex(array, value, retHighest)\n : binaryIndexBy(array, value, callback(iteratee, thisArg, 1), retHighest);\n };\n }\n\n /**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to reference.\n * @param {number} bitmask The bitmask of flags.\n * The bitmask may be composed of the following flags:\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createWrapper(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(PARTIAL_FLAG | PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n length -= (holders ? holders.length : 0);\n if (bitmask & PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func),\n newData = [func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity];\n\n if (data) {\n mergeData(newData, data);\n bitmask = newData[1];\n arity = newData[9];\n }\n newData[9] = arity == null\n ? (isBindKey ? 0 : func.length)\n : (nativeMax(arity - length, 0) || 0);\n\n if (bitmask == BIND_FLAG) {\n var result = createBindWrapper(newData[0], newData[2]);\n } else if ((bitmask == PARTIAL_FLAG || bitmask == (BIND_FLAG | PARTIAL_FLAG)) && !newData[4].length) {\n result = createPartialWrapper.apply(undefined, newData);\n } else {\n result = createHybridWrapper.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setter(result, newData);\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} [customizer] The function to customize comparing arrays.\n * @param {boolean} [isLoose] Specify performing partial comparisons.\n * @param {Array} [stackA] Tracks traversed `value` objects.\n * @param {Array} [stackB] Tracks traversed `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n function equalArrays(array, other, equalFunc, customizer, isLoose, stackA, stackB) {\n var index = -1,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isLoose && othLength > arrLength)) {\n return false;\n }\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index],\n result = customizer ? customizer(isLoose ? othValue : arrValue, isLoose ? arrValue : othValue, index) : undefined;\n\n if (result !== undefined) {\n if (result) {\n continue;\n }\n return false;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (isLoose) {\n if (!arraySome(other, function(othValue) {\n return arrValue === othValue || equalFunc(arrValue, othValue, customizer, isLoose, stackA, stackB);\n })) {\n return false;\n }\n } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, customizer, isLoose, stackA, stackB))) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalByTag(object, other, tag) {\n switch (tag) {\n case boolTag:\n case dateTag:\n // Coerce dates and booleans to numbers, dates to milliseconds and booleans\n // to `1` or `0` treating invalid dates coerced to `NaN` as not equal.\n return +object == +other;\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case numberTag:\n // Treat `NaN` vs. `NaN` as equal.\n return (object != +object)\n ? other != +other\n : object == +other;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings primitives and string\n // objects as equal. See https://es5.github.io/#x15.10.6.4 for more details.\n return object == (other + '');\n }\n return false;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} [customizer] The function to customize comparing values.\n * @param {boolean} [isLoose] Specify performing partial comparisons.\n * @param {Array} [stackA] Tracks traversed `value` objects.\n * @param {Array} [stackB] Tracks traversed `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalObjects(object, other, equalFunc, customizer, isLoose, stackA, stackB) {\n var objProps = keys(object),\n objLength = objProps.length,\n othProps = keys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isLoose) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isLoose ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n var skipCtor = isLoose;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key],\n result = customizer ? customizer(isLoose ? othValue : objValue, isLoose? objValue : othValue, key) : undefined;\n\n // Recursively compare objects (susceptible to call stack limits).\n if (!(result === undefined ? equalFunc(objValue, othValue, customizer, isLoose, stackA, stackB) : result)) {\n return false;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (!skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Gets the appropriate \"callback\" function. If the `_.callback` method is\n * customized this function returns the custom method, otherwise it returns\n * the `baseCallback` function. If arguments are provided the chosen function\n * is invoked with them and its result is returned.\n *\n * @private\n * @returns {Function} Returns the chosen function or its result.\n */\n function getCallback(func, thisArg, argCount) {\n var result = lodash.callback || callback;\n result = result === callback ? baseCallback : result;\n return argCount ? result(func, thisArg, argCount) : result;\n }\n\n /**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\n var getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n };\n\n /**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\n function getFuncName(func) {\n var result = func.name,\n array = realNames[result],\n length = array ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n }\n\n /**\n * Gets the appropriate \"indexOf\" function. If the `_.indexOf` method is\n * customized this function returns the custom method, otherwise it returns\n * the `baseIndexOf` function. If arguments are provided the chosen function\n * is invoked with them and its result is returned.\n *\n * @private\n * @returns {Function|number} Returns the chosen function or its result.\n */\n function getIndexOf(collection, target, fromIndex) {\n var result = lodash.indexOf || indexOf;\n result = result === indexOf ? baseIndexOf : result;\n return collection ? result(collection, target, fromIndex) : result;\n }\n\n /**\n * Gets the \"length\" property value of `object`.\n *\n * **Note:** This function is used to avoid a [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792)\n * that affects Safari on at least iOS 8.1-8.3 ARM64.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {*} Returns the \"length\" value.\n */\n var getLength = baseProperty('length');\n\n /**\n * Gets the propery names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\n function getMatchData(object) {\n var result = pairs(object),\n length = result.length;\n\n while (length--) {\n result[length][2] = isStrictComparable(result[length][1]);\n }\n return result;\n }\n\n /**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n function getNative(object, key) {\n var value = object == null ? undefined : object[key];\n return isNative(value) ? value : undefined;\n }\n\n /**\n * Gets the view, applying any `transforms` to the `start` and `end` positions.\n *\n * @private\n * @param {number} start The start of the view.\n * @param {number} end The end of the view.\n * @param {Array} transforms The transformations to apply to the view.\n * @returns {Object} Returns an object containing the `start` and `end`\n * positions of the view.\n */\n function getView(start, end, transforms) {\n var index = -1,\n length = transforms.length;\n\n while (++index < length) {\n var data = transforms[index],\n size = data.size;\n\n switch (data.type) {\n case 'drop': start += size; break;\n case 'dropRight': end -= size; break;\n case 'take': end = nativeMin(end, start + size); break;\n case 'takeRight': start = nativeMax(start, end - size); break;\n }\n }\n return { 'start': start, 'end': end };\n }\n\n /**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\n function initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add array properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n\n /**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneObject(object) {\n var Ctor = object.constructor;\n if (!(typeof Ctor == 'function' && Ctor instanceof Ctor)) {\n Ctor = Object;\n }\n return new Ctor;\n }\n\n /**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return bufferClone(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n var buffer = object.buffer;\n return new Ctor(isDeep ? bufferClone(buffer) : buffer, object.byteOffset, object.length);\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n var result = new Ctor(object.source, reFlags.exec(object));\n result.lastIndex = object.lastIndex;\n }\n return result;\n }\n\n /**\n * Invokes the method at `path` on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\n function invokePath(object, path, args) {\n if (object != null && !isKey(path, object)) {\n path = toPath(path);\n object = path.length == 1 ? object : baseGet(object, baseSlice(path, 0, -1));\n path = last(path);\n }\n var func = object == null ? object : object[path];\n return func == null ? undefined : func.apply(object, args);\n }\n\n /**\n * Checks if `value` is array-like.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n */\n function isArrayLike(value) {\n return value != null && isLength(getLength(value));\n }\n\n /**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n function isIndex(value, length) {\n value = (typeof value == 'number' || reIsUint.test(value)) ? +value : -1;\n length = length == null ? MAX_SAFE_INTEGER : length;\n return value > -1 && value % 1 == 0 && value < length;\n }\n\n /**\n * Checks if the provided arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call, else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)) {\n var other = object[index];\n return value === value ? (value === other) : (other !== other);\n }\n return false;\n }\n\n /**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\n function isKey(value, object) {\n var type = typeof value;\n if ((type == 'string' && reIsPlainProp.test(value)) || type == 'number') {\n return true;\n }\n if (isArray(value)) {\n return false;\n }\n var result = !reIsDeepProp.test(value);\n return result || (object != null && value in toObject(object));\n }\n\n /**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart, else `false`.\n */\n function isLaziable(func) {\n var funcName = getFuncName(func);\n if (!(funcName in LazyWrapper.prototype)) {\n return false;\n }\n var other = lodash[funcName];\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n }\n\n /**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This function is based on [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength).\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n */\n function isLength(value) {\n return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\n function isStrictComparable(value) {\n return value === value && !isObject(value);\n }\n\n /**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers required to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and `_.rearg`\n * augment function arguments, making the order in which they are executed important,\n * preventing the merging of metadata. However, we make an exception for a safe\n * common case where curried functions have `_.ary` and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\n function mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < ARY_FLAG;\n\n var isCombo =\n (srcBitmask == ARY_FLAG && bitmask == CURRY_FLAG) ||\n (srcBitmask == ARY_FLAG && bitmask == REARG_FLAG && data[7].length <= source[8]) ||\n (srcBitmask == (ARY_FLAG | REARG_FLAG) && bitmask == CURRY_FLAG);\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= (bitmask & BIND_FLAG) ? 0 : CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : arrayCopy(value);\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : arrayCopy(source[4]);\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : arrayCopy(value);\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : arrayCopy(source[6]);\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = arrayCopy(value);\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n }\n\n /**\n * Used by `_.defaultsDeep` to customize its `_.merge` use.\n *\n * @private\n * @param {*} objectValue The destination object property value.\n * @param {*} sourceValue The source object property value.\n * @returns {*} Returns the value to assign to the destination object.\n */\n function mergeDefaults(objectValue, sourceValue) {\n return objectValue === undefined ? sourceValue : merge(objectValue, sourceValue, mergeDefaults);\n }\n\n /**\n * A specialized version of `_.pick` which picks `object` properties specified\n * by `props`.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} props The property names to pick.\n * @returns {Object} Returns the new object.\n */\n function pickByArray(object, props) {\n object = toObject(object);\n\n var index = -1,\n length = props.length,\n result = {};\n\n while (++index < length) {\n var key = props[index];\n if (key in object) {\n result[key] = object[key];\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.pick` which picks `object` properties `predicate`\n * returns truthy for.\n *\n * @private\n * @param {Object} object The source object.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Object} Returns the new object.\n */\n function pickByCallback(object, predicate) {\n var result = {};\n baseForIn(object, function(value, key, object) {\n if (predicate(value, key, object)) {\n result[key] = value;\n }\n });\n return result;\n }\n\n /**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\n function reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = arrayCopy(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n }\n\n /**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity function\n * to avoid garbage collection pauses in V8. See [V8 issue 2070](https://code.google.com/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var setData = (function() {\n var count = 0,\n lastCalled = 0;\n\n return function(key, value) {\n var stamp = now(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return key;\n }\n } else {\n count = 0;\n }\n return baseSetData(key, value);\n };\n }());\n\n /**\n * A fallback implementation of `Object.keys` which creates an array of the\n * own enumerable property names of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function shimKeys(object) {\n var props = keysIn(object),\n propsLength = props.length,\n length = propsLength && object.length;\n\n var allowIndexes = !!length && isLength(length) &&\n (isArray(object) || isArguments(object));\n\n var index = -1,\n result = [];\n\n while (++index < propsLength) {\n var key = props[index];\n if ((allowIndexes && isIndex(key, length)) || hasOwnProperty.call(object, key)) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Converts `value` to an array-like object if it's not one.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {Array|Object} Returns the array-like object.\n */\n function toIterable(value) {\n if (value == null) {\n return [];\n }\n if (!isArrayLike(value)) {\n return values(value);\n }\n return isObject(value) ? value : Object(value);\n }\n\n /**\n * Converts `value` to an object if it's not one.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {Object} Returns the object.\n */\n function toObject(value) {\n return isObject(value) ? value : Object(value);\n }\n\n /**\n * Converts `value` to property path array if it's not one.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {Array} Returns the property path array.\n */\n function toPath(value) {\n if (isArray(value)) {\n return value;\n }\n var result = [];\n baseToString(value).replace(rePropName, function(match, number, quote, string) {\n result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n }\n\n /**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\n function wrapperClone(wrapper) {\n return wrapper instanceof LazyWrapper\n ? wrapper.clone()\n : new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__, arrayCopy(wrapper.__actions__));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of elements split into groups the length of `size`.\n * If `collection` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk.\n * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.\n * @returns {Array} Returns the new array containing chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\n function chunk(array, size, guard) {\n if (guard ? isIterateeCall(array, size, guard) : size == null) {\n size = 1;\n } else {\n size = nativeMax(nativeFloor(size) || 1, 1);\n }\n var index = 0,\n length = array ? array.length : 0,\n resIndex = -1,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[++resIndex] = baseSlice(array, index, (index += size));\n }\n return result;\n }\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\n var index = -1,\n length = array ? array.length : 0,\n resIndex = -1,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[++resIndex] = value;\n }\n }\n return result;\n }\n\n /**\n * Creates an array of unique `array` values not included in the other\n * provided arrays using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The arrays of values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.difference([1, 2, 3], [4, 2]);\n * // => [1, 3]\n */\n var difference = restParam(function(array, values) {\n return (isObjectLike(array) && isArrayLike(array))\n ? baseDifference(array, baseFlatten(values, false, true))\n : [];\n });\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function drop(array, n, guard) {\n var length = array ? array.length : 0;\n if (!length) {\n return [];\n }\n if (guard ? isIterateeCall(array, n, guard) : n == null) {\n n = 1;\n }\n return baseSlice(array, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function dropRight(array, n, guard) {\n var length = array ? array.length : 0;\n if (!length) {\n return [];\n }\n if (guard ? isIterateeCall(array, n, guard) : n == null) {\n n = 1;\n }\n n = length - (+n || 0);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the end.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * bound to `thisArg` and invoked with three arguments: (value, index, array).\n *\n * If a property name is provided for `predicate` the created `_.property`\n * style callback returns the property value of the given element.\n *\n * If a value is also provided for `thisArg` the created `_.matchesProperty`\n * style callback returns `true` for elements that have a matching property\n * value, else `false`.\n *\n * If an object is provided for `predicate` the created `_.matches` style\n * callback returns `true` for elements that match the properties of the given\n * object, else `false`.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function|Object|string} [predicate=_.identity] The function invoked\n * per iteration.\n * @param {*} [thisArg] The `this` binding of `predicate`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRightWhile([1, 2, 3], function(n) {\n * return n > 1;\n * });\n * // => [1]\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * // using the `_.matches` callback shorthand\n * _.pluck(_.dropRightWhile(users, { 'user': 'pebbles', 'active': false }), 'user');\n * // => ['barney', 'fred']\n *\n * // using the `_.matchesProperty` callback shorthand\n * _.pluck(_.dropRightWhile(users, 'active', false), 'user');\n * // => ['barney']\n *\n * // using the `_.property` callback shorthand\n * _.pluck(_.dropRightWhile(users, 'active'), 'user');\n * // => ['barney', 'fred', 'pebbles']\n */\n function dropRightWhile(array, predicate, thisArg) {\n return (array && array.length)\n ? baseWhile(array, getCallback(predicate, thisArg, 3), true, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * bound to `thisArg` and invoked with three arguments: (value, index, array).\n *\n * If a property name is provided for `predicate` the created `_.property`\n * style callback returns the property value of the given element.\n *\n * If a value is also provided for `thisArg` the created `_.matchesProperty`\n * style callback returns `true` for elements that have a matching property\n * value, else `false`.\n *\n * If an object is provided for `predicate` the created `_.matches` style\n * callback returns `true` for elements that have the properties of the given\n * object, else `false`.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function|Object|string} [predicate=_.identity] The function invoked\n * per iteration.\n * @param {*} [thisArg] The `this` binding of `predicate`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropWhile([1, 2, 3], function(n) {\n * return n < 3;\n * });\n * // => [3]\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * // using the `_.matches` callback shorthand\n * _.pluck(_.dropWhile(users, { 'user': 'barney', 'active': false }), 'user');\n * // => ['fred', 'pebbles']\n *\n * // using the `_.matchesProperty` callback shorthand\n * _.pluck(_.dropWhile(users, 'active', false), 'user');\n * // => ['pebbles']\n *\n * // using the `_.property` callback shorthand\n * _.pluck(_.dropWhile(users, 'active'), 'user');\n * // => ['barney', 'fred', 'pebbles']\n */\n function dropWhile(array, predicate, thisArg) {\n return (array && array.length)\n ? baseWhile(array, getCallback(predicate, thisArg, 3), true)\n : [];\n }\n\n /**\n * Fills elements of `array` with `value` from `start` up to, but not\n * including, `end`.\n *\n * **Note:** This method mutates `array`.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.fill(array, 'a');\n * console.log(array);\n * // => ['a', 'a', 'a']\n *\n * _.fill(Array(3), 2);\n * // => [2, 2, 2]\n *\n * _.fill([4, 6, 8], '*', 1, 2);\n * // => [4, '*', 8]\n */\n function fill(array, value, start, end) {\n var length = array ? array.length : 0;\n if (!length) {\n return [];\n }\n if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n start = 0;\n end = length;\n }\n return baseFill(array, value, start, end);\n }\n\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * If a property name is provided for `predicate` the created `_.property`\n * style callback returns the property value of the given element.\n *\n * If a value is also provided for `thisArg` the created `_.matchesProperty`\n * style callback returns `true` for elements that have a matching property\n * value, else `false`.\n *\n * If an object is provided for `predicate` the created `_.matches` style\n * callback returns `true` for elements that have the properties of the given\n * object, else `false`.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {Array} array The array to search.\n * @param {Function|Object|string} [predicate=_.identity] The function invoked\n * per iteration.\n * @param {*} [thisArg] The `this` binding of `predicate`.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(chr) {\n * return chr.user == 'barney';\n * });\n * // => 0\n *\n * // using the `_.matches` callback shorthand\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // using the `_.matchesProperty` callback shorthand\n * _.findIndex(users, 'active', false);\n * // => 0\n *\n * // using the `_.property` callback shorthand\n * _.findIndex(users, 'active');\n * // => 2\n */\n var findIndex = createFindIndex();\n\n /**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * If a property name is provided for `predicate` the created `_.property`\n * style callback returns the property value of the given element.\n *\n * If a value is also provided for `thisArg` the created `_.matchesProperty`\n * style callback returns `true` for elements that have a matching property\n * value, else `false`.\n *\n * If an object is provided for `predicate` the created `_.matches` style\n * callback returns `true` for elements that have the properties of the given\n * object, else `false`.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {Array} array The array to search.\n * @param {Function|Object|string} [predicate=_.identity] The function invoked\n * per iteration.\n * @param {*} [thisArg] The `this` binding of `predicate`.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(chr) {\n * return chr.user == 'pebbles';\n * });\n * // => 2\n *\n * // using the `_.matches` callback shorthand\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // using the `_.matchesProperty` callback shorthand\n * _.findLastIndex(users, 'active', false);\n * // => 2\n *\n * // using the `_.property` callback shorthand\n * _.findLastIndex(users, 'active');\n * // => 0\n */\n var findLastIndex = createFindIndex(true);\n\n /**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @alias head\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.first([1, 2, 3]);\n * // => 1\n *\n * _.first([]);\n * // => undefined\n */\n function first(array) {\n return array ? array[0] : undefined;\n }\n\n /**\n * Flattens a nested array. If `isDeep` is `true` the array is recursively\n * flattened, otherwise it is only flattened a single level.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {boolean} [isDeep] Specify a deep flatten.\n * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, 3, [4]]]);\n * // => [1, 2, 3, [4]]\n *\n * // using `isDeep`\n * _.flatten([1, [2, 3, [4]]], true);\n * // => [1, 2, 3, 4]\n */\n function flatten(array, isDeep, guard) {\n var length = array ? array.length : 0;\n if (guard && isIterateeCall(array, isDeep, guard)) {\n isDeep = false;\n }\n return length ? baseFlatten(array, isDeep) : [];\n }\n\n /**\n * Recursively flattens a nested array.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {Array} array The array to recursively flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, 3, [4]]]);\n * // => [1, 2, 3, 4]\n */\n function flattenDeep(array) {\n var length = array ? array.length : 0;\n return length ? baseFlatten(array, true) : [];\n }\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it is used as the offset\n * from the end of `array`. If `array` is sorted providing `true` for `fromIndex`\n * performs a faster binary search.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {Array} array The array to search.\n * @param {*} value The value to search for.\n * @param {boolean|number} [fromIndex=0] The index to search from or `true`\n * to perform a binary search on a sorted array.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // using `fromIndex`\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n *\n * // performing a binary search\n * _.indexOf([1, 1, 2, 2], 2, true);\n * // => 2\n */\n function indexOf(array, value, fromIndex) {\n var length = array ? array.length : 0;\n if (!length) {\n return -1;\n }\n if (typeof fromIndex == 'number') {\n fromIndex = fromIndex < 0 ? nativeMax(length + fromIndex, 0) : fromIndex;\n } else if (fromIndex) {\n var index = binaryIndex(array, value);\n if (index < length &&\n (value === value ? (value === array[index]) : (array[index] !== array[index]))) {\n return index;\n }\n return -1;\n }\n return baseIndexOf(array, value, fromIndex || 0);\n }\n\n /**\n * Gets all but the last element of `array`.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.initial([1, 2, 3]);\n * // => [1, 2]\n */\n function initial(array) {\n return dropRight(array, 1);\n }\n\n /**\n * Creates an array of unique values that are included in all of the provided\n * arrays using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of shared values.\n * @example\n * _.intersection([1, 2], [4, 2], [2, 1]);\n * // => [2]\n */\n var intersection = restParam(function(arrays) {\n var othLength = arrays.length,\n othIndex = othLength,\n caches = Array(length),\n indexOf = getIndexOf(),\n isCommon = indexOf == baseIndexOf,\n result = [];\n\n while (othIndex--) {\n var value = arrays[othIndex] = isArrayLike(value = arrays[othIndex]) ? value : [];\n caches[othIndex] = (isCommon && value.length >= 120) ? createCache(othIndex && value) : null;\n }\n var array = arrays[0],\n index = -1,\n length = array ? array.length : 0,\n seen = caches[0];\n\n outer:\n while (++index < length) {\n value = array[index];\n if ((seen ? cacheIndexOf(seen, value) : indexOf(result, value, 0)) < 0) {\n var othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if ((cache ? cacheIndexOf(cache, value) : indexOf(arrays[othIndex], value, 0)) < 0) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(value);\n }\n result.push(value);\n }\n }\n return result;\n });\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array ? array.length : 0;\n return length ? array[length - 1] : undefined;\n }\n\n /**\n * This method is like `_.indexOf` except that it iterates over elements of\n * `array` from right to left.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {Array} array The array to search.\n * @param {*} value The value to search for.\n * @param {boolean|number} [fromIndex=array.length-1] The index to search from\n * or `true` to perform a binary search on a sorted array.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.lastIndexOf([1, 2, 1, 2], 2);\n * // => 3\n *\n * // using `fromIndex`\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n * // => 1\n *\n * // performing a binary search\n * _.lastIndexOf([1, 1, 2, 2], 2, true);\n * // => 3\n */\n function lastIndexOf(array, value, fromIndex) {\n var length = array ? array.length : 0;\n if (!length) {\n return -1;\n }\n var index = length;\n if (typeof fromIndex == 'number') {\n index = (fromIndex < 0 ? nativeMax(length + fromIndex, 0) : nativeMin(fromIndex || 0, length - 1)) + 1;\n } else if (fromIndex) {\n index = binaryIndex(array, value, true) - 1;\n var other = array[index];\n if (value === value ? (value === other) : (other !== other)) {\n return index;\n }\n return -1;\n }\n if (value !== value) {\n return indexOfNaN(array, index, true);\n }\n while (index--) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * Removes all provided values from `array` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.without`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...*} [values] The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3, 1, 2, 3];\n *\n * _.pull(array, 2, 3);\n * console.log(array);\n * // => [1, 1]\n */\n function pull() {\n var args = arguments,\n array = args[0];\n\n if (!(array && array.length)) {\n return array;\n }\n var index = 0,\n indexOf = getIndexOf(),\n length = args.length;\n\n while (++index < length) {\n var fromIndex = 0,\n value = args[index];\n\n while ((fromIndex = indexOf(array, value, fromIndex)) > -1) {\n splice.call(array, fromIndex, 1);\n }\n }\n return array;\n }\n\n /**\n * Removes elements from `array` corresponding to the given indexes and returns\n * an array of the removed elements. Indexes may be specified as an array of\n * indexes or as individual arguments.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove,\n * specified as individual indexes or arrays of indexes.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [5, 10, 15, 20];\n * var evens = _.pullAt(array, 1, 3);\n *\n * console.log(array);\n * // => [5, 15]\n *\n * console.log(evens);\n * // => [10, 20]\n */\n var pullAt = restParam(function(array, indexes) {\n indexes = baseFlatten(indexes);\n\n var result = baseAt(array, indexes);\n basePullAt(array, indexes.sort(baseCompareAscending));\n return result;\n });\n\n /**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is bound to\n * `thisArg` and invoked with three arguments: (value, index, array).\n *\n * If a property name is provided for `predicate` the created `_.property`\n * style callback returns the property value of the given element.\n *\n * If a value is also provided for `thisArg` the created `_.matchesProperty`\n * style callback returns `true` for elements that have a matching property\n * value, else `false`.\n *\n * If an object is provided for `predicate` the created `_.matches` style\n * callback returns `true` for elements that have the properties of the given\n * object, else `false`.\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function|Object|string} [predicate=_.identity] The function invoked\n * per iteration.\n * @param {*} [thisArg] The `this` binding of `predicate`.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\n function remove(array, predicate, thisArg) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = getCallback(predicate, thisArg, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n }\n\n /**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @alias tail\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.rest([1, 2, 3]);\n * // => [2, 3]\n */\n function rest(array) {\n return drop(array, 1);\n }\n\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of `Array#slice` to support node\n * lists in IE < 9 and to ensure dense arrays are returned.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function slice(array, start, end) {\n var length = array ? array.length : 0;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n return baseSlice(array, start, end);\n }\n\n /**\n * Uses a binary search to determine the lowest index at which `value` should\n * be inserted into `array` in order to maintain its sort order. If an iteratee\n * function is provided it is invoked for `value` and each element of `array`\n * to compute their sort ranking. The iteratee is bound to `thisArg` and\n * invoked with one argument; (value).\n *\n * If a property name is provided for `iteratee` the created `_.property`\n * style callback returns the property value of the given element.\n *\n * If a value is also provided for `thisArg` the created `_.matchesProperty`\n * style callback returns `true` for elements that have a matching property\n * value, else `false`.\n *\n * If an object is provided for `iteratee` the created `_.matches` style\n * callback returns `true` for elements that have the properties of the given\n * object, else `false`.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function|Object|string} [iteratee=_.identity] The function invoked\n * per iteration.\n * @param {*} [thisArg] The `this` binding of `iteratee`.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedIndex([30, 50], 40);\n * // => 1\n *\n * _.sortedIndex([4, 4, 5, 5], 5);\n * // => 2\n *\n * var dict = { 'data': { 'thirty': 30, 'forty': 40, 'fifty': 50 } };\n *\n * // using an iteratee function\n * _.sortedIndex(['thirty', 'fifty'], 'forty', function(word) {\n * return this.data[word];\n * }, dict);\n * // => 1\n *\n * // using the `_.property` callback shorthand\n * _.sortedIndex([{ 'x': 30 }, { 'x': 50 }], { 'x': 40 }, 'x');\n * // => 1\n */\n var sortedIndex = createSortedIndex();\n\n /**\n * This method is like `_.sortedIndex` except that it returns the highest\n * index at which `value` should be inserted into `array` in order to\n * maintain its sort order.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function|Object|string} [iteratee=_.identity] The function invoked\n * per iteration.\n * @param {*} [thisArg] The `this` binding of `iteratee`.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedLastIndex([4, 4, 5, 5], 5);\n * // => 4\n */\n var sortedLastIndex = createSortedIndex(true);\n\n /**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\n function take(array, n, guard) {\n var length = array ? array.length : 0;\n if (!length) {\n return [];\n }\n if (guard ? isIterateeCall(array, n, guard) : n == null) {\n n = 1;\n }\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\n function takeRight(array, n, guard) {\n var length = array ? array.length : 0;\n if (!length) {\n return [];\n }\n if (guard ? isIterateeCall(array, n, guard) : n == null) {\n n = 1;\n }\n n = length - (+n || 0);\n return baseSlice(array, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is bound to `thisArg`\n * and invoked with three arguments: (value, index, array).\n *\n * If a property name is provided for `predicate` the created `_.property`\n * style callback returns the property value of the given element.\n *\n * If a value is also provided for `thisArg` the created `_.matchesProperty`\n * style callback returns `true` for elements that have a matching property\n * value, else `false`.\n *\n * If an object is provided for `predicate` the created `_.matches` style\n * callback returns `true` for elements that have the properties of the given\n * object, else `false`.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function|Object|string} [predicate=_.identity] The function invoked\n * per iteration.\n * @param {*} [thisArg] The `this` binding of `predicate`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRightWhile([1, 2, 3], function(n) {\n * return n > 1;\n * });\n * // => [2, 3]\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * // using the `_.matches` callback shorthand\n * _.pluck(_.takeRightWhile(users, { 'user': 'pebbles', 'active': false }), 'user');\n * // => ['pebbles']\n *\n * // using the `_.matchesProperty` callback shorthand\n * _.pluck(_.takeRightWhile(users, 'active', false), 'user');\n * // => ['fred', 'pebbles']\n *\n * // using the `_.property` callback shorthand\n * _.pluck(_.takeRightWhile(users, 'active'), 'user');\n * // => []\n */\n function takeRightWhile(array, predicate, thisArg) {\n return (array && array.length)\n ? baseWhile(array, getCallback(predicate, thisArg, 3), false, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` with elements taken from the beginning. Elements\n * are taken until `predicate` returns falsey. The predicate is bound to\n * `thisArg` and invoked with three arguments: (value, index, array).\n *\n * If a property name is provided for `predicate` the created `_.property`\n * style callback returns the property value of the given element.\n *\n * If a value is also provided for `thisArg` the created `_.matchesProperty`\n * style callback returns `true` for elements that have a matching property\n * value, else `false`.\n *\n * If an object is provided for `predicate` the created `_.matches` style\n * callback returns `true` for elements that have the properties of the given\n * object, else `false`.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function|Object|string} [predicate=_.identity] The function invoked\n * per iteration.\n * @param {*} [thisArg] The `this` binding of `predicate`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeWhile([1, 2, 3], function(n) {\n * return n < 3;\n * });\n * // => [1, 2]\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false},\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * // using the `_.matches` callback shorthand\n * _.pluck(_.takeWhile(users, { 'user': 'barney', 'active': false }), 'user');\n * // => ['barney']\n *\n * // using the `_.matchesProperty` callback shorthand\n * _.pluck(_.takeWhile(users, 'active', false), 'user');\n * // => ['barney', 'fred']\n *\n * // using the `_.property` callback shorthand\n * _.pluck(_.takeWhile(users, 'active'), 'user');\n * // => []\n */\n function takeWhile(array, predicate, thisArg) {\n return (array && array.length)\n ? baseWhile(array, getCallback(predicate, thisArg, 3))\n : [];\n }\n\n /**\n * Creates an array of unique values, in order, from all of the provided arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([1, 2], [4, 2], [2, 1]);\n * // => [1, 2, 4]\n */\n var union = restParam(function(arrays) {\n return baseUniq(baseFlatten(arrays, false, true));\n });\n\n /**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurence of each element\n * is kept. Providing `true` for `isSorted` performs a faster search algorithm\n * for sorted arrays. If an iteratee function is provided it is invoked for\n * each element in the array to generate the criterion by which uniqueness\n * is computed. The `iteratee` is bound to `thisArg` and invoked with three\n * arguments: (value, index, array).\n *\n * If a property name is provided for `iteratee` the created `_.property`\n * style callback returns the property value of the given element.\n *\n * If a value is also provided for `thisArg` the created `_.matchesProperty`\n * style callback returns `true` for elements that have a matching property\n * value, else `false`.\n *\n * If an object is provided for `iteratee` the created `_.matches` style\n * callback returns `true` for elements that have the properties of the given\n * object, else `false`.\n *\n * @static\n * @memberOf _\n * @alias unique\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {boolean} [isSorted] Specify the array is sorted.\n * @param {Function|Object|string} [iteratee] The function invoked per iteration.\n * @param {*} [thisArg] The `this` binding of `iteratee`.\n * @returns {Array} Returns the new duplicate-value-free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n *\n * // using `isSorted`\n * _.uniq([1, 1, 2], true);\n * // => [1, 2]\n *\n * // using an iteratee function\n * _.uniq([1, 2.5, 1.5, 2], function(n) {\n * return this.floor(n);\n * }, Math);\n * // => [1, 2.5]\n *\n * // using the `_.property` callback shorthand\n * _.uniq([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n function uniq(array, isSorted, iteratee, thisArg) {\n var length = array ? array.length : 0;\n if (!length) {\n return [];\n }\n if (isSorted != null && typeof isSorted != 'boolean') {\n thisArg = iteratee;\n iteratee = isIterateeCall(array, isSorted, thisArg) ? undefined : isSorted;\n isSorted = false;\n }\n var callback = getCallback();\n if (!(iteratee == null && callback === baseCallback)) {\n iteratee = callback(iteratee, thisArg, 3);\n }\n return (isSorted && getIndexOf() == baseIndexOf)\n ? sortedUniq(array, iteratee)\n : baseUniq(array, iteratee);\n }\n\n /**\n * This method is like `_.zip` except that it accepts an array of grouped\n * elements and creates an array regrouping the elements to their pre-zip\n * configuration.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip(['fred', 'barney'], [30, 40], [true, false]);\n * // => [['fred', 30, true], ['barney', 40, false]]\n *\n * _.unzip(zipped);\n * // => [['fred', 'barney'], [30, 40], [true, false]]\n */\n function unzip(array) {\n if (!(array && array.length)) {\n return [];\n }\n var index = -1,\n length = 0;\n\n array = arrayFilter(array, function(group) {\n if (isArrayLike(group)) {\n length = nativeMax(group.length, length);\n return true;\n }\n });\n var result = Array(length);\n while (++index < length) {\n result[index] = arrayMap(array, baseProperty(index));\n }\n return result;\n }\n\n /**\n * This method is like `_.unzip` except that it accepts an iteratee to specify\n * how regrouped values should be combined. The `iteratee` is bound to `thisArg`\n * and invoked with four arguments: (accumulator, value, index, group).\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @param {Function} [iteratee] The function to combine regrouped values.\n * @param {*} [thisArg] The `this` binding of `iteratee`.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n * // => [[1, 10, 100], [2, 20, 200]]\n *\n * _.unzipWith(zipped, _.add);\n * // => [3, 30, 300]\n */\n function unzipWith(array, iteratee, thisArg) {\n var length = array ? array.length : 0;\n if (!length) {\n return [];\n }\n var result = unzip(array);\n if (iteratee == null) {\n return result;\n }\n iteratee = bindCallback(iteratee, thisArg, 4);\n return arrayMap(result, function(group) {\n return arrayReduce(group, iteratee, undefined, true);\n });\n }\n\n /**\n * Creates an array excluding all provided values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {Array} array The array to filter.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.without([1, 2, 1, 3], 1, 2);\n * // => [3]\n */\n var without = restParam(function(array, values) {\n return isArrayLike(array)\n ? baseDifference(array, values)\n : [];\n });\n\n /**\n * Creates an array of unique values that is the [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the provided arrays.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of values.\n * @example\n *\n * _.xor([1, 2], [4, 2]);\n * // => [1, 4]\n */\n function xor() {\n var index = -1,\n length = arguments.length;\n\n while (++index < length) {\n var array = arguments[index];\n if (isArrayLike(array)) {\n var result = result\n ? arrayPush(baseDifference(result, array), baseDifference(array, result))\n : array;\n }\n }\n return result ? baseUniq(result) : [];\n }\n\n /**\n * Creates an array of grouped elements, the first of which contains the first\n * elements of the given arrays, the second of which contains the second elements\n * of the given arrays, and so on.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zip(['fred', 'barney'], [30, 40], [true, false]);\n * // => [['fred', 30, true], ['barney', 40, false]]\n */\n var zip = restParam(unzip);\n\n /**\n * The inverse of `_.pairs`; this method returns an object composed from arrays\n * of property names and values. Provide either a single two dimensional array,\n * e.g. `[[key1, value1], [key2, value2]]` or two arrays, one of property names\n * and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @alias object\n * @category Array\n * @param {Array} props The property names.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject([['fred', 30], ['barney', 40]]);\n * // => { 'fred': 30, 'barney': 40 }\n *\n * _.zipObject(['fred', 'barney'], [30, 40]);\n * // => { 'fred': 30, 'barney': 40 }\n */\n function zipObject(props, values) {\n var index = -1,\n length = props ? props.length : 0,\n result = {};\n\n if (length && !values && !isArray(props[0])) {\n values = [];\n }\n while (++index < length) {\n var key = props[index];\n if (values) {\n result[key] = values[index];\n } else if (key) {\n result[key[0]] = key[1];\n }\n }\n return result;\n }\n\n /**\n * This method is like `_.zip` except that it accepts an iteratee to specify\n * how grouped values should be combined. The `iteratee` is bound to `thisArg`\n * and invoked with four arguments: (accumulator, value, index, group).\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} [iteratee] The function to combine grouped values.\n * @param {*} [thisArg] The `this` binding of `iteratee`.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zipWith([1, 2], [10, 20], [100, 200], _.add);\n * // => [111, 222]\n */\n var zipWith = restParam(function(arrays) {\n var length = arrays.length,\n iteratee = length > 2 ? arrays[length - 2] : undefined,\n thisArg = length > 1 ? arrays[length - 1] : undefined;\n\n if (length > 2 && typeof iteratee == 'function') {\n length -= 2;\n } else {\n iteratee = (length > 1 && typeof thisArg == 'function') ? (--length, thisArg) : undefined;\n thisArg = undefined;\n }\n arrays.length = length;\n return unzipWith(arrays, iteratee, thisArg);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object that wraps `value` with explicit method\n * chaining enabled.\n *\n * @static\n * @memberOf _\n * @category Chain\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _.chain(users)\n * .sortBy('age')\n * .map(function(chr) {\n * return chr.user + ' is ' + chr.age;\n * })\n * .first()\n * .value();\n * // => 'pebbles is 1'\n */\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor is\n * bound to `thisArg` and invoked with one argument; (value). The purpose of\n * this method is to \"tap into\" a method chain in order to perform operations\n * on intermediate results within the chain.\n *\n * @static\n * @memberOf _\n * @category Chain\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @param {*} [thisArg] The `this` binding of `interceptor`.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n function tap(value, interceptor, thisArg) {\n interceptor.call(thisArg, value);\n return value;\n }\n\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n *\n * @static\n * @memberOf _\n * @category Chain\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @param {*} [thisArg] The `this` binding of `interceptor`.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n function thru(value, interceptor, thisArg) {\n return interceptor.call(thisArg, value);\n }\n\n /**\n * Enables explicit method chaining on the wrapper object.\n *\n * @name chain\n * @memberOf _\n * @category Chain\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // without explicit chaining\n * _(users).first();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // with explicit chaining\n * _(users).chain()\n * .first()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n function wrapperChain() {\n return chain(this);\n }\n\n /**\n * Executes the chained sequence and returns the wrapped result.\n *\n * @name commit\n * @memberOf _\n * @category Chain\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).push(3);\n *\n * console.log(array);\n * // => [1, 2]\n *\n * wrapped = wrapped.commit();\n * console.log(array);\n * // => [1, 2, 3]\n *\n * wrapped.last();\n * // => 3\n *\n * console.log(array);\n * // => [1, 2, 3]\n */\n function wrapperCommit() {\n return new LodashWrapper(this.value(), this.__chain__);\n }\n\n /**\n * Creates a new array joining a wrapped array with any additional arrays\n * and/or values.\n *\n * @name concat\n * @memberOf _\n * @category Chain\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var wrapped = _(array).concat(2, [3], [[4]]);\n *\n * console.log(wrapped.value());\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n var wrapperConcat = restParam(function(values) {\n values = baseFlatten(values);\n return this.thru(function(array) {\n return arrayConcat(isArray(array) ? array : [toObject(array)], values);\n });\n });\n\n /**\n * Creates a clone of the chained sequence planting `value` as the wrapped value.\n *\n * @name plant\n * @memberOf _\n * @category Chain\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).map(function(value) {\n * return Math.pow(value, 2);\n * });\n *\n * var other = [3, 4];\n * var otherWrapped = wrapped.plant(other);\n *\n * otherWrapped.value();\n * // => [9, 16]\n *\n * wrapped.value();\n * // => [1, 4]\n */\n function wrapperPlant(value) {\n var result,\n parent = this;\n\n while (parent instanceof baseLodash) {\n var clone = wrapperClone(parent);\n if (result) {\n previous.__wrapped__ = clone;\n } else {\n result = clone;\n }\n var previous = clone;\n parent = parent.__wrapped__;\n }\n previous.__wrapped__ = value;\n return result;\n }\n\n /**\n * Reverses the wrapped array so the first element becomes the last, the\n * second element becomes the second to last, and so on.\n *\n * **Note:** This method mutates the wrapped array.\n *\n * @name reverse\n * @memberOf _\n * @category Chain\n * @returns {Object} Returns the new reversed `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _(array).reverse().value()\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function wrapperReverse() {\n var value = this.__wrapped__;\n\n var interceptor = function(value) {\n return (wrapped && wrapped.__dir__ < 0) ? value : value.reverse();\n };\n if (value instanceof LazyWrapper) {\n var wrapped = value;\n if (this.__actions__.length) {\n wrapped = new LazyWrapper(this);\n }\n wrapped = wrapped.reverse();\n wrapped.__actions__.push({ 'func': thru, 'args': [interceptor], 'thisArg': undefined });\n return new LodashWrapper(wrapped, this.__chain__);\n }\n return this.thru(interceptor);\n }\n\n /**\n * Produces the result of coercing the unwrapped value to a string.\n *\n * @name toString\n * @memberOf _\n * @category Chain\n * @returns {string} Returns the coerced string value.\n * @example\n *\n * _([1, 2, 3]).toString();\n * // => '1,2,3'\n */\n function wrapperToString() {\n return (this.value() + '');\n }\n\n /**\n * Executes the chained sequence to extract the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @alias run, toJSON, valueOf\n * @category Chain\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of elements corresponding to the given keys, or indexes,\n * of `collection`. Keys may be specified as individual arguments or as arrays\n * of keys.\n *\n * @static\n * @memberOf _\n * @category Collection\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {...(number|number[]|string|string[])} [props] The property names\n * or indexes of elements to pick, specified individually or in arrays.\n * @returns {Array} Returns the new array of picked elements.\n * @example\n *\n * _.at(['a', 'b', 'c'], [0, 2]);\n * // => ['a', 'c']\n *\n * _.at(['barney', 'fred', 'pebbles'], 0, 2);\n * // => ['barney', 'pebbles']\n */\n var at = restParam(function(collection, props) {\n return baseAt(collection, baseFlatten(props));\n });\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` through `iteratee`. The corresponding value\n * of each key is the number of times the key was returned by `iteratee`.\n * The `iteratee` is bound to `thisArg` and invoked with three arguments:\n * (value, index|key, collection).\n *\n * If a property name is provided for `iteratee` the created `_.property`\n * style callback returns the property value of the given element.\n *\n * If a value is also provided for `thisArg` the created `_.matchesProperty`\n * style callback returns `true` for elements that have a matching property\n * value, else `false`.\n *\n * If an object is provided for `iteratee` the created `_.matches` style\n * callback returns `true` for elements that have the properties of the given\n * object, else `false`.\n *\n * @static\n * @memberOf _\n * @category Collection\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function|Object|string} [iteratee=_.identity] The function invoked\n * per iteration.\n * @param {*} [thisArg] The `this` binding of `iteratee`.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([4.3, 6.1, 6.4], function(n) {\n * return Math.floor(n);\n * });\n * // => { '4': 1, '6': 2 }\n *\n * _.countBy([4.3, 6.1, 6.4], function(n) {\n * return this.floor(n);\n * }, Math);\n * // => { '4': 1, '6': 2 }\n *\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\n var countBy = createAggregator(function(result, value, key) {\n hasOwnProperty.call(result, key) ? ++result[key] : (result[key] = 1);\n });\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * The predicate is bound to `thisArg` and invoked with three arguments:\n * (value, index|key, collection).\n *\n * If a property name is provided for `predicate` the created `_.property`\n * style callback returns the property value of the given element.\n *\n * If a value is also provided for `thisArg` the created `_.matchesProperty`\n * style callback returns `true` for elements that have a matching property\n * value, else `false`.\n *\n * If an object is provided for `predicate` the created `_.matches` style\n * callback returns `true` for elements that have the properties of the given\n * object, else `false`.\n *\n * @static\n * @memberOf _\n * @alias all\n * @category Collection\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function|Object|string} [predicate=_.identity] The function invoked\n * per iteration.\n * @param {*} [thisArg] The `this` binding of `predicate`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // using the `_.matches` callback shorthand\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // using the `_.matchesProperty` callback shorthand\n * _.every(users, 'active', false);\n * // => true\n *\n * // using the `_.property` callback shorthand\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, thisArg) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (thisArg && isIterateeCall(collection, predicate, thisArg)) {\n predicate = undefined;\n }\n if (typeof predicate != 'function' || thisArg !== undefined) {\n predicate = getCallback(predicate, thisArg, 3);\n }\n return func(collection, predicate);\n }\n\n /**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is bound to `thisArg` and\n * invoked with three arguments: (value, index|key, collection).\n *\n * If a property name is provided for `predicate` the created `_.property`\n * style callback returns the property value of the given element.\n *\n * If a value is also provided for `thisArg` the created `_.matchesProperty`\n * style callback returns `true` for elements that have a matching property\n * value, else `false`.\n *\n * If an object is provided for `predicate` the created `_.matches` style\n * callback returns `true` for elements that have the properties of the given\n * object, else `false`.\n *\n * @static\n * @memberOf _\n * @alias select\n * @category Collection\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function|Object|string} [predicate=_.identity] The function invoked\n * per iteration.\n * @param {*} [thisArg] The `this` binding of `predicate`.\n * @returns {Array} Returns the new filtered array.\n * @example\n *\n * _.filter([4, 5, 6], function(n) {\n * return n % 2 == 0;\n * });\n * // => [4, 6]\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // using the `_.matches` callback shorthand\n * _.pluck(_.filter(users, { 'age': 36, 'active': true }), 'user');\n * // => ['barney']\n *\n * // using the `_.matchesProperty` callback shorthand\n * _.pluck(_.filter(users, 'active', false), 'user');\n * // => ['fred']\n *\n * // using the `_.property` callback shorthand\n * _.pluck(_.filter(users, 'active'), 'user');\n * // => ['barney']\n */\n function filter(collection, predicate, thisArg) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n predicate = getCallback(predicate, thisArg, 3);\n return func(collection, predicate);\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is bound to `thisArg` and\n * invoked with three arguments: (value, index|key, collection).\n *\n * If a property name is provided for `predicate` the created `_.property`\n * style callback returns the property value of the given element.\n *\n * If a value is also provided for `thisArg` the created `_.matchesProperty`\n * style callback returns `true` for elements that have a matching property\n * value, else `false`.\n *\n * If an object is provided for `predicate` the created `_.matches` style\n * callback returns `true` for elements that have the properties of the given\n * object, else `false`.\n *\n * @static\n * @memberOf _\n * @alias detect\n * @category Collection\n * @param {Array|Object|string} collection The collection to search.\n * @param {Function|Object|string} [predicate=_.identity] The function invoked\n * per iteration.\n * @param {*} [thisArg] The `this` binding of `predicate`.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.result(_.find(users, function(chr) {\n * return chr.age < 40;\n * }), 'user');\n * // => 'barney'\n *\n * // using the `_.matches` callback shorthand\n * _.result(_.find(users, { 'age': 1, 'active': true }), 'user');\n * // => 'pebbles'\n *\n * // using the `_.matchesProperty` callback shorthand\n * _.result(_.find(users, 'active', false), 'user');\n * // => 'fred'\n *\n * // using the `_.property` callback shorthand\n * _.result(_.find(users, 'active'), 'user');\n * // => 'barney'\n */\n var find = createFind(baseEach);\n\n /**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @category Collection\n * @param {Array|Object|string} collection The collection to search.\n * @param {Function|Object|string} [predicate=_.identity] The function invoked\n * per iteration.\n * @param {*} [thisArg] The `this` binding of `predicate`.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n * return n % 2 == 1;\n * });\n * // => 3\n */\n var findLast = createFind(baseEachRight, true);\n\n /**\n * Performs a deep comparison between each element in `collection` and the\n * source object, returning the first element that has equivalent property\n * values.\n *\n * **Note:** This method supports comparing arrays, booleans, `Date` objects,\n * numbers, `Object` objects, regexes, and strings. Objects are compared by\n * their own, not inherited, enumerable properties. For comparing a single\n * own or inherited property value see `_.matchesProperty`.\n *\n * @static\n * @memberOf _\n * @category Collection\n * @param {Array|Object|string} collection The collection to search.\n * @param {Object} source The object of property values to match.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.result(_.findWhere(users, { 'age': 36, 'active': true }), 'user');\n * // => 'barney'\n *\n * _.result(_.findWhere(users, { 'age': 40, 'active': false }), 'user');\n * // => 'fred'\n */\n function findWhere(collection, source) {\n return find(collection, baseMatches(source));\n }\n\n /**\n * Iterates over elements of `collection` invoking `iteratee` for each element.\n * The `iteratee` is bound to `thisArg` and invoked with three arguments:\n * (value, index|key, collection). Iteratee functions may exit iteration early\n * by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\" property\n * are iterated like arrays. To avoid this behavior `_.forIn` or `_.forOwn`\n * may be used for object iteration.\n *\n * @static\n * @memberOf _\n * @alias each\n * @category Collection\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [thisArg] The `this` binding of `iteratee`.\n * @returns {Array|Object|string} Returns `collection`.\n * @example\n *\n * _([1, 2]).forEach(function(n) {\n * console.log(n);\n * }).value();\n * // => logs each value from left to right and returns the array\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(n, key) {\n * console.log(n, key);\n * });\n * // => logs each value-key pair and returns the object (iteration order is not guaranteed)\n */\n var forEach = createForEach(arrayEach, baseEach);\n\n /**\n * This method is like `_.forEach` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @alias eachRight\n * @category Collection\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [thisArg] The `this` binding of `iteratee`.\n * @returns {Array|Object|string} Returns `collection`.\n * @example\n *\n * _([1, 2]).forEachRight(function(n) {\n * console.log(n);\n * }).value();\n * // => logs each value from right to left and returns the array\n */\n var forEachRight = createForEach(arrayEachRight, baseEachRight);\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` through `iteratee`. The corresponding value\n * of each key is an array of the elements responsible for generating the key.\n * The `iteratee` is bound to `thisArg` and invoked with three arguments:\n * (value, index|key, collection).\n *\n * If a property name is provided for `iteratee` the created `_.property`\n * style callback returns the property value of the given element.\n *\n * If a value is also provided for `thisArg` the created `_.matchesProperty`\n * style callback returns `true` for elements that have a matching property\n * value, else `false`.\n *\n * If an object is provided for `iteratee` the created `_.matches` style\n * callback returns `true` for elements that have the properties of the given\n * object, else `false`.\n *\n * @static\n * @memberOf _\n * @category Collection\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function|Object|string} [iteratee=_.identity] The function invoked\n * per iteration.\n * @param {*} [thisArg] The `this` binding of `iteratee`.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([4.2, 6.1, 6.4], function(n) {\n * return Math.floor(n);\n * });\n * // => { '4': [4.2], '6': [6.1, 6.4] }\n *\n * _.groupBy([4.2, 6.1, 6.4], function(n) {\n * return this.floor(n);\n * }, Math);\n * // => { '4': [4.2], '6': [6.1, 6.4] }\n *\n * // using the `_.property` callback shorthand\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\n var groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n result[key] = [value];\n }\n });\n\n /**\n * Checks if `value` is in `collection` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it is used as the offset\n * from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @alias contains, include\n * @category Collection\n * @param {Array|Object|string} collection The collection to search.\n * @param {*} target The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as a callback for functions like `_.reduce`.\n * @returns {boolean} Returns `true` if a matching element is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'user': 'fred', 'age': 40 }, 'fred');\n * // => true\n *\n * _.includes('pebbles', 'eb');\n * // => true\n */\n function includes(collection, target, fromIndex, guard) {\n var length = collection ? getLength(collection) : 0;\n if (!isLength(length)) {\n collection = values(collection);\n length = collection.length;\n }\n if (typeof fromIndex != 'number' || (guard && isIterateeCall(target, fromIndex, guard))) {\n fromIndex = 0;\n } else {\n fromIndex = fromIndex < 0 ? nativeMax(length + fromIndex, 0) : (fromIndex || 0);\n }\n return (typeof collection == 'string' || !isArray(collection) && isString(collection))\n ? (fromIndex <= length && collection.indexOf(target, fromIndex) > -1)\n : (!!length && getIndexOf(collection, target, fromIndex) > -1);\n }\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` through `iteratee`. The corresponding value\n * of each key is the last element responsible for generating the key. The\n * iteratee function is bound to `thisArg` and invoked with three arguments:\n * (value, index|key, collection).\n *\n * If a property name is provided for `iteratee` the created `_.property`\n * style callback returns the property value of the given element.\n *\n * If a value is also provided for `thisArg` the created `_.matchesProperty`\n * style callback returns `true` for elements that have a matching property\n * value, else `false`.\n *\n * If an object is provided for `iteratee` the created `_.matches` style\n * callback returns `true` for elements that have the properties of the given\n * object, else `false`.\n *\n * @static\n * @memberOf _\n * @category Collection\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function|Object|string} [iteratee=_.identity] The function invoked\n * per iteration.\n * @param {*} [thisArg] The `this` binding of `iteratee`.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var keyData = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.indexBy(keyData, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n *\n * _.indexBy(keyData, function(object) {\n * return String.fromCharCode(object.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.indexBy(keyData, function(object) {\n * return this.fromCharCode(object.code);\n * }, String);\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n */\n var indexBy = createAggregator(function(result, value, key) {\n result[key] = value;\n });\n\n /**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `methodName` is a function it is\n * invoked for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @category Collection\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invoke([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invoke([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\n var invoke = restParam(function(collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n isProp = isKey(path),\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value) {\n var func = isFunc ? path : ((isProp && value != null) ? value[path] : undefined);\n result[++index] = func ? func.apply(value, args) : invokePath(value, path, args);\n });\n return result;\n });\n\n /**\n * Creates an array of values by running each element in `collection` through\n * `iteratee`. The `iteratee` is bound to `thisArg` and invoked with three\n * arguments: (value, index|key, collection).\n *\n * If a property name is provided for `iteratee` the created `_.property`\n * style callback returns the property value of the given element.\n *\n * If a value is also provided for `thisArg` the created `_.matchesProperty`\n * style callback returns `true` for elements that have a matching property\n * value, else `false`.\n *\n * If an object is provided for `iteratee` the created `_.matches` style\n * callback returns `true` for elements that have the properties of the given\n * object, else `false`.\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `callback`, `chunk`, `clone`, `create`, `curry`, `curryRight`,\n * `drop`, `dropRight`, `every`, `fill`, `flatten`, `invert`, `max`, `min`,\n * `parseInt`, `slice`, `sortBy`, `take`, `takeRight`, `template`, `trim`,\n * `trimLeft`, `trimRight`, `trunc`, `random`, `range`, `sample`, `some`,\n * `sum`, `uniq`, and `words`\n *\n * @static\n * @memberOf _\n * @alias collect\n * @category Collection\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function|Object|string} [iteratee=_.identity] The function invoked\n * per iteration.\n * @param {*} [thisArg] The `this` binding of `iteratee`.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function timesThree(n) {\n * return n * 3;\n * }\n *\n * _.map([1, 2], timesThree);\n * // => [3, 6]\n *\n * _.map({ 'a': 1, 'b': 2 }, timesThree);\n * // => [3, 6] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // using the `_.property` callback shorthand\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee, thisArg) {\n var func = isArray(collection) ? arrayMap : baseMap;\n iteratee = getCallback(iteratee, thisArg, 3);\n return func(collection, iteratee);\n }\n\n /**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, while the second of which\n * contains elements `predicate` returns falsey for. The predicate is bound\n * to `thisArg` and invoked with three arguments: (value, index|key, collection).\n *\n * If a property name is provided for `predicate` the created `_.property`\n * style callback returns the property value of the given element.\n *\n * If a value is also provided for `thisArg` the created `_.matchesProperty`\n * style callback returns `true` for elements that have a matching property\n * value, else `false`.\n *\n * If an object is provided for `predicate` the created `_.matches` style\n * callback returns `true` for elements that have the properties of the given\n * object, else `false`.\n *\n * @static\n * @memberOf _\n * @category Collection\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function|Object|string} [predicate=_.identity] The function invoked\n * per iteration.\n * @param {*} [thisArg] The `this` binding of `predicate`.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * _.partition([1, 2, 3], function(n) {\n * return n % 2;\n * });\n * // => [[1, 3], [2]]\n *\n * _.partition([1.2, 2.3, 3.4], function(n) {\n * return this.floor(n) % 2;\n * }, Math);\n * // => [[1.2, 3.4], [2.3]]\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * var mapper = function(array) {\n * return _.pluck(array, 'user');\n * };\n *\n * // using the `_.matches` callback shorthand\n * _.map(_.partition(users, { 'age': 1, 'active': false }), mapper);\n * // => [['pebbles'], ['barney', 'fred']]\n *\n * // using the `_.matchesProperty` callback shorthand\n * _.map(_.partition(users, 'active', false), mapper);\n * // => [['barney', 'pebbles'], ['fred']]\n *\n * // using the `_.property` callback shorthand\n * _.map(_.partition(users, 'active'), mapper);\n * // => [['fred'], ['barney', 'pebbles']]\n */\n var partition = createAggregator(function(result, value, key) {\n result[key ? 0 : 1].push(value);\n }, function() { return [[], []]; });\n\n /**\n * Gets the property value of `path` from all elements in `collection`.\n *\n * @static\n * @memberOf _\n * @category Collection\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Array|string} path The path of the property to pluck.\n * @returns {Array} Returns the property values.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * _.pluck(users, 'user');\n * // => ['barney', 'fred']\n *\n * var userIndex = _.indexBy(users, 'user');\n * _.pluck(userIndex, 'age');\n * // => [36, 40] (iteration order is not guaranteed)\n */\n function pluck(collection, path) {\n return map(collection, property(path));\n }\n\n /**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` through `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not provided the first element of `collection` is used as the initial\n * value. The `iteratee` is bound to `thisArg` and invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `sortByAll`,\n * and `sortByOrder`\n *\n * @static\n * @memberOf _\n * @alias foldl, inject\n * @category Collection\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {*} [thisArg] The `this` binding of `iteratee`.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.reduce([1, 2], function(total, n) {\n * return total + n;\n * });\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2 }, function(result, n, key) {\n * result[key] = n * 3;\n * return result;\n * }, {});\n * // => { 'a': 3, 'b': 6 } (iteration order is not guaranteed)\n */\n var reduce = createReduce(arrayReduce, baseEach);\n\n /**\n * This method is like `_.reduce` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @alias foldr\n * @category Collection\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {*} [thisArg] The `this` binding of `iteratee`.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * var array = [[0, 1], [2, 3], [4, 5]];\n *\n * _.reduceRight(array, function(flattened, other) {\n * return flattened.concat(other);\n * }, []);\n * // => [4, 5, 2, 3, 0, 1]\n */\n var reduceRight = createReduce(arrayReduceRight, baseEachRight);\n\n /**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @category Collection\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function|Object|string} [predicate=_.identity] The function invoked\n * per iteration.\n * @param {*} [thisArg] The `this` binding of `predicate`.\n * @returns {Array} Returns the new filtered array.\n * @example\n *\n * _.reject([1, 2, 3, 4], function(n) {\n * return n % 2 == 0;\n * });\n * // => [1, 3]\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * // using the `_.matches` callback shorthand\n * _.pluck(_.reject(users, { 'age': 40, 'active': true }), 'user');\n * // => ['barney']\n *\n * // using the `_.matchesProperty` callback shorthand\n * _.pluck(_.reject(users, 'active', false), 'user');\n * // => ['fred']\n *\n * // using the `_.property` callback shorthand\n * _.pluck(_.reject(users, 'active'), 'user');\n * // => ['barney']\n */\n function reject(collection, predicate, thisArg) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n predicate = getCallback(predicate, thisArg, 3);\n return func(collection, function(value, index, collection) {\n return !predicate(value, index, collection);\n });\n }\n\n /**\n * Gets a random element or `n` random elements from a collection.\n *\n * @static\n * @memberOf _\n * @category Collection\n * @param {Array|Object|string} collection The collection to sample.\n * @param {number} [n] The number of elements to sample.\n * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.\n * @returns {*} Returns the random sample(s).\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n *\n * _.sample([1, 2, 3, 4], 2);\n * // => [3, 1]\n */\n function sample(collection, n, guard) {\n if (guard ? isIterateeCall(collection, n, guard) : n == null) {\n collection = toIterable(collection);\n var length = collection.length;\n return length > 0 ? collection[baseRandom(0, length - 1)] : undefined;\n }\n var index = -1,\n result = toArray(collection),\n length = result.length,\n lastIndex = length - 1;\n\n n = nativeMin(n < 0 ? 0 : (+n || 0), length);\n while (++index < n) {\n var rand = baseRandom(index, lastIndex),\n value = result[rand];\n\n result[rand] = result[index];\n result[index] = value;\n }\n result.length = n;\n return result;\n }\n\n /**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @category Collection\n * @param {Array|Object|string} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\n function shuffle(collection) {\n return sample(collection, POSITIVE_INFINITY);\n }\n\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable properties for objects.\n *\n * @static\n * @memberOf _\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the size of `collection`.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n function size(collection) {\n var length = collection ? getLength(collection) : 0;\n return isLength(length) ? length : keys(collection).length;\n }\n\n /**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * The function returns as soon as it finds a passing value and does not iterate\n * over the entire collection. The predicate is bound to `thisArg` and invoked\n * with three arguments: (value, index|key, collection).\n *\n * If a property name is provided for `predicate` the created `_.property`\n * style callback returns the property value of the given element.\n *\n * If a value is also provided for `thisArg` the created `_.matchesProperty`\n * style callback returns `true` for elements that have a matching property\n * value, else `false`.\n *\n * If an object is provided for `predicate` the created `_.matches` style\n * callback returns `true` for elements that have the properties of the given\n * object, else `false`.\n *\n * @static\n * @memberOf _\n * @alias any\n * @category Collection\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function|Object|string} [predicate=_.identity] The function invoked\n * per iteration.\n * @param {*} [thisArg] The `this` binding of `predicate`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // using the `_.matches` callback shorthand\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // using the `_.matchesProperty` callback shorthand\n * _.some(users, 'active', false);\n * // => true\n *\n * // using the `_.property` callback shorthand\n * _.some(users, 'active');\n * // => true\n */\n function some(collection, predicate, thisArg) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (thisArg && isIterateeCall(collection, predicate, thisArg)) {\n predicate = undefined;\n }\n if (typeof predicate != 'function' || thisArg !== undefined) {\n predicate = getCallback(predicate, thisArg, 3);\n }\n return func(collection, predicate);\n }\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection through `iteratee`. This method performs\n * a stable sort, that is, it preserves the original sort order of equal elements.\n * The `iteratee` is bound to `thisArg` and invoked with three arguments:\n * (value, index|key, collection).\n *\n * If a property name is provided for `iteratee` the created `_.property`\n * style callback returns the property value of the given element.\n *\n * If a value is also provided for `thisArg` the created `_.matchesProperty`\n * style callback returns `true` for elements that have a matching property\n * value, else `false`.\n *\n * If an object is provided for `iteratee` the created `_.matches` style\n * callback returns `true` for elements that have the properties of the given\n * object, else `false`.\n *\n * @static\n * @memberOf _\n * @category Collection\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function|Object|string} [iteratee=_.identity] The function invoked\n * per iteration.\n * @param {*} [thisArg] The `this` binding of `iteratee`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * _.sortBy([1, 2, 3], function(n) {\n * return Math.sin(n);\n * });\n * // => [3, 1, 2]\n *\n * _.sortBy([1, 2, 3], function(n) {\n * return this.sin(n);\n * }, Math);\n * // => [3, 1, 2]\n *\n * var users = [\n * { 'user': 'fred' },\n * { 'user': 'pebbles' },\n * { 'user': 'barney' }\n * ];\n *\n * // using the `_.property` callback shorthand\n * _.pluck(_.sortBy(users, 'user'), 'user');\n * // => ['barney', 'fred', 'pebbles']\n */\n function sortBy(collection, iteratee, thisArg) {\n if (collection == null) {\n return [];\n }\n if (thisArg && isIterateeCall(collection, iteratee, thisArg)) {\n iteratee = undefined;\n }\n var index = -1;\n iteratee = getCallback(iteratee, thisArg, 3);\n\n var result = baseMap(collection, function(value, key, collection) {\n return { 'criteria': iteratee(value, key, collection), 'index': ++index, 'value': value };\n });\n return baseSortBy(result, compareAscending);\n }\n\n /**\n * This method is like `_.sortBy` except that it can sort by multiple iteratees\n * or property names.\n *\n * If a property name is provided for an iteratee the created `_.property`\n * style callback returns the property value of the given element.\n *\n * If an object is provided for an iteratee the created `_.matches` style\n * callback returns `true` for elements that have the properties of the given\n * object, else `false`.\n *\n * @static\n * @memberOf _\n * @category Collection\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {...(Function|Function[]|Object|Object[]|string|string[])} iteratees\n * The iteratees to sort by, specified as individual values or arrays of values.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 42 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.map(_.sortByAll(users, ['user', 'age']), _.values);\n * // => [['barney', 34], ['barney', 36], ['fred', 42], ['fred', 48]]\n *\n * _.map(_.sortByAll(users, 'user', function(chr) {\n * return Math.floor(chr.age / 10);\n * }), _.values);\n * // => [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 42]]\n */\n var sortByAll = restParam(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var guard = iteratees[2];\n if (guard && isIterateeCall(iteratees[0], iteratees[1], guard)) {\n iteratees.length = 1;\n }\n return baseSortByOrder(collection, baseFlatten(iteratees), []);\n });\n\n /**\n * This method is like `_.sortByAll` except that it allows specifying the\n * sort orders of the iteratees to sort by. If `orders` is unspecified, all\n * values are sorted in ascending order. Otherwise, a value is sorted in\n * ascending order if its corresponding order is \"asc\", and descending if \"desc\".\n *\n * If a property name is provided for an iteratee the created `_.property`\n * style callback returns the property value of the given element.\n *\n * If an object is provided for an iteratee the created `_.matches` style\n * callback returns `true` for elements that have the properties of the given\n * object, else `false`.\n *\n * @static\n * @memberOf _\n * @category Collection\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {boolean[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as a callback for functions like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 42 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // sort by `user` in ascending order and by `age` in descending order\n * _.map(_.sortByOrder(users, ['user', 'age'], ['asc', 'desc']), _.values);\n * // => [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 42]]\n */\n function sortByOrder(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (guard && isIterateeCall(iteratees, orders, guard)) {\n orders = undefined;\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseSortByOrder(collection, iteratees, orders);\n }\n\n /**\n * Performs a deep comparison between each element in `collection` and the\n * source object, returning an array of all elements that have equivalent\n * property values.\n *\n * **Note:** This method supports comparing arrays, booleans, `Date` objects,\n * numbers, `Object` objects, regexes, and strings. Objects are compared by\n * their own, not inherited, enumerable properties. For comparing a single\n * own or inherited property value see `_.matchesProperty`.\n *\n * @static\n * @memberOf _\n * @category Collection\n * @param {Array|Object|string} collection The collection to search.\n * @param {Object} source The object of property values to match.\n * @returns {Array} Returns the new filtered array.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false, 'pets': ['hoppy'] },\n * { 'user': 'fred', 'age': 40, 'active': true, 'pets': ['baby puss', 'dino'] }\n * ];\n *\n * _.pluck(_.where(users, { 'age': 36, 'active': false }), 'user');\n * // => ['barney']\n *\n * _.pluck(_.where(users, { 'pets': ['dino'] }), 'user');\n * // => ['fred']\n */\n function where(collection, source) {\n return filter(collection, baseMatches(source));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Gets the number of milliseconds that have elapsed since the Unix epoch\n * (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @category Date\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => logs the number of milliseconds it took for the deferred function to be invoked\n */\n var now = nativeNow || function() {\n return new Date().getTime();\n };\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The opposite of `_.before`; this method creates a function that invokes\n * `func` once it is called `n` or more times.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {number} n The number of calls before `func` is invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var saves = ['profile', 'settings'];\n *\n * var done = _.after(saves.length, function() {\n * console.log('done saving!');\n * });\n *\n * _.forEach(saves, function(type) {\n * asyncSave({ 'type': type, 'complete': done });\n * });\n * // => logs 'done saving!' after the two async saves have completed\n */\n function after(n, func) {\n if (typeof func != 'function') {\n if (typeof n == 'function') {\n var temp = n;\n n = func;\n func = temp;\n } else {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n }\n n = nativeIsFinite(n = +n) ? n : 0;\n return function() {\n if (--n < 1) {\n return func.apply(this, arguments);\n }\n };\n }\n\n /**\n * Creates a function that accepts up to `n` arguments ignoring any\n * additional arguments.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.\n * @returns {Function} Returns the new function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\n function ary(func, n, guard) {\n if (guard && isIterateeCall(func, n, guard)) {\n n = undefined;\n }\n n = (func && n == null) ? func.length : nativeMax(+n || 0, 0);\n return createWrapper(func, ARY_FLAG, undefined, undefined, undefined, undefined, n);\n }\n\n /**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it is called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery('#add').on('click', _.before(5, addContactToList));\n * // => allows adding up to 4 contacts to the list\n */\n function before(n, func) {\n var result;\n if (typeof func != 'function') {\n if (typeof n == 'function') {\n var temp = n;\n n = func;\n func = temp;\n } else {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n }\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and prepends any additional `_.bind` arguments to those provided to the\n * bound function.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind` this method does not set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var greet = function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * };\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // using placeholders\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = restParam(function(func, thisArg, partials) {\n var bitmask = BIND_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, bind.placeholder);\n bitmask |= PARTIAL_FLAG;\n }\n return createWrapper(func, bitmask, thisArg, partials, holders);\n });\n\n /**\n * Binds methods of an object to the object itself, overwriting the existing\n * method. Method names may be specified as individual arguments or as arrays\n * of method names. If no method names are provided all enumerable function\n * properties, own and inherited, of `object` are bound.\n *\n * **Note:** This method does not set the \"length\" property of bound functions.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Object} object The object to bind and assign the bound methods to.\n * @param {...(string|string[])} [methodNames] The object method names to bind,\n * specified as individual method names or arrays of method names.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var view = {\n * 'label': 'docs',\n * 'onClick': function() {\n * console.log('clicked ' + this.label);\n * }\n * };\n *\n * _.bindAll(view);\n * jQuery('#docs').on('click', view.onClick);\n * // => logs 'clicked docs' when the element is clicked\n */\n var bindAll = restParam(function(object, methodNames) {\n methodNames = methodNames.length ? baseFlatten(methodNames) : functions(object);\n\n var index = -1,\n length = methodNames.length;\n\n while (++index < length) {\n var key = methodNames[index];\n object[key] = createWrapper(object[key], BIND_FLAG, object);\n }\n return object;\n });\n\n /**\n * Creates a function that invokes the method at `object[key]` and prepends\n * any additional `_.bindKey` arguments to those provided to the bound function.\n *\n * This method differs from `_.bind` by allowing bound functions to reference\n * methods that may be redefined or don't yet exist.\n * See [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n * for more details.\n *\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Object} object The object the method belongs to.\n * @param {string} key The key of the method.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var object = {\n * 'user': 'fred',\n * 'greet': function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n * };\n *\n * var bound = _.bindKey(object, 'greet', 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * object.greet = function(greeting, punctuation) {\n * return greeting + 'ya ' + this.user + punctuation;\n * };\n *\n * bound('!');\n * // => 'hiya fred!'\n *\n * // using placeholders\n * var bound = _.bindKey(object, 'greet', _, '!');\n * bound('hi');\n * // => 'hiya fred!'\n */\n var bindKey = restParam(function(object, key, partials) {\n var bitmask = BIND_FLAG | BIND_KEY_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, bindKey.placeholder);\n bitmask |= PARTIAL_FLAG;\n }\n return createWrapper(key, bitmask, object, partials, holders);\n });\n\n /**\n * Creates a function that accepts one or more arguments of `func` that when\n * called either invokes `func` returning its result, if all `func` arguments\n * have been provided, or returns a function that accepts one or more of the\n * remaining `func` arguments, and so on. The arity of `func` may be specified\n * if `func.length` is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method does not set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // using placeholders\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\n var curry = createCurry(CURRY_FLAG);\n\n /**\n * This method is like `_.curry` except that arguments are applied to `func`\n * in the manner of `_.partialRight` instead of `_.partial`.\n *\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for provided arguments.\n *\n * **Note:** This method does not set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curryRight(abc);\n *\n * curried(3)(2)(1);\n * // => [1, 2, 3]\n *\n * curried(2, 3)(1);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // using placeholders\n * curried(3)(1, _)(2);\n * // => [1, 2, 3]\n */\n var curryRight = createCurry(CURRY_RIGHT_FLAG);\n\n /**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed invocations. Provide an options object to indicate that `func`\n * should be invoked on the leading and/or trailing edge of the `wait` timeout.\n * Subsequent calls to the debounced function return the result of the last\n * `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is invoked\n * on the trailing edge of the timeout only if the the debounced function is\n * invoked more than once during the `wait` timeout.\n *\n * See [David Corbacho's article](http://drupalmotion.com/article/debounce-and-throttle-visual-explanation)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options] The options object.\n * @param {boolean} [options.leading=false] Specify invoking on the leading\n * edge of the timeout.\n * @param {number} [options.maxWait] The maximum time `func` is allowed to be\n * delayed before it is invoked.\n * @param {boolean} [options.trailing=true] Specify invoking on the trailing\n * edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // avoid costly calculations while the window size is in flux\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // invoke `sendMail` when the click event is fired, debouncing subsequent calls\n * jQuery('#postbox').on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // ensure `batchLog` is invoked once after 1 second of debounced calls\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', _.debounce(batchLog, 250, {\n * 'maxWait': 1000\n * }));\n *\n * // cancel a debounced call\n * var todoChanges = _.debounce(batchLog, 1000);\n * Object.observe(models.todo, todoChanges);\n *\n * Object.observe(models, function(changes) {\n * if (_.find(changes, { 'user': 'todo', 'type': 'delete'})) {\n * todoChanges.cancel();\n * }\n * }, ['delete']);\n *\n * // ...at some point `models.todo` is changed\n * models.todo.completed = true;\n *\n * // ...before 1 second has passed `models.todo` is deleted\n * // which cancels the debounced `todoChanges` call\n * delete models.todo;\n */\n function debounce(func, wait, options) {\n var args,\n maxTimeoutId,\n result,\n stamp,\n thisArg,\n timeoutId,\n trailingCall,\n lastCalled = 0,\n maxWait = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = wait < 0 ? 0 : (+wait || 0);\n if (options === true) {\n var leading = true;\n trailing = false;\n } else if (isObject(options)) {\n leading = !!options.leading;\n maxWait = 'maxWait' in options && nativeMax(+options.maxWait || 0, wait);\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function cancel() {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n if (maxTimeoutId) {\n clearTimeout(maxTimeoutId);\n }\n lastCalled = 0;\n maxTimeoutId = timeoutId = trailingCall = undefined;\n }\n\n function complete(isCalled, id) {\n if (id) {\n clearTimeout(id);\n }\n maxTimeoutId = timeoutId = trailingCall = undefined;\n if (isCalled) {\n lastCalled = now();\n result = func.apply(thisArg, args);\n if (!timeoutId && !maxTimeoutId) {\n args = thisArg = undefined;\n }\n }\n }\n\n function delayed() {\n var remaining = wait - (now() - stamp);\n if (remaining <= 0 || remaining > wait) {\n complete(trailingCall, maxTimeoutId);\n } else {\n timeoutId = setTimeout(delayed, remaining);\n }\n }\n\n function maxDelayed() {\n complete(trailing, timeoutId);\n }\n\n function debounced() {\n args = arguments;\n stamp = now();\n thisArg = this;\n trailingCall = trailing && (timeoutId || !leading);\n\n if (maxWait === false) {\n var leadingCall = leading && !timeoutId;\n } else {\n if (!maxTimeoutId && !leading) {\n lastCalled = stamp;\n }\n var remaining = maxWait - (stamp - lastCalled),\n isCalled = remaining <= 0 || remaining > maxWait;\n\n if (isCalled) {\n if (maxTimeoutId) {\n maxTimeoutId = clearTimeout(maxTimeoutId);\n }\n lastCalled = stamp;\n result = func.apply(thisArg, args);\n }\n else if (!maxTimeoutId) {\n maxTimeoutId = setTimeout(maxDelayed, remaining);\n }\n }\n if (isCalled && timeoutId) {\n timeoutId = clearTimeout(timeoutId);\n }\n else if (!timeoutId && wait !== maxWait) {\n timeoutId = setTimeout(delayed, wait);\n }\n if (leadingCall) {\n isCalled = true;\n result = func.apply(thisArg, args);\n }\n if (isCalled && !timeoutId && !maxTimeoutId) {\n args = thisArg = undefined;\n }\n return result;\n }\n debounced.cancel = cancel;\n return debounced;\n }\n\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it is invoked.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke the function with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // logs 'deferred' after one or more milliseconds\n */\n var defer = restParam(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it is invoked.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke the function with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => logs 'later' after one second\n */\n var delay = restParam(function(func, wait, args) {\n return baseDelay(func, wait, args);\n });\n\n /**\n * Creates a function that returns the result of invoking the provided\n * functions with the `this` binding of the created function, where each\n * successive invocation is supplied the return value of the previous.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {...Function} [funcs] Functions to invoke.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var addSquare = _.flow(_.add, square);\n * addSquare(1, 2);\n * // => 9\n */\n var flow = createFlow();\n\n /**\n * This method is like `_.flow` except that it creates a function that\n * invokes the provided functions from right to left.\n *\n * @static\n * @memberOf _\n * @alias backflow, compose\n * @category Function\n * @param {...Function} [funcs] Functions to invoke.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var addSquare = _.flowRight(square, _.add);\n * addSquare(1, 2);\n * // => 9\n */\n var flowRight = createFlow(true);\n\n /**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is coerced to a string and used as the\n * cache key. The `func` is invoked with the `this` binding of the memoized\n * function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the [`Map`](http://ecma-international.org/ecma-262/6.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoizing function.\n * @example\n *\n * var upperCase = _.memoize(function(string) {\n * return string.toUpperCase();\n * });\n *\n * upperCase('fred');\n * // => 'FRED'\n *\n * // modifying the result cache\n * upperCase.cache.set('fred', 'BARNEY');\n * upperCase('fred');\n * // => 'BARNEY'\n *\n * // replacing `_.memoize.Cache`\n * var object = { 'user': 'fred' };\n * var other = { 'user': 'barney' };\n * var identity = _.memoize(_.identity);\n *\n * identity(object);\n * // => { 'user': 'fred' }\n * identity(other);\n * // => { 'user': 'fred' }\n *\n * _.memoize.Cache = WeakMap;\n * var identity = _.memoize(_.identity);\n *\n * identity(object);\n * // => { 'user': 'fred' }\n * identity(other);\n * // => { 'user': 'barney' }\n */\n function memoize(func, resolver) {\n if (typeof func != 'function' || (resolver && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result);\n return result;\n };\n memoized.cache = new memoize.Cache;\n return memoized;\n }\n\n /**\n * Creates a function that runs each argument through a corresponding\n * transform function.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to wrap.\n * @param {...(Function|Function[])} [transforms] The functions to transform\n * arguments, specified as individual functions or arrays of functions.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function doubled(n) {\n * return n * 2;\n * }\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var modded = _.modArgs(function(x, y) {\n * return [x, y];\n * }, square, doubled);\n *\n * modded(1, 2);\n * // => [1, 4]\n *\n * modded(5, 10);\n * // => [25, 20]\n */\n var modArgs = restParam(function(func, transforms) {\n transforms = baseFlatten(transforms);\n if (typeof func != 'function' || !arrayEvery(transforms, baseIsFunction)) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = transforms.length;\n return restParam(function(args) {\n var index = nativeMin(args.length, length);\n while (index--) {\n args[index] = transforms[index](args[index]);\n }\n return func.apply(this, args);\n });\n });\n\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n return !predicate.apply(this, arguments);\n };\n }\n\n /**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first call. The `func` is invoked\n * with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // `initialize` invokes `createApplication` once\n */\n function once(func) {\n return before(2, func);\n }\n\n /**\n * Creates a function that invokes `func` with `partial` arguments prepended\n * to those provided to the new function. This method is like `_.bind` except\n * it does **not** alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method does not set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * var greet = function(greeting, name) {\n * return greeting + ' ' + name;\n * };\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // using placeholders\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\n var partial = createPartial(PARTIAL_FLAG);\n\n /**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to those provided to the new function.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method does not set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * var greet = function(greeting, name) {\n * return greeting + ' ' + name;\n * };\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // using placeholders\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\n var partialRight = createPartial(PARTIAL_RIGHT_FLAG);\n\n /**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified indexes where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes,\n * specified as individual indexes or arrays of indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, 2, 0, 1);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n *\n * var map = _.rearg(_.map, [1, 0]);\n * map(function(n) {\n * return n * 3;\n * }, [1, 2, 3]);\n * // => [3, 6, 9]\n */\n var rearg = restParam(function(func, indexes) {\n return createWrapper(func, REARG_FLAG, undefined, undefined, undefined, baseFlatten(indexes));\n });\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as an array.\n *\n * **Note:** This method is based on the [rest parameter](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/rest_parameters).\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.restParam(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\n function restParam(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = nativeMax(start === undefined ? (func.length - 1) : (+start || 0), 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n rest = Array(length);\n\n while (++index < length) {\n rest[index] = args[start + index];\n }\n switch (start) {\n case 0: return func.call(this, rest);\n case 1: return func.call(this, args[0], rest);\n case 2: return func.call(this, args[0], args[1], rest);\n }\n var otherArgs = Array(start + 1);\n index = -1;\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = rest;\n return func.apply(this, otherArgs);\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the created\n * function and an array of arguments much like [`Function#apply`](https://es5.github.io/#x15.3.4.3).\n *\n * **Note:** This method is based on the [spread operator](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_operator).\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to spread arguments over.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.spread(function(who, what) {\n * return who + ' says ' + what;\n * });\n *\n * say(['fred', 'hello']);\n * // => 'fred says hello'\n *\n * // with a Promise\n * var numbers = Promise.all([\n * Promise.resolve(40),\n * Promise.resolve(36)\n * ]);\n *\n * numbers.then(_.spread(function(x, y) {\n * return x + y;\n * }));\n * // => a Promise of 76\n */\n function spread(func) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function(array) {\n return func.apply(this, array);\n };\n }\n\n /**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed invocations. Provide an options object to indicate\n * that `func` should be invoked on the leading and/or trailing edge of the\n * `wait` timeout. Subsequent calls to the throttled function return the\n * result of the last `func` call.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is invoked\n * on the trailing edge of the timeout only if the the throttled function is\n * invoked more than once during the `wait` timeout.\n *\n * See [David Corbacho's article](http://drupalmotion.com/article/debounce-and-throttle-visual-explanation)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options] The options object.\n * @param {boolean} [options.leading=true] Specify invoking on the leading\n * edge of the timeout.\n * @param {boolean} [options.trailing=true] Specify invoking on the trailing\n * edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // avoid excessively updating the position while scrolling\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // invoke `renewToken` when the click event is fired, but not more than once every 5 minutes\n * jQuery('.interactive').on('click', _.throttle(renewToken, 300000, {\n * 'trailing': false\n * }));\n *\n * // cancel a trailing throttled call\n * jQuery(window).on('popstate', throttled.cancel);\n */\n function throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (options === false) {\n leading = false;\n } else if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, { 'leading': leading, 'maxWait': +wait, 'trailing': trailing });\n }\n\n /**\n * Creates a function that provides `value` to the wrapper function as its\n * first argument. Any additional arguments provided to the function are\n * appended to those provided to the wrapper function. The wrapper is invoked\n * with the `this` binding of the created function.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {*} value The value to wrap.\n * @param {Function} wrapper The wrapper function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var p = _.wrap(_.escape, function(func, text) {\n * return '

' + func(text) + '

';\n * });\n *\n * p('fred, barney, & pebbles');\n * // => '

fred, barney, & pebbles

'\n */\n function wrap(value, wrapper) {\n wrapper = wrapper == null ? identity : wrapper;\n return createWrapper(wrapper, PARTIAL_FLAG, undefined, [value], []);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a clone of `value`. If `isDeep` is `true` nested objects are cloned,\n * otherwise they are assigned by reference. If `customizer` is provided it is\n * invoked to produce the cloned values. If `customizer` returns `undefined`\n * cloning is handled by the method instead. The `customizer` is bound to\n * `thisArg` and invoked with two argument; (value [, index|key, object]).\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](http://www.w3.org/TR/html5/infrastructure.html#internal-structured-cloning-algorithm).\n * The enumerable properties of `arguments` objects and objects created by\n * constructors other than `Object` are cloned to plain `Object` objects. An\n * empty object is returned for uncloneable values such as functions, DOM nodes,\n * Maps, Sets, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @param {Function} [customizer] The function to customize cloning values.\n * @param {*} [thisArg] The `this` binding of `customizer`.\n * @returns {*} Returns the cloned value.\n * @example\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * var shallow = _.clone(users);\n * shallow[0] === users[0];\n * // => true\n *\n * var deep = _.clone(users, true);\n * deep[0] === users[0];\n * // => false\n *\n * // using a customizer callback\n * var el = _.clone(document.body, function(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(false);\n * }\n * });\n *\n * el === document.body\n * // => false\n * el.nodeName\n * // => BODY\n * el.childNodes.length;\n * // => 0\n */\n function clone(value, isDeep, customizer, thisArg) {\n if (isDeep && typeof isDeep != 'boolean' && isIterateeCall(value, isDeep, customizer)) {\n isDeep = false;\n }\n else if (typeof isDeep == 'function') {\n thisArg = customizer;\n customizer = isDeep;\n isDeep = false;\n }\n return typeof customizer == 'function'\n ? baseClone(value, isDeep, bindCallback(customizer, thisArg, 1))\n : baseClone(value, isDeep);\n }\n\n /**\n * Creates a deep clone of `value`. If `customizer` is provided it is invoked\n * to produce the cloned values. If `customizer` returns `undefined` cloning\n * is handled by the method instead. The `customizer` is bound to `thisArg`\n * and invoked with two argument; (value [, index|key, object]).\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](http://www.w3.org/TR/html5/infrastructure.html#internal-structured-cloning-algorithm).\n * The enumerable properties of `arguments` objects and objects created by\n * constructors other than `Object` are cloned to plain `Object` objects. An\n * empty object is returned for uncloneable values such as functions, DOM nodes,\n * Maps, Sets, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to deep clone.\n * @param {Function} [customizer] The function to customize cloning values.\n * @param {*} [thisArg] The `this` binding of `customizer`.\n * @returns {*} Returns the deep cloned value.\n * @example\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * var deep = _.cloneDeep(users);\n * deep[0] === users[0];\n * // => false\n *\n * // using a customizer callback\n * var el = _.cloneDeep(document.body, function(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * });\n *\n * el === document.body\n * // => false\n * el.nodeName\n * // => BODY\n * el.childNodes.length;\n * // => 20\n */\n function cloneDeep(value, customizer, thisArg) {\n return typeof customizer == 'function'\n ? baseClone(value, true, bindCallback(customizer, thisArg, 1))\n : baseClone(value, true);\n }\n\n /**\n * Checks if `value` is greater than `other`.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`, else `false`.\n * @example\n *\n * _.gt(3, 1);\n * // => true\n *\n * _.gt(3, 3);\n * // => false\n *\n * _.gt(1, 3);\n * // => false\n */\n function gt(value, other) {\n return value > other;\n }\n\n /**\n * Checks if `value` is greater than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than or equal to `other`, else `false`.\n * @example\n *\n * _.gte(3, 1);\n * // => true\n *\n * _.gte(3, 3);\n * // => true\n *\n * _.gte(1, 3);\n * // => false\n */\n function gte(value, other) {\n return value >= other;\n }\n\n /**\n * Checks if `value` is classified as an `arguments` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n function isArguments(value) {\n return isObjectLike(value) && isArrayLike(value) &&\n hasOwnProperty.call(value, 'callee') && !propertyIsEnumerable.call(value, 'callee');\n }\n\n /**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(function() { return arguments; }());\n * // => false\n */\n var isArray = nativeIsArray || function(value) {\n return isObjectLike(value) && isLength(value.length) && objToString.call(value) == arrayTag;\n };\n\n /**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n function isBoolean(value) {\n return value === true || value === false || (isObjectLike(value) && objToString.call(value) == boolTag);\n }\n\n /**\n * Checks if `value` is classified as a `Date` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n function isDate(value) {\n return isObjectLike(value) && objToString.call(value) == dateTag;\n }\n\n /**\n * Checks if `value` is a DOM element.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('');\n * // => false\n */\n function isElement(value) {\n return !!value && value.nodeType === 1 && isObjectLike(value) && !isPlainObject(value);\n }\n\n /**\n * Checks if `value` is empty. A value is considered empty unless it is an\n * `arguments` object, array, string, or jQuery-like collection with a length\n * greater than `0` or an object with own enumerable properties.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {Array|Object|string} value The value to inspect.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n function isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) && (isArray(value) || isString(value) || isArguments(value) ||\n (isObjectLike(value) && isFunction(value.splice)))) {\n return !value.length;\n }\n return !keys(value).length;\n }\n\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent. If `customizer` is provided it is invoked to compare values.\n * If `customizer` returns `undefined` comparisons are handled by the method\n * instead. The `customizer` is bound to `thisArg` and invoked with three\n * arguments: (value, other [, index|key]).\n *\n * **Note:** This method supports comparing arrays, booleans, `Date` objects,\n * numbers, `Object` objects, regexes, and strings. Objects are compared by\n * their own, not inherited, enumerable properties. Functions and DOM nodes\n * are **not** supported. Provide a customizer function to extend support\n * for comparing other values.\n *\n * @static\n * @memberOf _\n * @alias eq\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize value comparisons.\n * @param {*} [thisArg] The `this` binding of `customizer`.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'user': 'fred' };\n * var other = { 'user': 'fred' };\n *\n * object == other;\n * // => false\n *\n * _.isEqual(object, other);\n * // => true\n *\n * // using a customizer callback\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqual(array, other, function(value, other) {\n * if (_.every([value, other], RegExp.prototype.test, /^h(?:i|ello)$/)) {\n * return true;\n * }\n * });\n * // => true\n */\n function isEqual(value, other, customizer, thisArg) {\n customizer = typeof customizer == 'function' ? bindCallback(customizer, thisArg, 3) : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, customizer) : !!result;\n }\n\n /**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\n function isError(value) {\n return isObjectLike(value) && typeof value.message == 'string' && objToString.call(value) == errorTag;\n }\n\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on [`Number.isFinite`](http://ecma-international.org/ecma-262/6.0/#sec-number.isfinite).\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n * @example\n *\n * _.isFinite(10);\n * // => true\n *\n * _.isFinite('10');\n * // => false\n *\n * _.isFinite(true);\n * // => false\n *\n * _.isFinite(Object(10));\n * // => false\n *\n * _.isFinite(Infinity);\n * // => false\n */\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(value);\n }\n\n /**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n function isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in older versions of Chrome and Safari which return 'function' for regexes\n // and Safari 8 equivalents which return 'object' for typed array constructors.\n return isObject(value) && objToString.call(value) == funcTag;\n }\n\n /**\n * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.\n * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(1);\n * // => false\n */\n function isObject(value) {\n // Avoid a V8 JIT bug in Chrome 19-20.\n // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n }\n\n /**\n * Performs a deep comparison between `object` and `source` to determine if\n * `object` contains equivalent property values. If `customizer` is provided\n * it is invoked to compare values. If `customizer` returns `undefined`\n * comparisons are handled by the method instead. The `customizer` is bound\n * to `thisArg` and invoked with three arguments: (value, other, index|key).\n *\n * **Note:** This method supports comparing properties of arrays, booleans,\n * `Date` objects, numbers, `Object` objects, regexes, and strings. Functions\n * and DOM nodes are **not** supported. Provide a customizer function to extend\n * support for comparing other values.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Function} [customizer] The function to customize value comparisons.\n * @param {*} [thisArg] The `this` binding of `customizer`.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'user': 'fred', 'age': 40 };\n *\n * _.isMatch(object, { 'age': 40 });\n * // => true\n *\n * _.isMatch(object, { 'age': 36 });\n * // => false\n *\n * // using a customizer callback\n * var object = { 'greeting': 'hello' };\n * var source = { 'greeting': 'hi' };\n *\n * _.isMatch(object, source, function(value, other) {\n * return _.every([value, other], RegExp.prototype.test, /^h(?:i|ello)$/) || undefined;\n * });\n * // => true\n */\n function isMatch(object, source, customizer, thisArg) {\n customizer = typeof customizer == 'function' ? bindCallback(customizer, thisArg, 3) : undefined;\n return baseIsMatch(object, getMatchData(source), customizer);\n }\n\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is not the same as [`isNaN`](https://es5.github.io/#x15.1.2.4)\n * which returns `true` for `undefined` and other non-numeric values.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some host objects in IE.\n return isNumber(value) && value != +value;\n }\n\n /**\n * Checks if `value` is a native function.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function, else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\n function isNative(value) {\n if (value == null) {\n return false;\n }\n if (isFunction(value)) {\n return reIsNative.test(fnToString.call(value));\n }\n return isObjectLike(value) && reIsHostCtor.test(value);\n }\n\n /**\n * Checks if `value` is `null`.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\n function isNull(value) {\n return value === null;\n }\n\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are classified\n * as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isNumber(8.4);\n * // => true\n *\n * _.isNumber(NaN);\n * // => true\n *\n * _.isNumber('8.4');\n * // => false\n */\n function isNumber(value) {\n return typeof value == 'number' || (isObjectLike(value) && objToString.call(value) == numberTag);\n }\n\n /**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * **Note:** This method assumes objects created by the `Object` constructor\n * have no inherited enumerable properties.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n function isPlainObject(value) {\n var Ctor;\n\n // Exit early for non `Object` objects.\n if (!(isObjectLike(value) && objToString.call(value) == objectTag && !isArguments(value)) ||\n (!hasOwnProperty.call(value, 'constructor') && (Ctor = value.constructor, typeof Ctor == 'function' && !(Ctor instanceof Ctor)))) {\n return false;\n }\n // IE < 9 iterates inherited properties before own properties. If the first\n // iterated property is an object's own property then there are no inherited\n // enumerable properties.\n var result;\n // In most environments an object's own properties are iterated before\n // its inherited properties. If the last iterated property is an object's\n // own property then there are no inherited enumerable properties.\n baseForIn(value, function(subValue, key) {\n result = key;\n });\n return result === undefined || hasOwnProperty.call(value, result);\n }\n\n /**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n function isRegExp(value) {\n return isObject(value) && objToString.call(value) == regexpTag;\n }\n\n /**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n function isString(value) {\n return typeof value == 'string' || (isObjectLike(value) && objToString.call(value) == stringTag);\n }\n\n /**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n function isTypedArray(value) {\n return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[objToString.call(value)];\n }\n\n /**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\n function isUndefined(value) {\n return value === undefined;\n }\n\n /**\n * Checks if `value` is less than `other`.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`, else `false`.\n * @example\n *\n * _.lt(1, 3);\n * // => true\n *\n * _.lt(3, 3);\n * // => false\n *\n * _.lt(3, 1);\n * // => false\n */\n function lt(value, other) {\n return value < other;\n }\n\n /**\n * Checks if `value` is less than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than or equal to `other`, else `false`.\n * @example\n *\n * _.lte(1, 3);\n * // => true\n *\n * _.lte(3, 3);\n * // => true\n *\n * _.lte(3, 1);\n * // => false\n */\n function lte(value, other) {\n return value <= other;\n }\n\n /**\n * Converts `value` to an array.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * (function() {\n * return _.toArray(arguments).slice(1);\n * }(1, 2, 3));\n * // => [2, 3]\n */\n function toArray(value) {\n var length = value ? getLength(value) : 0;\n if (!isLength(length)) {\n return values(value);\n }\n if (!length) {\n return [];\n }\n return arrayCopy(value);\n }\n\n /**\n * Converts `value` to a plain object flattening inherited enumerable\n * properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\n function toPlainObject(value) {\n return baseCopy(value, keysIn(value));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Recursively merges own enumerable properties of the source object(s), that\n * don't resolve to `undefined` into the destination object. Subsequent sources\n * overwrite property assignments of previous sources. If `customizer` is\n * provided it is invoked to produce the merged values of the destination and\n * source properties. If `customizer` returns `undefined` merging is handled\n * by the method instead. The `customizer` is bound to `thisArg` and invoked\n * with five arguments: (objectValue, sourceValue, key, object, source).\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {*} [thisArg] The `this` binding of `customizer`.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var users = {\n * 'data': [{ 'user': 'barney' }, { 'user': 'fred' }]\n * };\n *\n * var ages = {\n * 'data': [{ 'age': 36 }, { 'age': 40 }]\n * };\n *\n * _.merge(users, ages);\n * // => { 'data': [{ 'user': 'barney', 'age': 36 }, { 'user': 'fred', 'age': 40 }] }\n *\n * // using a customizer callback\n * var object = {\n * 'fruits': ['apple'],\n * 'vegetables': ['beet']\n * };\n *\n * var other = {\n * 'fruits': ['banana'],\n * 'vegetables': ['carrot']\n * };\n *\n * _.merge(object, other, function(a, b) {\n * if (_.isArray(a)) {\n * return a.concat(b);\n * }\n * });\n * // => { 'fruits': ['apple', 'banana'], 'vegetables': ['beet', 'carrot'] }\n */\n var merge = createAssigner(baseMerge);\n\n /**\n * Assigns own enumerable properties of source object(s) to the destination\n * object. Subsequent sources overwrite property assignments of previous sources.\n * If `customizer` is provided it is invoked to produce the assigned values.\n * The `customizer` is bound to `thisArg` and invoked with five arguments:\n * (objectValue, sourceValue, key, object, source).\n *\n * **Note:** This method mutates `object` and is based on\n * [`Object.assign`](http://ecma-international.org/ecma-262/6.0/#sec-object.assign).\n *\n * @static\n * @memberOf _\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {*} [thisArg] The `this` binding of `customizer`.\n * @returns {Object} Returns `object`.\n * @example\n *\n * _.assign({ 'user': 'barney' }, { 'age': 40 }, { 'user': 'fred' });\n * // => { 'user': 'fred', 'age': 40 }\n *\n * // using a customizer callback\n * var defaults = _.partialRight(_.assign, function(value, other) {\n * return _.isUndefined(value) ? other : value;\n * });\n *\n * defaults({ 'user': 'barney' }, { 'age': 36 }, { 'user': 'fred' });\n * // => { 'user': 'barney', 'age': 36 }\n */\n var assign = createAssigner(function(object, source, customizer) {\n return customizer\n ? assignWith(object, source, customizer)\n : baseAssign(object, source);\n });\n\n /**\n * Creates an object that inherits from the given `prototype` object. If a\n * `properties` object is provided its own enumerable properties are assigned\n * to the created object.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n function create(prototype, properties, guard) {\n var result = baseCreate(prototype);\n if (guard && isIterateeCall(prototype, properties, guard)) {\n properties = undefined;\n }\n return properties ? baseAssign(result, properties) : result;\n }\n\n /**\n * Assigns own enumerable properties of source object(s) to the destination\n * object for all destination properties that resolve to `undefined`. Once a\n * property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * _.defaults({ 'user': 'barney' }, { 'age': 36 }, { 'user': 'fred' });\n * // => { 'user': 'barney', 'age': 36 }\n */\n var defaults = createDefaults(assign, assignDefaults);\n\n /**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * _.defaultsDeep({ 'user': { 'name': 'barney' } }, { 'user': { 'name': 'fred', 'age': 36 } });\n * // => { 'user': { 'name': 'barney', 'age': 36 } }\n *\n */\n var defaultsDeep = createDefaults(merge, mergeDefaults);\n\n /**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * If a property name is provided for `predicate` the created `_.property`\n * style callback returns the property value of the given element.\n *\n * If a value is also provided for `thisArg` the created `_.matchesProperty`\n * style callback returns `true` for elements that have a matching property\n * value, else `false`.\n *\n * If an object is provided for `predicate` the created `_.matches` style\n * callback returns `true` for elements that have the properties of the given\n * object, else `false`.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to search.\n * @param {Function|Object|string} [predicate=_.identity] The function invoked\n * per iteration.\n * @param {*} [thisArg] The `this` binding of `predicate`.\n * @returns {string|undefined} Returns the key of the matched element, else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findKey(users, function(chr) {\n * return chr.age < 40;\n * });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // using the `_.matches` callback shorthand\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // using the `_.matchesProperty` callback shorthand\n * _.findKey(users, 'active', false);\n * // => 'fred'\n *\n * // using the `_.property` callback shorthand\n * _.findKey(users, 'active');\n * // => 'barney'\n */\n var findKey = createFindKey(baseForOwn);\n\n /**\n * This method is like `_.findKey` except that it iterates over elements of\n * a collection in the opposite order.\n *\n * If a property name is provided for `predicate` the created `_.property`\n * style callback returns the property value of the given element.\n *\n * If a value is also provided for `thisArg` the created `_.matchesProperty`\n * style callback returns `true` for elements that have a matching property\n * value, else `false`.\n *\n * If an object is provided for `predicate` the created `_.matches` style\n * callback returns `true` for elements that have the properties of the given\n * object, else `false`.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to search.\n * @param {Function|Object|string} [predicate=_.identity] The function invoked\n * per iteration.\n * @param {*} [thisArg] The `this` binding of `predicate`.\n * @returns {string|undefined} Returns the key of the matched element, else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findLastKey(users, function(chr) {\n * return chr.age < 40;\n * });\n * // => returns `pebbles` assuming `_.findKey` returns `barney`\n *\n * // using the `_.matches` callback shorthand\n * _.findLastKey(users, { 'age': 36, 'active': true });\n * // => 'barney'\n *\n * // using the `_.matchesProperty` callback shorthand\n * _.findLastKey(users, 'active', false);\n * // => 'fred'\n *\n * // using the `_.property` callback shorthand\n * _.findLastKey(users, 'active');\n * // => 'pebbles'\n */\n var findLastKey = createFindKey(baseForOwnRight);\n\n /**\n * Iterates over own and inherited enumerable properties of an object invoking\n * `iteratee` for each property. The `iteratee` is bound to `thisArg` and invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [thisArg] The `this` binding of `iteratee`.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => logs 'a', 'b', and 'c' (iteration order is not guaranteed)\n */\n var forIn = createForIn(baseFor);\n\n /**\n * This method is like `_.forIn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [thisArg] The `this` binding of `iteratee`.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forInRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => logs 'c', 'b', and 'a' assuming `_.forIn ` logs 'a', 'b', and 'c'\n */\n var forInRight = createForIn(baseForRight);\n\n /**\n * Iterates over own enumerable properties of an object invoking `iteratee`\n * for each property. The `iteratee` is bound to `thisArg` and invoked with\n * three arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [thisArg] The `this` binding of `iteratee`.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => logs 'a' and 'b' (iteration order is not guaranteed)\n */\n var forOwn = createForOwn(baseForOwn);\n\n /**\n * This method is like `_.forOwn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [thisArg] The `this` binding of `iteratee`.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwnRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => logs 'b' and 'a' assuming `_.forOwn` logs 'a' and 'b'\n */\n var forOwnRight = createForOwn(baseForOwnRight);\n\n /**\n * Creates an array of function property names from all enumerable properties,\n * own and inherited, of `object`.\n *\n * @static\n * @memberOf _\n * @alias methods\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the new array of property names.\n * @example\n *\n * _.functions(_);\n * // => ['after', 'ary', 'assign', ...]\n */\n function functions(object) {\n return baseFunctions(object, keysIn(object));\n }\n\n /**\n * Gets the property value at `path` of `object`. If the resolved value is\n * `undefined` the `defaultValue` is used in its place.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned if the resolved value is `undefined`.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\n function get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, toPath(path), path + '');\n return result === undefined ? defaultValue : result;\n }\n\n /**\n * Checks if `path` is a direct property.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` is a direct property, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': { 'c': 3 } } };\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b.c');\n * // => true\n *\n * _.has(object, ['a', 'b', 'c']);\n * // => true\n */\n function has(object, path) {\n if (object == null) {\n return false;\n }\n var result = hasOwnProperty.call(object, path);\n if (!result && !isKey(path)) {\n path = toPath(path);\n object = path.length == 1 ? object : baseGet(object, baseSlice(path, 0, -1));\n if (object == null) {\n return false;\n }\n path = last(path);\n result = hasOwnProperty.call(object, path);\n }\n return result || (isLength(object.length) && isIndex(path, object.length) &&\n (isArray(object) || isArguments(object)));\n }\n\n /**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite property\n * assignments of previous values unless `multiValue` is `true`.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to invert.\n * @param {boolean} [multiValue] Allow multiple values per key.\n * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n *\n * // with `multiValue`\n * _.invert(object, true);\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\n function invert(object, multiValue, guard) {\n if (guard && isIterateeCall(object, multiValue, guard)) {\n multiValue = undefined;\n }\n var index = -1,\n props = keys(object),\n length = props.length,\n result = {};\n\n while (++index < length) {\n var key = props[index],\n value = object[key];\n\n if (multiValue) {\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }\n else {\n result[value] = key;\n }\n }\n return result;\n }\n\n /**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/6.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n var keys = !nativeKeys ? shimKeys : function(object) {\n var Ctor = object == null ? undefined : object.constructor;\n if ((typeof Ctor == 'function' && Ctor.prototype === object) ||\n (typeof object != 'function' && isArrayLike(object))) {\n return shimKeys(object);\n }\n return isObject(object) ? nativeKeys(object) : [];\n };\n\n /**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n function keysIn(object) {\n if (object == null) {\n return [];\n }\n if (!isObject(object)) {\n object = Object(object);\n }\n var length = object.length;\n length = (length && isLength(length) &&\n (isArray(object) || isArguments(object)) && length) || 0;\n\n var Ctor = object.constructor,\n index = -1,\n isProto = typeof Ctor == 'function' && Ctor.prototype === object,\n result = Array(length),\n skipIndexes = length > 0;\n\n while (++index < length) {\n result[index] = (index + '');\n }\n for (var key in object) {\n if (!(skipIndexes && isIndex(key, length)) &&\n !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * property of `object` through `iteratee`.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function|Object|string} [iteratee=_.identity] The function invoked\n * per iteration.\n * @param {*} [thisArg] The `this` binding of `iteratee`.\n * @returns {Object} Returns the new mapped object.\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\n var mapKeys = createObjectMapper(true);\n\n /**\n * Creates an object with the same keys as `object` and values generated by\n * running each own enumerable property of `object` through `iteratee`. The\n * iteratee function is bound to `thisArg` and invoked with three arguments:\n * (value, key, object).\n *\n * If a property name is provided for `iteratee` the created `_.property`\n * style callback returns the property value of the given element.\n *\n * If a value is also provided for `thisArg` the created `_.matchesProperty`\n * style callback returns `true` for elements that have a matching property\n * value, else `false`.\n *\n * If an object is provided for `iteratee` the created `_.matches` style\n * callback returns `true` for elements that have the properties of the given\n * object, else `false`.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function|Object|string} [iteratee=_.identity] The function invoked\n * per iteration.\n * @param {*} [thisArg] The `this` binding of `iteratee`.\n * @returns {Object} Returns the new mapped object.\n * @example\n *\n * _.mapValues({ 'a': 1, 'b': 2 }, function(n) {\n * return n * 3;\n * });\n * // => { 'a': 3, 'b': 6 }\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * // using the `_.property` callback shorthand\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\n var mapValues = createObjectMapper();\n\n /**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable properties of `object` that are not omitted.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {Function|...(string|string[])} [predicate] The function invoked per\n * iteration or property names to omit, specified as individual property\n * names or arrays of property names.\n * @param {*} [thisArg] The `this` binding of `predicate`.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'user': 'fred', 'age': 40 };\n *\n * _.omit(object, 'age');\n * // => { 'user': 'fred' }\n *\n * _.omit(object, _.isNumber);\n * // => { 'user': 'fred' }\n */\n var omit = restParam(function(object, props) {\n if (object == null) {\n return {};\n }\n if (typeof props[0] != 'function') {\n var props = arrayMap(baseFlatten(props), String);\n return pickByArray(object, baseDifference(keysIn(object), props));\n }\n var predicate = bindCallback(props[0], props[1], 3);\n return pickByCallback(object, function(value, key, object) {\n return !predicate(value, key, object);\n });\n });\n\n /**\n * Creates a two dimensional array of the key-value pairs for `object`,\n * e.g. `[[key1, value1], [key2, value2]]`.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the new array of key-value pairs.\n * @example\n *\n * _.pairs({ 'barney': 36, 'fred': 40 });\n * // => [['barney', 36], ['fred', 40]] (iteration order is not guaranteed)\n */\n function pairs(object) {\n object = toObject(object);\n\n var index = -1,\n props = keys(object),\n length = props.length,\n result = Array(length);\n\n while (++index < length) {\n var key = props[index];\n result[index] = [key, object[key]];\n }\n return result;\n }\n\n /**\n * Creates an object composed of the picked `object` properties. Property\n * names may be specified as individual arguments or as arrays of property\n * names. If `predicate` is provided it is invoked for each property of `object`\n * picking the properties `predicate` returns truthy for. The predicate is\n * bound to `thisArg` and invoked with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {Function|...(string|string[])} [predicate] The function invoked per\n * iteration or property names to pick, specified as individual property\n * names or arrays of property names.\n * @param {*} [thisArg] The `this` binding of `predicate`.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'user': 'fred', 'age': 40 };\n *\n * _.pick(object, 'user');\n * // => { 'user': 'fred' }\n *\n * _.pick(object, _.isString);\n * // => { 'user': 'fred' }\n */\n var pick = restParam(function(object, props) {\n if (object == null) {\n return {};\n }\n return typeof props[0] == 'function'\n ? pickByCallback(object, bindCallback(props[0], props[1], 3))\n : pickByArray(object, baseFlatten(props));\n });\n\n /**\n * This method is like `_.get` except that if the resolved value is a function\n * it is invoked with the `this` binding of its parent object and its result\n * is returned.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned if the resolved value is `undefined`.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a.b.c', 'default');\n * // => 'default'\n *\n * _.result(object, 'a.b.c', _.constant('default'));\n * // => 'default'\n */\n function result(object, path, defaultValue) {\n var result = object == null ? undefined : object[path];\n if (result === undefined) {\n if (object != null && !isKey(path, object)) {\n path = toPath(path);\n object = path.length == 1 ? object : baseGet(object, baseSlice(path, 0, -1));\n result = object == null ? undefined : object[last(path)];\n }\n result = result === undefined ? defaultValue : result;\n }\n return isFunction(result) ? result.call(object) : result;\n }\n\n /**\n * Sets the property value of `path` on `object`. If a portion of `path`\n * does not exist it is created.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to augment.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, 'x[0].y.z', 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\n function set(object, path, value) {\n if (object == null) {\n return object;\n }\n var pathKey = (path + '');\n path = (object[pathKey] != null || isKey(path, object)) ? [pathKey] : toPath(path);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = path[index];\n if (isObject(nested)) {\n if (index == lastIndex) {\n nested[key] = value;\n } else if (nested[key] == null) {\n nested[key] = isIndex(path[index + 1]) ? [] : {};\n }\n }\n nested = nested[key];\n }\n return object;\n }\n\n /**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own enumerable\n * properties through `iteratee`, with each invocation potentially mutating\n * the `accumulator` object. The `iteratee` is bound to `thisArg` and invoked\n * with four arguments: (accumulator, value, key, object). Iteratee functions\n * may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Array|Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @param {*} [thisArg] The `this` binding of `iteratee`.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * });\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2 }, function(result, n, key) {\n * result[key] = n * 3;\n * });\n * // => { 'a': 3, 'b': 6 }\n */\n function transform(object, iteratee, accumulator, thisArg) {\n var isArr = isArray(object) || isTypedArray(object);\n iteratee = getCallback(iteratee, thisArg, 4);\n\n if (accumulator == null) {\n if (isArr || isObject(object)) {\n var Ctor = object.constructor;\n if (isArr) {\n accumulator = isArray(object) ? new Ctor : [];\n } else {\n accumulator = baseCreate(isFunction(Ctor) ? Ctor.prototype : undefined);\n }\n } else {\n accumulator = {};\n }\n }\n (isArr ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n }\n\n /**\n * Creates an array of the own enumerable property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n function values(object) {\n return baseValues(object, keys(object));\n }\n\n /**\n * Creates an array of the own and inherited enumerable property values\n * of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.valuesIn(new Foo);\n * // => [1, 2, 3] (iteration order is not guaranteed)\n */\n function valuesIn(object) {\n return baseValues(object, keysIn(object));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Checks if `n` is between `start` and up to but not including, `end`. If\n * `end` is not specified it is set to `start` with `start` then set to `0`.\n *\n * @static\n * @memberOf _\n * @category Number\n * @param {number} n The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `n` is in the range, else `false`.\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n */\n function inRange(value, start, end) {\n start = +start || 0;\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = +end || 0;\n }\n return value >= nativeMin(start, end) && value < nativeMax(start, end);\n }\n\n /**\n * Produces a random number between `min` and `max` (inclusive). If only one\n * argument is provided a number between `0` and the given number is returned.\n * If `floating` is `true`, or either `min` or `max` are floats, a floating-point\n * number is returned instead of an integer.\n *\n * @static\n * @memberOf _\n * @category Number\n * @param {number} [min=0] The minimum possible value.\n * @param {number} [max=1] The maximum possible value.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\n function random(min, max, floating) {\n if (floating && isIterateeCall(min, max, floating)) {\n max = floating = undefined;\n }\n var noMin = min == null,\n noMax = max == null;\n\n if (floating == null) {\n if (noMax && typeof min == 'boolean') {\n floating = min;\n min = 1;\n }\n else if (typeof max == 'boolean') {\n floating = max;\n noMax = true;\n }\n }\n if (noMin && noMax) {\n max = 1;\n noMax = false;\n }\n min = +min || 0;\n if (noMax) {\n max = min;\n min = 0;\n } else {\n max = +max || 0;\n }\n if (floating || min % 1 || max % 1) {\n var rand = nativeRandom();\n return nativeMin(min + (rand * (max - min + parseFloat('1e-' + ((rand + '').length - 1)))), max);\n }\n return baseRandom(min, max);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar');\n * // => 'fooBar'\n *\n * _.camelCase('__foo_bar__');\n * // => 'fooBar'\n */\n var camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? (word.charAt(0).toUpperCase() + word.slice(1)) : word);\n });\n\n /**\n * Capitalizes the first character of `string`.\n *\n * @static\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('fred');\n * // => 'Fred'\n */\n function capitalize(string) {\n string = baseToString(string);\n return string && (string.charAt(0).toUpperCase() + string.slice(1));\n }\n\n /**\n * Deburrs `string` by converting [latin-1 supplementary letters](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * to basic latin letters and removing [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\n function deburr(string) {\n string = baseToString(string);\n return string && string.replace(reLatin1, deburrLetter).replace(reComboMark, '');\n }\n\n /**\n * Checks if `string` ends with the given target string.\n *\n * @static\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to search.\n * @param {string} [target] The string to search for.\n * @param {number} [position=string.length] The position to search from.\n * @returns {boolean} Returns `true` if `string` ends with `target`, else `false`.\n * @example\n *\n * _.endsWith('abc', 'c');\n * // => true\n *\n * _.endsWith('abc', 'b');\n * // => false\n *\n * _.endsWith('abc', 'b', 2);\n * // => true\n */\n function endsWith(string, target, position) {\n string = baseToString(string);\n target = (target + '');\n\n var length = string.length;\n position = position === undefined\n ? length\n : nativeMin(position < 0 ? 0 : (+position || 0), length);\n\n position -= target.length;\n return position >= 0 && string.indexOf(target, position) == position;\n }\n\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', \"'\", and \"\\`\", in `string` to\n * their corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional characters\n * use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value.\n * See [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * Backticks are escaped because in Internet Explorer < 9, they can break out\n * of attribute values or HTML comments. See [#59](https://html5sec.org/#59),\n * [#102](https://html5sec.org/#102), [#108](https://html5sec.org/#108), and\n * [#133](https://html5sec.org/#133) of the [HTML5 Security Cheatsheet](https://html5sec.org/)\n * for more details.\n *\n * When working with HTML you should always [quote attribute values](http://wonko.com/post/html-escaping)\n * to reduce XSS vectors.\n *\n * @static\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function escape(string) {\n // Reset `lastIndex` because in IE < 9 `String#replace` does not.\n string = baseToString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n }\n\n /**\n * Escapes the `RegExp` special characters \"\\\", \"/\", \"^\", \"$\", \".\", \"|\", \"?\",\n * \"*\", \"+\", \"(\", \")\", \"[\", \"]\", \"{\" and \"}\" in `string`.\n *\n * @static\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https:\\/\\/lodash\\.com\\/\\)'\n */\n function escapeRegExp(string) {\n string = baseToString(string);\n return (string && reHasRegExpChars.test(string))\n ? string.replace(reRegExpChars, escapeRegExpChar)\n : (string || '(?:)');\n }\n\n /**\n * Converts `string` to [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__foo_bar__');\n * // => 'foo-bar'\n */\n var kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n });\n\n /**\n * Pads `string` on the left and right sides if it's shorter than `length`.\n * Padding characters are truncated if they can't be evenly divided by `length`.\n *\n * @static\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.pad('abc', 8);\n * // => ' abc '\n *\n * _.pad('abc', 8, '_-');\n * // => '_-abc_-_'\n *\n * _.pad('abc', 3);\n * // => 'abc'\n */\n function pad(string, length, chars) {\n string = baseToString(string);\n length = +length;\n\n var strLength = string.length;\n if (strLength >= length || !nativeIsFinite(length)) {\n return string;\n }\n var mid = (length - strLength) / 2,\n leftLength = nativeFloor(mid),\n rightLength = nativeCeil(mid);\n\n chars = createPadding('', rightLength, chars);\n return chars.slice(0, leftLength) + string + chars;\n }\n\n /**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padLeft('abc', 6);\n * // => ' abc'\n *\n * _.padLeft('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padLeft('abc', 3);\n * // => 'abc'\n */\n var padLeft = createPadDir();\n\n /**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padRight('abc', 6);\n * // => 'abc '\n *\n * _.padRight('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padRight('abc', 3);\n * // => 'abc'\n */\n var padRight = createPadDir(true);\n\n /**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a hexadecimal,\n * in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the [ES5 implementation](https://es5.github.io/#E)\n * of `parseInt`.\n *\n * @static\n * @memberOf _\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\n function parseInt(string, radix, guard) {\n // Firefox < 21 and Opera < 15 follow ES3 for `parseInt`.\n // Chrome fails to trim leading whitespace characters.\n // See https://code.google.com/p/v8/issues/detail?id=3109 for more details.\n if (guard ? isIterateeCall(string, radix, guard) : radix == null) {\n radix = 0;\n } else if (radix) {\n radix = +radix;\n }\n string = trim(string);\n return nativeParseInt(string, radix || (reHasHexPrefix.test(string) ? 16 : 10));\n }\n\n /**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=0] The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\n function repeat(string, n) {\n var result = '';\n string = baseToString(string);\n n = +n;\n if (n < 1 || !string || !nativeIsFinite(n)) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n string += string;\n } while (n);\n\n return result;\n }\n\n /**\n * Converts `string` to [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--foo-bar');\n * // => 'foo_bar'\n */\n var snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n });\n\n /**\n * Converts `string` to [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__foo_bar__');\n * // => 'Foo Bar'\n */\n var startCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + (word.charAt(0).toUpperCase() + word.slice(1));\n });\n\n /**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to search.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`, else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\n function startsWith(string, target, position) {\n string = baseToString(string);\n position = position == null\n ? 0\n : nativeMin(position < 0 ? 0 : (+position || 0), string.length);\n\n return string.lastIndexOf(target, position) == position;\n }\n\n /**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is provided it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options] The options object.\n * @param {RegExp} [options.escape] The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate] The \"evaluate\" delimiter.\n * @param {Object} [options.imports] An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate] The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL] The sourceURL of the template's compiled source.\n * @param {string} [options.variable] The data object variable name.\n * @param- {Object} [otherOptions] Enables the legacy `options` param signature.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // using the \"interpolate\" delimiter to create a compiled template\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // using the HTML \"escape\" delimiter to escape data property values\n * var compiled = _.template('<%- value %>');\n * compiled({ 'value': '
" + title + "
" + name + "" + value + "