Pleroma/priv/static/packs/features/hashtag_timeline-3ed7e7bf18...

1 line
259 KiB
Plaintext

{"version":3,"sources":["webpack:///features/hashtag_timeline-3ed7e7bf18fd2fc04c9e.js","webpack:///./node_modules/backoff/lib/backoff.js","webpack:///./node_modules/backoff/lib/strategy/strategy.js","webpack:///./node_modules/backoff/lib/strategy/fibonacci.js","webpack:///./app/javascript/mastodon/features/ui/containers/status_list_container.js","webpack:///./app/javascript/mastodon/components/load_more.js","webpack:///./app/javascript/mastodon/containers/status_container.js","webpack:///./app/javascript/mastodon/components/scrollable_list.js","webpack:///./app/javascript/mastodon/containers/intersection_observer_article_container.js","webpack:///./app/javascript/mastodon/components/intersection_observer_article.js","webpack:///./app/javascript/mastodon/features/ui/util/schedule_idle_task.js","webpack:///./node_modules/tiny-queue/index.js","webpack:///./app/javascript/mastodon/features/ui/util/get_rect_from_entry.js","webpack:///./app/javascript/mastodon/features/ui/util/intersection_observer_wrapper.js","webpack:///./app/javascript/mastodon/components/status_list.js","webpack:///./app/javascript/mastodon/actions/streaming.js","webpack:///./app/javascript/mastodon/stream.js","webpack:///./node_modules/websocket.js/lib/index.js","webpack:///./node_modules/backoff/index.js","webpack:///./node_modules/precond/lib/checks.js","webpack:///./node_modules/util/support/isBufferBrowser.js","webpack:///./node_modules/util/node_modules/inherits/inherits_browser.js","webpack:///./node_modules/precond/lib/errors.js","webpack:///./node_modules/backoff/lib/strategy/exponential.js","webpack:///./node_modules/backoff/lib/function_call.js","webpack:///./node_modules/util/util.js","webpack:///./app/javascript/mastodon/features/hashtag_timeline/index.js","webpack:///./node_modules/events/events.js","webpack:///./node_modules/precond/index.js"],"names":["webpackJsonp","155","module","exports","__webpack_require__","Backoff","backoffStrategy","events","EventEmitter","call","this","backoffStrategy_","maxNumberOfRetry_","backoffNumber_","backoffDelay_","timeoutID_","handlers","backoff","onBackoff_","bind","precond","inherits","prototype","failAfter","maxNumberOfRetry","checkArgument","err","checkState","emit","reset","next","setTimeout","clearTimeout","156","isDef","value","undefined","BackoffStrategy","options","initialDelay","Error","maxDelay","initialDelay_","maxDelay_","randomisationFactor","randomisationFactor_","getMaxDelay","getInitialDelay","backoffDelay","next_","randomisationMultiple","Math","random","round","reset_","157","FibonacciBackoffStrategy","nextBackoffDelay_","util","min","158","__webpack_exports__","__WEBPACK_IMPORTED_MODULE_0_lodash_debounce__","__WEBPACK_IMPORTED_MODULE_0_lodash_debounce___default","n","__WEBPACK_IMPORTED_MODULE_1_react_redux__","__WEBPACK_IMPORTED_MODULE_2__components_status_list__","__WEBPACK_IMPORTED_MODULE_3__actions_timelines__","__WEBPACK_IMPORTED_MODULE_4_immutable__","__WEBPACK_IMPORTED_MODULE_5_reselect__","__WEBPACK_IMPORTED_MODULE_6__initial_state__","makeGetStatusIds","Object","state","_ref","type","getIn","_ref2","get","columnSettings","statusIds","statuses","rawRegex","trim","regex","RegExp","e","filter","id","statusForId","showStatus","searchIndex","test","makeMapStateToProps","getStatusIds","_ref3","timelineId","isLoading","hasMore","mapDispatchToProps","dispatch","_ref4","loadMore","onScrollToBottom","leading","onScrollToTop","onScroll","260","d","LoadMore","_class","_temp","__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx__","__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default","__WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck__","__WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default","__WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn__","__WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default","__WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits__","__WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits___default","__WEBPACK_IMPORTED_MODULE_4_react__","__WEBPACK_IMPORTED_MODULE_4_react___default","__WEBPACK_IMPORTED_MODULE_5_react_intl__","_React$PureComponent","apply","arguments","render","visible","props","className","disabled","style","visibility","onClick","defaultMessage","a","PureComponent","defaultProps","261","__WEBPACK_IMPORTED_MODULE_1_react__","__WEBPACK_IMPORTED_MODULE_2_react_redux__","__WEBPACK_IMPORTED_MODULE_3__components_status__","__WEBPACK_IMPORTED_MODULE_4__selectors__","__WEBPACK_IMPORTED_MODULE_5__actions_compose__","__WEBPACK_IMPORTED_MODULE_6__actions_interactions__","__WEBPACK_IMPORTED_MODULE_7__actions_accounts__","__WEBPACK_IMPORTED_MODULE_8__actions_statuses__","__WEBPACK_IMPORTED_MODULE_9__actions_reports__","__WEBPACK_IMPORTED_MODULE_10__actions_modal__","__WEBPACK_IMPORTED_MODULE_11_react_intl__","__WEBPACK_IMPORTED_MODULE_12__initial_state__","messages","deleteConfirm","deleteMessage","blockConfirm","muteConfirm","getStatus","status","intl","onReply","router","onModalReblog","onReblog","shiftKey","onFavourite","onPin","onEmbed","url","onDelete","message","formatMessage","confirm","onConfirm","onMention","account","onOpenMedia","media","index","onOpenVideo","time","onBlock","values","name","onReport","onMute","onMuteConversation","262","ScrollableList","_temp2","__WEBPACK_IMPORTED_MODULE_4_lodash_throttle__","__WEBPACK_IMPORTED_MODULE_4_lodash_throttle___default","__WEBPACK_IMPORTED_MODULE_5_react__","__WEBPACK_IMPORTED_MODULE_5_react___default","__WEBPACK_IMPORTED_MODULE_6_react_router_scroll_4__","__WEBPACK_IMPORTED_MODULE_7_prop_types__","__WEBPACK_IMPORTED_MODULE_7_prop_types___default","__WEBPACK_IMPORTED_MODULE_8__containers_intersection_observer_article_container__","__WEBPACK_IMPORTED_MODULE_9__load_more__","__WEBPACK_IMPORTED_MODULE_10__features_ui_util_intersection_observer_wrapper__","__WEBPACK_IMPORTED_MODULE_11_immutable__","__WEBPACK_IMPORTED_MODULE_12_classnames__","__WEBPACK_IMPORTED_MODULE_12_classnames___default","__WEBPACK_IMPORTED_MODULE_13__features_ui_util_fullscreen__","_PureComponent","_this","_ret","_len","length","args","Array","_key","concat","lastMouseMove","intersectionObserverWrapper","handleScroll","node","_this$node","scrollTop","scrollHeight","clientHeight","offset","_oldScrollPosition","trailing","handleMouseMove","_lastMouseMove","Date","handleMouseLeave","onFullScreenChange","setState","fullscreen","setRef","c","handleLoadMore","preventDefault","componentDidMount","attachScrollListener","attachIntersectionObserver","componentDidUpdate","prevProps","Children","count","children","getFirstChildKey","newScrollTop","componentWillUnmount","detachScrollListener","detachIntersectionObserver","connect","root","rootMargin","disconnect","addEventListener","removeEventListener","firstChild","isArray","key","_recentlyMoved","_this2","_props","scrollKey","trackScroll","shouldUpdateScroll","prepend","emptyMessage","childrenCount","scrollableArea","createElement","ref","onMouseMove","onMouseLeave","role","map","child","listLength","saveHeightKey","context","route","location","contextTypes","object","263","__WEBPACK_IMPORTED_MODULE_0_react_redux__","__WEBPACK_IMPORTED_MODULE_1__components_intersection_observer_article__","__WEBPACK_IMPORTED_MODULE_2__actions_height_cache__","cachedHeight","onHeightChange","height","264","IntersectionObserverArticle","__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_classCallCheck__","__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_classCallCheck___default","__WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_possibleConstructorReturn__","__WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_possibleConstructorReturn___default","__WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_inherits__","__WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_inherits___default","__WEBPACK_IMPORTED_MODULE_3_react__","__WEBPACK_IMPORTED_MODULE_3_react___default","__WEBPACK_IMPORTED_MODULE_4__features_ui_util_schedule_idle_task__","__WEBPACK_IMPORTED_MODULE_5__features_ui_util_get_rect_from_entry__","__WEBPACK_IMPORTED_MODULE_6_immutable__","updateOnPropsForRendered","updateOnPropsForUnrendered","_React$Component","isHidden","handleIntersection","entry","calculateHeight","updateStateAfterIntersection","prevState","isIntersecting","hideIfNotIntersecting","_this$props","componentMounted","handleRef","shouldComponentUpdate","nextProps","nextState","isUnrendered","every","prop","observe","_props2","unobserve","_props3","_state","aria-posinset","aria-setsize","data-id","tabIndex","cloneElement","hidden","opacity","overflow","Component","265","runTasks","deadline","taskQueue","timeRemaining","shift","requestIdleCallback","runningRequestIdleCallback","scheduleIdleTask","task","push","__WEBPACK_IMPORTED_MODULE_0_tiny_queue__","__WEBPACK_IMPORTED_MODULE_0_tiny_queue___default","266","Queue","item","last","first","slice","start","end","Infinity","output","i","267","getRectFromEntry","hasBoundingRectBug","boundingRect","target","getBoundingClientRect","observerRect","boundingClientRect","top","width","bottom","left","right","268","IntersectionObserverWrapper","callbacks","observerBacklog","observer","onIntersection","entries","forEach","getAttribute","IntersectionObserver","callback","269","StatusList","__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends__","__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends___default","__WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_jsx__","__WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_jsx___default","__WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_objectWithoutProperties__","__WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_objectWithoutProperties___default","__WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_classCallCheck__","__WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_classCallCheck___default","__WEBPACK_IMPORTED_MODULE_4_babel_runtime_helpers_possibleConstructorReturn__","__WEBPACK_IMPORTED_MODULE_4_babel_runtime_helpers_possibleConstructorReturn___default","__WEBPACK_IMPORTED_MODULE_5_babel_runtime_helpers_inherits__","__WEBPACK_IMPORTED_MODULE_5_babel_runtime_helpers_inherits___default","__WEBPACK_IMPORTED_MODULE_6_react__","__WEBPACK_IMPORTED_MODULE_6_react___default","__WEBPACK_IMPORTED_MODULE_7_react_immutable_proptypes__","__WEBPACK_IMPORTED_MODULE_7_react_immutable_proptypes___default","__WEBPACK_IMPORTED_MODULE_8_prop_types__","__WEBPACK_IMPORTED_MODULE_8_prop_types___default","__WEBPACK_IMPORTED_MODULE_9__containers_status_container__","__WEBPACK_IMPORTED_MODULE_10_react_immutable_pure_component__","__WEBPACK_IMPORTED_MODULE_10_react_immutable_pure_component___default","__WEBPACK_IMPORTED_MODULE_11__scrollable_list__","_ImmutablePureCompone","handleMoveUp","elementIndex","indexOf","_selectChild","handleMoveDown","element","querySelector","focus","other","scrollableContent","size","statusId","onMoveUp","onMoveDown","propTypes","string","isRequired","list","func","bool","274","connectTimelineStream","path","pollingRefresh","getState","streamingAPIBaseURL","accessToken","locale","polling","setupPolling","setInterval","clearPolling","clearInterval","subscription","__WEBPACK_IMPORTED_MODULE_0__stream__","connected","__WEBPACK_IMPORTED_MODULE_1__timelines__","disconnected","received","data","event","JSON","parse","payload","__WEBPACK_IMPORTED_MODULE_2__notifications__","reconnected","close","refreshHomeTimelineAndNotification","connectUserStream","connectCommunityStream","connectPublicStream","connectHashtagStream","__WEBPACK_IMPORTED_MODULE_3__locales__","_getLocale","tag","275","getStream","stream","ws","__WEBPACK_IMPORTED_MODULE_0_websocket_js___default","onopen","onmessage","onclose","onreconnect","__WEBPACK_IMPORTED_MODULE_0_websocket_js__","276","_classCallCheck","instance","Constructor","TypeError","defineProperty","_createClass","defineProperties","descriptor","enumerable","configurable","writable","protoProps","staticProps","WebSocketClient","protocols","reconnectEnabled","listeners","on","onBackoffStart","onBackoffReady","onBackoffFail","open","reconnect","isReconnect","WebSocket","onCloseCallback","onerror","onErrorCallback","onMessageCallback","onOpenCallback","number","delay","code","reason","send","bufferedAmount","readyState","binaryType","set","extensions","protocol","listener","CONNECTING","OPEN","CLOSING","CLOSED","default","277","ExponentialBackoffStrategy","FunctionCall","FibonacciStrategy","ExponentialStrategy","fibonacci","exponential","fn","vargs","278","failCheck","ExceptionConstructor","callee","messageFormat","formatArgs","format","error","captureStackTrace","failArgumentCheck","errors","IllegalArgumentError","failStateCheck","IllegalStateError","typeOf","s","typeCheck","expect","checkIsDef","checkIsDefAndNotNull","checkIsString","checkIsArray","checkIsNumber","checkIsBoolean","checkIsFunction","checkIsObject","279","arg","copy","fill","readUInt8","280","create","ctor","superCtor","super_","constructor","TempCtor","281","282","factor_","DEFAULT_FACTOR","factor","283","function_","arguments_","callback_","lastResult_","numRetries_","backoff_","strategy_","failAfter_","retryPredicate_","DEFAULT_RETRY_PREDICATE_","state_","State_","PENDING","RUNNING","COMPLETED","ABORTED","isPending","isRunning","isCompleted","isAborted","setStrategy","strategy","retryIf","retryPredicate","getLastResult","getNumRetries","abort","doCallback_","backoffFactory","doCall_","handleBackoff_","isRetry","eventArgs","handleFunctionCallback_","32","global","process","inspect","obj","opts","ctx","seen","stylize","stylizeNoColor","depth","colors","isBoolean","showHidden","_extend","isUndefined","customInspect","stylizeWithColor","formatValue","str","styleType","styles","arrayToHash","array","hash","val","idx","recurseTimes","isFunction","ret","isString","primitive","formatPrimitive","keys","visibleKeys","getOwnPropertyNames","isError","formatError","isRegExp","toString","isDate","base","braces","toUTCString","formatArray","formatProperty","pop","reduceToSingleString","simple","stringify","replace","isNumber","isNull","l","hasOwnProperty","String","match","desc","getOwnPropertyDescriptor","split","line","join","substr","numLinesEst","reduce","prev","cur","ar","isNullOrUndefined","isSymbol","re","isObject","objectToString","isPrimitive","o","pad","timestamp","getHours","getMinutes","getSeconds","getDate","months","getMonth","formatRegExp","f","objects","len","x","Number","_","deprecate","msg","deprecated","warned","throwDeprecation","traceDeprecation","console","trace","noDeprecation","debugEnviron","debugs","debuglog","env","NODE_DEBUG","toUpperCase","pid","bold","italic","underline","inverse","white","grey","black","blue","cyan","green","magenta","red","yellow","special","boolean","null","date","regexp","isBuffer","log","origin","add","757","HashtagTimeline","_dec","__WEBPACK_IMPORTED_MODULE_5_react_redux__","__WEBPACK_IMPORTED_MODULE_6__ui_containers_status_list_container__","__WEBPACK_IMPORTED_MODULE_7__components_column__","__WEBPACK_IMPORTED_MODULE_8__components_column_header__","__WEBPACK_IMPORTED_MODULE_9__actions_timelines__","__WEBPACK_IMPORTED_MODULE_10__actions_columns__","__WEBPACK_IMPORTED_MODULE_12__actions_streaming__","mapStateToProps","hasUnread","params","handlePin","columnId","handleMove","dir","_this$props2","handleHeaderClick","column","_subscribe","_unsubscribe","componentWillReceiveProps","multiColumn","pinned","icon","active","title","onMove","showBackButton","92","_events","_maxListeners","defaultMaxListeners","setMaxListeners","isNaN","er","handler","addListener","m","newListener","once","g","removeListener","fired","position","splice","removeAllListeners","listenerCount","evlistener","emitter","93"],"mappings":"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","file":"features/hashtag_timeline-3ed7e7bf18fd2fc04c9e.js","sourcesContent":["webpackJsonp([6],{\n\n/***/ 155:\n/***/ (function(module, exports, __webpack_require__) {\n\n// Copyright (c) 2012 Mathieu Turcotte\n// Licensed under the MIT license.\n\nvar events = __webpack_require__(92);\nvar precond = __webpack_require__(93);\nvar util = __webpack_require__(32);\n\n// A class to hold the state of a backoff operation. Accepts a backoff strategy\n// to generate the backoff delays.\nfunction Backoff(backoffStrategy) {\n events.EventEmitter.call(this);\n\n this.backoffStrategy_ = backoffStrategy;\n this.maxNumberOfRetry_ = -1;\n this.backoffNumber_ = 0;\n this.backoffDelay_ = 0;\n this.timeoutID_ = -1;\n\n this.handlers = {\n backoff: this.onBackoff_.bind(this)\n };\n}\nutil.inherits(Backoff, events.EventEmitter);\n\n// Sets a limit, greater than 0, on the maximum number of backoffs. A 'fail'\n// event will be emitted when the limit is reached.\nBackoff.prototype.failAfter = function (maxNumberOfRetry) {\n precond.checkArgument(maxNumberOfRetry > 0, 'Expected a maximum number of retry greater than 0 but got %s.', maxNumberOfRetry);\n\n this.maxNumberOfRetry_ = maxNumberOfRetry;\n};\n\n// Starts a backoff operation. Accepts an optional parameter to let the\n// listeners know why the backoff operation was started.\nBackoff.prototype.backoff = function (err) {\n precond.checkState(this.timeoutID_ === -1, 'Backoff in progress.');\n\n if (this.backoffNumber_ === this.maxNumberOfRetry_) {\n this.emit('fail', err);\n this.reset();\n } else {\n this.backoffDelay_ = this.backoffStrategy_.next();\n this.timeoutID_ = setTimeout(this.handlers.backoff, this.backoffDelay_);\n this.emit('backoff', this.backoffNumber_, this.backoffDelay_, err);\n }\n};\n\n// Handles the backoff timeout completion.\nBackoff.prototype.onBackoff_ = function () {\n this.timeoutID_ = -1;\n this.emit('ready', this.backoffNumber_, this.backoffDelay_);\n this.backoffNumber_++;\n};\n\n// Stops any backoff operation and resets the backoff delay to its inital value.\nBackoff.prototype.reset = function () {\n this.backoffNumber_ = 0;\n this.backoffStrategy_.reset();\n clearTimeout(this.timeoutID_);\n this.timeoutID_ = -1;\n};\n\nmodule.exports = Backoff;\n\n/***/ }),\n\n/***/ 156:\n/***/ (function(module, exports, __webpack_require__) {\n\n// Copyright (c) 2012 Mathieu Turcotte\n// Licensed under the MIT license.\n\nvar events = __webpack_require__(92);\nvar util = __webpack_require__(32);\n\nfunction isDef(value) {\n return value !== undefined && value !== null;\n}\n\n// Abstract class defining the skeleton for the backoff strategies. Accepts an\n// object holding the options for the backoff strategy:\n//\n// * `randomisationFactor`: The randomisation factor which must be between 0\n// and 1 where 1 equates to a randomization factor of 100% and 0 to no\n// randomization.\n// * `initialDelay`: The backoff initial delay in milliseconds.\n// * `maxDelay`: The backoff maximal delay in milliseconds.\nfunction BackoffStrategy(options) {\n options = options || {};\n\n if (isDef(options.initialDelay) && options.initialDelay < 1) {\n throw new Error('The initial timeout must be greater than 0.');\n } else if (isDef(options.maxDelay) && options.maxDelay < 1) {\n throw new Error('The maximal timeout must be greater than 0.');\n }\n\n this.initialDelay_ = options.initialDelay || 100;\n this.maxDelay_ = options.maxDelay || 10000;\n\n if (this.maxDelay_ <= this.initialDelay_) {\n throw new Error('The maximal backoff delay must be ' + 'greater than the initial backoff delay.');\n }\n\n if (isDef(options.randomisationFactor) && (options.randomisationFactor < 0 || options.randomisationFactor > 1)) {\n throw new Error('The randomisation factor must be between 0 and 1.');\n }\n\n this.randomisationFactor_ = options.randomisationFactor || 0;\n}\n\n// Gets the maximal backoff delay.\nBackoffStrategy.prototype.getMaxDelay = function () {\n return this.maxDelay_;\n};\n\n// Gets the initial backoff delay.\nBackoffStrategy.prototype.getInitialDelay = function () {\n return this.initialDelay_;\n};\n\n// Template method that computes and returns the next backoff delay in\n// milliseconds.\nBackoffStrategy.prototype.next = function () {\n var backoffDelay = this.next_();\n var randomisationMultiple = 1 + Math.random() * this.randomisationFactor_;\n var randomizedDelay = Math.round(backoffDelay * randomisationMultiple);\n return randomizedDelay;\n};\n\n// Computes and returns the next backoff delay. Intended to be overridden by\n// subclasses.\nBackoffStrategy.prototype.next_ = function () {\n throw new Error('BackoffStrategy.next_() unimplemented.');\n};\n\n// Template method that resets the backoff delay to its initial value.\nBackoffStrategy.prototype.reset = function () {\n this.reset_();\n};\n\n// Resets the backoff delay to its initial value. Intended to be overridden by\n// subclasses.\nBackoffStrategy.prototype.reset_ = function () {\n throw new Error('BackoffStrategy.reset_() unimplemented.');\n};\n\nmodule.exports = BackoffStrategy;\n\n/***/ }),\n\n/***/ 157:\n/***/ (function(module, exports, __webpack_require__) {\n\n// Copyright (c) 2012 Mathieu Turcotte\n// Licensed under the MIT license.\n\nvar util = __webpack_require__(32);\n\nvar BackoffStrategy = __webpack_require__(156);\n\n// Fibonacci backoff strategy.\nfunction FibonacciBackoffStrategy(options) {\n BackoffStrategy.call(this, options);\n this.backoffDelay_ = 0;\n this.nextBackoffDelay_ = this.getInitialDelay();\n}\nutil.inherits(FibonacciBackoffStrategy, BackoffStrategy);\n\nFibonacciBackoffStrategy.prototype.next_ = function () {\n var backoffDelay = Math.min(this.nextBackoffDelay_, this.getMaxDelay());\n this.nextBackoffDelay_ += this.backoffDelay_;\n this.backoffDelay_ = backoffDelay;\n return backoffDelay;\n};\n\nFibonacciBackoffStrategy.prototype.reset_ = function () {\n this.nextBackoffDelay_ = this.getInitialDelay();\n this.backoffDelay_ = 0;\n};\n\nmodule.exports = FibonacciBackoffStrategy;\n\n/***/ }),\n\n/***/ 158:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_lodash_debounce__ = __webpack_require__(42);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_lodash_debounce___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_lodash_debounce__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_react_redux__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__components_status_list__ = __webpack_require__(269);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__actions_timelines__ = __webpack_require__(16);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_immutable__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_immutable___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_4_immutable__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_reselect__ = __webpack_require__(96);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_reselect___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_5_reselect__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__initial_state__ = __webpack_require__(18);\n\n\n\n\n\n\n\n\n\nvar makeGetStatusIds = function makeGetStatusIds() {\n return Object(__WEBPACK_IMPORTED_MODULE_5_reselect__[\"createSelector\"])([function (state, _ref) {\n var type = _ref.type;\n return state.getIn(['settings', type], Object(__WEBPACK_IMPORTED_MODULE_4_immutable__[\"Map\"])());\n }, function (state, _ref2) {\n var type = _ref2.type;\n return state.getIn(['timelines', type, 'items'], Object(__WEBPACK_IMPORTED_MODULE_4_immutable__[\"List\"])());\n }, function (state) {\n return state.get('statuses');\n }], function (columnSettings, statusIds, statuses) {\n var rawRegex = columnSettings.getIn(['regex', 'body'], '').trim();\n var regex = null;\n\n try {\n regex = rawRegex && new RegExp(rawRegex, 'i');\n } catch (e) {\n // Bad regex, don't affect filters\n }\n\n return statusIds.filter(function (id) {\n var statusForId = statuses.get(id);\n var showStatus = true;\n\n if (columnSettings.getIn(['shows', 'reblog']) === false) {\n showStatus = showStatus && statusForId.get('reblog') === null;\n }\n\n if (columnSettings.getIn(['shows', 'reply']) === false) {\n showStatus = showStatus && (statusForId.get('in_reply_to_id') === null || statusForId.get('in_reply_to_account_id') === __WEBPACK_IMPORTED_MODULE_6__initial_state__[\"e\" /* me */]);\n }\n\n if (showStatus && regex && statusForId.get('account') !== __WEBPACK_IMPORTED_MODULE_6__initial_state__[\"e\" /* me */]) {\n var searchIndex = statusForId.get('reblog') ? statuses.getIn([statusForId.get('reblog'), 'search_index']) : statusForId.get('search_index');\n showStatus = !regex.test(searchIndex);\n }\n\n return showStatus;\n });\n });\n};\n\nvar makeMapStateToProps = function makeMapStateToProps() {\n var getStatusIds = makeGetStatusIds();\n\n var mapStateToProps = function mapStateToProps(state, _ref3) {\n var timelineId = _ref3.timelineId;\n return {\n statusIds: getStatusIds(state, { type: timelineId }),\n isLoading: state.getIn(['timelines', timelineId, 'isLoading'], true),\n hasMore: !!state.getIn(['timelines', timelineId, 'next'])\n };\n };\n\n return mapStateToProps;\n};\n\nvar mapDispatchToProps = function mapDispatchToProps(dispatch, _ref4) {\n var timelineId = _ref4.timelineId,\n loadMore = _ref4.loadMore;\n return {\n\n onScrollToBottom: __WEBPACK_IMPORTED_MODULE_0_lodash_debounce___default()(function () {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_3__actions_timelines__[\"B\" /* scrollTopTimeline */])(timelineId, false));\n loadMore();\n }, 300, { leading: true }),\n\n onScrollToTop: __WEBPACK_IMPORTED_MODULE_0_lodash_debounce___default()(function () {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_3__actions_timelines__[\"B\" /* scrollTopTimeline */])(timelineId, true));\n }, 100),\n\n onScroll: __WEBPACK_IMPORTED_MODULE_0_lodash_debounce___default()(function () {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_3__actions_timelines__[\"B\" /* scrollTopTimeline */])(timelineId, false));\n }, 100)\n\n };\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_1_react_redux__[\"connect\"])(makeMapStateToProps, mapDispatchToProps)(__WEBPACK_IMPORTED_MODULE_2__components_status_list__[\"a\" /* default */]));\n\n/***/ }),\n\n/***/ 260:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return LoadMore; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_react__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_4_react__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_react_intl__ = __webpack_require__(6);\n\n\n\n\n\nvar _class, _temp;\n\n\n\nvar LoadMore = (_temp = _class = function (_React$PureComponent) {\n __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits___default()(LoadMore, _React$PureComponent);\n\n function LoadMore() {\n __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default()(this, LoadMore);\n\n return __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default()(this, _React$PureComponent.apply(this, arguments));\n }\n\n LoadMore.prototype.render = function render() {\n var visible = this.props.visible;\n\n\n return __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('button', {\n className: 'load-more',\n disabled: !visible,\n style: { visibility: visible ? 'visible' : 'hidden' },\n onClick: this.props.onClick\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_5_react_intl__[\"b\" /* FormattedMessage */], {\n id: 'status.load_more',\n defaultMessage: 'Load more'\n }));\n };\n\n return LoadMore;\n}(__WEBPACK_IMPORTED_MODULE_4_react___default.a.PureComponent), _class.defaultProps = {\n visible: true\n}, _temp);\n\n\n/***/ }),\n\n/***/ 261:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_react__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_react__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_react_redux__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__components_status__ = __webpack_require__(153);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__selectors__ = __webpack_require__(69);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__actions_compose__ = __webpack_require__(15);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__actions_interactions__ = __webpack_require__(43);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__actions_accounts__ = __webpack_require__(22);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__actions_statuses__ = __webpack_require__(57);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__actions_reports__ = __webpack_require__(151);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__actions_modal__ = __webpack_require__(31);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11_react_intl__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__initial_state__ = __webpack_require__(18);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar messages = Object(__WEBPACK_IMPORTED_MODULE_11_react_intl__[\"f\" /* defineMessages */])({\n deleteConfirm: {\n 'id': 'confirmations.delete.confirm',\n 'defaultMessage': 'Delete'\n },\n deleteMessage: {\n 'id': 'confirmations.delete.message',\n 'defaultMessage': 'Are you sure you want to delete this status?'\n },\n blockConfirm: {\n 'id': 'confirmations.block.confirm',\n 'defaultMessage': 'Block'\n },\n muteConfirm: {\n 'id': 'confirmations.mute.confirm',\n 'defaultMessage': 'Mute'\n }\n});\n\nvar makeMapStateToProps = function makeMapStateToProps() {\n var getStatus = Object(__WEBPACK_IMPORTED_MODULE_4__selectors__[\"e\" /* makeGetStatus */])();\n\n var mapStateToProps = function mapStateToProps(state, props) {\n return {\n status: getStatus(state, props.id)\n };\n };\n\n return mapStateToProps;\n};\n\nvar mapDispatchToProps = function mapDispatchToProps(dispatch, _ref) {\n var intl = _ref.intl;\n return {\n onReply: function onReply(status, router) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_5__actions_compose__[\"O\" /* replyCompose */])(status, router));\n },\n onModalReblog: function onModalReblog(status) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_6__actions_interactions__[\"q\" /* reblog */])(status));\n },\n onReblog: function onReblog(status, e) {\n if (status.get('reblogged')) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_6__actions_interactions__[\"t\" /* unreblog */])(status));\n } else {\n if (e.shiftKey || !__WEBPACK_IMPORTED_MODULE_12__initial_state__[\"b\" /* boostModal */]) {\n this.onModalReblog(status);\n } else {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_10__actions_modal__[\"d\" /* openModal */])('BOOST', { status: status, onReblog: this.onModalReblog }));\n }\n }\n },\n onFavourite: function onFavourite(status) {\n if (status.get('favourited')) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_6__actions_interactions__[\"r\" /* unfavourite */])(status));\n } else {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_6__actions_interactions__[\"m\" /* favourite */])(status));\n }\n },\n onPin: function onPin(status) {\n if (status.get('pinned')) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_6__actions_interactions__[\"s\" /* unpin */])(status));\n } else {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_6__actions_interactions__[\"p\" /* pin */])(status));\n }\n },\n onEmbed: function onEmbed(status) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_10__actions_modal__[\"d\" /* openModal */])('EMBED', { url: status.get('url') }));\n },\n onDelete: function onDelete(status) {\n if (!__WEBPACK_IMPORTED_MODULE_12__initial_state__[\"d\" /* deleteModal */]) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_8__actions_statuses__[\"e\" /* deleteStatus */])(status.get('id')));\n } else {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_10__actions_modal__[\"d\" /* openModal */])('CONFIRM', {\n message: intl.formatMessage(messages.deleteMessage),\n confirm: intl.formatMessage(messages.deleteConfirm),\n onConfirm: function onConfirm() {\n return dispatch(Object(__WEBPACK_IMPORTED_MODULE_8__actions_statuses__[\"e\" /* deleteStatus */])(status.get('id')));\n }\n }));\n }\n },\n onMention: function onMention(account, router) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_5__actions_compose__[\"M\" /* mentionCompose */])(account, router));\n },\n onOpenMedia: function onOpenMedia(media, index) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_10__actions_modal__[\"d\" /* openModal */])('MEDIA', { media: media, index: index }));\n },\n onOpenVideo: function onOpenVideo(media, time) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_10__actions_modal__[\"d\" /* openModal */])('VIDEO', { media: media, time: time }));\n },\n onBlock: function onBlock(account) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_10__actions_modal__[\"d\" /* openModal */])('CONFIRM', {\n message: __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_11_react_intl__[\"b\" /* FormattedMessage */], {\n id: 'confirmations.block.message',\n defaultMessage: 'Are you sure you want to block {name}?',\n values: { name: __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('strong', {}, void 0, '@', account.get('acct')) }\n }),\n confirm: intl.formatMessage(messages.blockConfirm),\n onConfirm: function onConfirm() {\n return dispatch(Object(__WEBPACK_IMPORTED_MODULE_7__actions_accounts__[\"r\" /* blockAccount */])(account.get('id')));\n }\n }));\n },\n onReport: function onReport(status) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_9__actions_reports__[\"i\" /* initReport */])(status.get('account'), status));\n },\n onMute: function onMute(account) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_10__actions_modal__[\"d\" /* openModal */])('CONFIRM', {\n message: __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_11_react_intl__[\"b\" /* FormattedMessage */], {\n id: 'confirmations.mute.message',\n defaultMessage: 'Are you sure you want to mute {name}?',\n values: { name: __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('strong', {}, void 0, '@', account.get('acct')) }\n }),\n confirm: intl.formatMessage(messages.muteConfirm),\n onConfirm: function onConfirm() {\n return dispatch(Object(__WEBPACK_IMPORTED_MODULE_7__actions_accounts__[\"B\" /* muteAccount */])(account.get('id')));\n }\n }));\n },\n onMuteConversation: function onMuteConversation(status) {\n if (status.get('muted')) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_8__actions_statuses__[\"h\" /* unmuteStatus */])(status.get('id')));\n } else {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_8__actions_statuses__[\"g\" /* muteStatus */])(status.get('id')));\n }\n }\n };\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_11_react_intl__[\"g\" /* injectIntl */])(Object(__WEBPACK_IMPORTED_MODULE_2_react_redux__[\"connect\"])(makeMapStateToProps, mapDispatchToProps)(__WEBPACK_IMPORTED_MODULE_3__components_status__[\"a\" /* default */])));\n\n/***/ }),\n\n/***/ 262:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return ScrollableList; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_lodash_throttle__ = __webpack_require__(94);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_lodash_throttle___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_4_lodash_throttle__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_react__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_5_react__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_react_router_scroll_4__ = __webpack_require__(152);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_prop_types__ = __webpack_require__(5);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_prop_types___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_7_prop_types__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__containers_intersection_observer_article_container__ = __webpack_require__(263);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__load_more__ = __webpack_require__(260);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__features_ui_util_intersection_observer_wrapper__ = __webpack_require__(268);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11_immutable__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11_immutable___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_11_immutable__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12_classnames__ = __webpack_require__(10);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12_classnames___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_12_classnames__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__features_ui_util_fullscreen__ = __webpack_require__(154);\n\n\n\n\n\n\nvar _class, _temp2;\n\n\n\n\n\n\n\n\n\n\n\n\nvar ScrollableList = (_temp2 = _class = function (_PureComponent) {\n __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits___default()(ScrollableList, _PureComponent);\n\n function ScrollableList() {\n var _temp, _this, _ret;\n\n __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default()(this, ScrollableList);\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 = __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default()(this, _PureComponent.call.apply(_PureComponent, [this].concat(args))), _this), _this.state = {\n lastMouseMove: null\n }, _this.intersectionObserverWrapper = new __WEBPACK_IMPORTED_MODULE_10__features_ui_util_intersection_observer_wrapper__[\"a\" /* default */](), _this.handleScroll = __WEBPACK_IMPORTED_MODULE_4_lodash_throttle___default()(function () {\n if (_this.node) {\n var _this$node = _this.node,\n scrollTop = _this$node.scrollTop,\n scrollHeight = _this$node.scrollHeight,\n clientHeight = _this$node.clientHeight;\n\n var offset = scrollHeight - scrollTop - clientHeight;\n _this._oldScrollPosition = scrollHeight - scrollTop;\n\n if (400 > offset && _this.props.onScrollToBottom && !_this.props.isLoading) {\n _this.props.onScrollToBottom();\n } else if (scrollTop < 100 && _this.props.onScrollToTop) {\n _this.props.onScrollToTop();\n } else if (_this.props.onScroll) {\n _this.props.onScroll();\n }\n }\n }, 150, {\n trailing: true\n }), _this.handleMouseMove = __WEBPACK_IMPORTED_MODULE_4_lodash_throttle___default()(function () {\n _this._lastMouseMove = new Date();\n }, 300), _this.handleMouseLeave = function () {\n _this._lastMouseMove = null;\n }, _this.onFullScreenChange = function () {\n _this.setState({ fullscreen: Object(__WEBPACK_IMPORTED_MODULE_13__features_ui_util_fullscreen__[\"d\" /* isFullscreen */])() });\n }, _this.setRef = function (c) {\n _this.node = c;\n }, _this.handleLoadMore = function (e) {\n e.preventDefault();\n _this.props.onScrollToBottom();\n }, _temp), __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default()(_this, _ret);\n }\n\n ScrollableList.prototype.componentDidMount = function componentDidMount() {\n this.attachScrollListener();\n this.attachIntersectionObserver();\n Object(__WEBPACK_IMPORTED_MODULE_13__features_ui_util_fullscreen__[\"a\" /* attachFullscreenListener */])(this.onFullScreenChange);\n\n // Handle initial scroll posiiton\n this.handleScroll();\n };\n\n ScrollableList.prototype.componentDidUpdate = function componentDidUpdate(prevProps) {\n var someItemInserted = __WEBPACK_IMPORTED_MODULE_5_react___default.a.Children.count(prevProps.children) > 0 && __WEBPACK_IMPORTED_MODULE_5_react___default.a.Children.count(prevProps.children) < __WEBPACK_IMPORTED_MODULE_5_react___default.a.Children.count(this.props.children) && this.getFirstChildKey(prevProps) !== this.getFirstChildKey(this.props);\n\n // Reset the scroll position when a new child comes in in order not to\n // jerk the scrollbar around if you're already scrolled down the page.\n if (someItemInserted && this._oldScrollPosition && this.node.scrollTop > 0) {\n var newScrollTop = this.node.scrollHeight - this._oldScrollPosition;\n\n if (this.node.scrollTop !== newScrollTop) {\n this.node.scrollTop = newScrollTop;\n }\n } else {\n this._oldScrollPosition = this.node.scrollHeight - this.node.scrollTop;\n }\n };\n\n ScrollableList.prototype.componentWillUnmount = function componentWillUnmount() {\n this.detachScrollListener();\n this.detachIntersectionObserver();\n Object(__WEBPACK_IMPORTED_MODULE_13__features_ui_util_fullscreen__[\"b\" /* detachFullscreenListener */])(this.onFullScreenChange);\n };\n\n ScrollableList.prototype.attachIntersectionObserver = function attachIntersectionObserver() {\n this.intersectionObserverWrapper.connect({\n root: this.node,\n rootMargin: '300% 0px'\n });\n };\n\n ScrollableList.prototype.detachIntersectionObserver = function detachIntersectionObserver() {\n this.intersectionObserverWrapper.disconnect();\n };\n\n ScrollableList.prototype.attachScrollListener = function attachScrollListener() {\n this.node.addEventListener('scroll', this.handleScroll);\n };\n\n ScrollableList.prototype.detachScrollListener = function detachScrollListener() {\n this.node.removeEventListener('scroll', this.handleScroll);\n };\n\n ScrollableList.prototype.getFirstChildKey = function getFirstChildKey(props) {\n var children = props.children;\n\n var firstChild = children;\n if (children instanceof __WEBPACK_IMPORTED_MODULE_11_immutable__[\"List\"]) {\n firstChild = children.get(0);\n } else if (Array.isArray(children)) {\n firstChild = children[0];\n }\n return firstChild && firstChild.key;\n };\n\n ScrollableList.prototype._recentlyMoved = function _recentlyMoved() {\n return this._lastMouseMove !== null && new Date() - this._lastMouseMove < 600;\n };\n\n ScrollableList.prototype.render = function render() {\n var _this2 = this;\n\n var _props = this.props,\n children = _props.children,\n scrollKey = _props.scrollKey,\n trackScroll = _props.trackScroll,\n shouldUpdateScroll = _props.shouldUpdateScroll,\n isLoading = _props.isLoading,\n hasMore = _props.hasMore,\n prepend = _props.prepend,\n emptyMessage = _props.emptyMessage;\n var fullscreen = this.state.fullscreen;\n\n var childrenCount = __WEBPACK_IMPORTED_MODULE_5_react___default.a.Children.count(children);\n\n var loadMore = hasMore && childrenCount > 0 ? __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_9__load_more__[\"a\" /* default */], {\n visible: !isLoading,\n onClick: this.handleLoadMore\n }) : null;\n var scrollableArea = null;\n\n if (isLoading || childrenCount > 0 || !emptyMessage) {\n scrollableArea = __WEBPACK_IMPORTED_MODULE_5_react___default.a.createElement(\n 'div',\n { className: __WEBPACK_IMPORTED_MODULE_12_classnames___default()('scrollable', { fullscreen: fullscreen }), ref: this.setRef, onMouseMove: this.handleMouseMove, onMouseLeave: this.handleMouseLeave },\n __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n role: 'feed',\n className: 'item-list'\n }, void 0, prepend, __WEBPACK_IMPORTED_MODULE_5_react___default.a.Children.map(this.props.children, function (child, index) {\n return __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_8__containers_intersection_observer_article_container__[\"a\" /* default */], {\n id: child.key,\n index: index,\n listLength: childrenCount,\n intersectionObserverWrapper: _this2.intersectionObserverWrapper,\n saveHeightKey: trackScroll ? _this2.context.router.route.location.key + ':' + scrollKey : null\n }, child.key, child);\n }), loadMore)\n );\n } else {\n scrollableArea = __WEBPACK_IMPORTED_MODULE_5_react___default.a.createElement(\n 'div',\n { className: 'empty-column-indicator', ref: this.setRef },\n emptyMessage\n );\n }\n\n if (trackScroll) {\n return __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_6_react_router_scroll_4__[\"a\" /* ScrollContainer */], {\n scrollKey: scrollKey,\n shouldUpdateScroll: shouldUpdateScroll\n }, void 0, scrollableArea);\n } else {\n return scrollableArea;\n }\n };\n\n return ScrollableList;\n}(__WEBPACK_IMPORTED_MODULE_5_react__[\"PureComponent\"]), _class.contextTypes = {\n router: __WEBPACK_IMPORTED_MODULE_7_prop_types___default.a.object\n}, _class.defaultProps = {\n trackScroll: true\n}, _temp2);\n\n\n/***/ }),\n\n/***/ 263:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react_redux__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__components_intersection_observer_article__ = __webpack_require__(264);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__actions_height_cache__ = __webpack_require__(95);\n\n\n\n\nvar makeMapStateToProps = function makeMapStateToProps(state, props) {\n return {\n cachedHeight: state.getIn(['height_cache', props.saveHeightKey, props.id])\n };\n};\n\nvar mapDispatchToProps = function mapDispatchToProps(dispatch) {\n return {\n onHeightChange: function onHeightChange(key, id, height) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_2__actions_height_cache__[\"d\" /* setHeight */])(key, id, height));\n }\n };\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0_react_redux__[\"connect\"])(makeMapStateToProps, mapDispatchToProps)(__WEBPACK_IMPORTED_MODULE_1__components_intersection_observer_article__[\"a\" /* default */]));\n\n/***/ }),\n\n/***/ 264:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return IntersectionObserverArticle; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_classCallCheck__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_classCallCheck___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_classCallCheck__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_possibleConstructorReturn__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_possibleConstructorReturn___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_possibleConstructorReturn__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_inherits__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_inherits___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_inherits__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_react__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_react__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__features_ui_util_schedule_idle_task__ = __webpack_require__(265);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__features_ui_util_get_rect_from_entry__ = __webpack_require__(267);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_immutable__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_immutable___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_6_immutable__);\n\n\n\n\n\n\n\n\n\n// Diff these props in the \"rendered\" state\nvar updateOnPropsForRendered = ['id', 'index', 'listLength'];\n// Diff these props in the \"unrendered\" state\nvar updateOnPropsForUnrendered = ['id', 'index', 'listLength', 'cachedHeight'];\n\nvar IntersectionObserverArticle = function (_React$Component) {\n __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_inherits___default()(IntersectionObserverArticle, _React$Component);\n\n function IntersectionObserverArticle() {\n var _temp, _this, _ret;\n\n __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_classCallCheck___default()(this, IntersectionObserverArticle);\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 = __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_possibleConstructorReturn___default()(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {\n isHidden: false // set to true in requestIdleCallback to trigger un-render\n }, _this.handleIntersection = function (entry) {\n _this.entry = entry;\n\n Object(__WEBPACK_IMPORTED_MODULE_4__features_ui_util_schedule_idle_task__[\"a\" /* default */])(_this.calculateHeight);\n _this.setState(_this.updateStateAfterIntersection);\n }, _this.updateStateAfterIntersection = function (prevState) {\n if (prevState.isIntersecting && !_this.entry.isIntersecting) {\n Object(__WEBPACK_IMPORTED_MODULE_4__features_ui_util_schedule_idle_task__[\"a\" /* default */])(_this.hideIfNotIntersecting);\n }\n return {\n isIntersecting: _this.entry.isIntersecting,\n isHidden: false\n };\n }, _this.calculateHeight = function () {\n var _this$props = _this.props,\n onHeightChange = _this$props.onHeightChange,\n saveHeightKey = _this$props.saveHeightKey,\n id = _this$props.id;\n // save the height of the fully-rendered element (this is expensive\n // on Chrome, where we need to fall back to getBoundingClientRect)\n\n _this.height = Object(__WEBPACK_IMPORTED_MODULE_5__features_ui_util_get_rect_from_entry__[\"a\" /* default */])(_this.entry).height;\n\n if (onHeightChange && saveHeightKey) {\n onHeightChange(saveHeightKey, id, _this.height);\n }\n }, _this.hideIfNotIntersecting = function () {\n if (!_this.componentMounted) {\n return;\n }\n\n // When the browser gets a chance, test if we're still not intersecting,\n // and if so, set our isHidden to true to trigger an unrender. The point of\n // this is to save DOM nodes and avoid using up too much memory.\n // See: https://github.com/tootsuite/mastodon/issues/2900\n _this.setState(function (prevState) {\n return { isHidden: !prevState.isIntersecting };\n });\n }, _this.handleRef = function (node) {\n _this.node = node;\n }, _temp), __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_possibleConstructorReturn___default()(_this, _ret);\n }\n\n IntersectionObserverArticle.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps, nextState) {\n var _this2 = this;\n\n var isUnrendered = !this.state.isIntersecting && (this.state.isHidden || this.props.cachedHeight);\n var willBeUnrendered = !nextState.isIntersecting && (nextState.isHidden || nextProps.cachedHeight);\n if (!!isUnrendered !== !!willBeUnrendered) {\n // If we're going from rendered to unrendered (or vice versa) then update\n return true;\n }\n // Otherwise, diff based on props\n var propsToDiff = isUnrendered ? updateOnPropsForUnrendered : updateOnPropsForRendered;\n return !propsToDiff.every(function (prop) {\n return Object(__WEBPACK_IMPORTED_MODULE_6_immutable__[\"is\"])(nextProps[prop], _this2.props[prop]);\n });\n };\n\n IntersectionObserverArticle.prototype.componentDidMount = function componentDidMount() {\n var _props = this.props,\n intersectionObserverWrapper = _props.intersectionObserverWrapper,\n id = _props.id;\n\n\n intersectionObserverWrapper.observe(id, this.node, this.handleIntersection);\n\n this.componentMounted = true;\n };\n\n IntersectionObserverArticle.prototype.componentWillUnmount = function componentWillUnmount() {\n var _props2 = this.props,\n intersectionObserverWrapper = _props2.intersectionObserverWrapper,\n id = _props2.id;\n\n intersectionObserverWrapper.unobserve(id, this.node);\n\n this.componentMounted = false;\n };\n\n IntersectionObserverArticle.prototype.render = function render() {\n var _props3 = this.props,\n children = _props3.children,\n id = _props3.id,\n index = _props3.index,\n listLength = _props3.listLength,\n cachedHeight = _props3.cachedHeight;\n var _state = this.state,\n isIntersecting = _state.isIntersecting,\n isHidden = _state.isHidden;\n\n\n if (!isIntersecting && (isHidden || cachedHeight)) {\n return __WEBPACK_IMPORTED_MODULE_3_react___default.a.createElement(\n 'article',\n {\n ref: this.handleRef,\n 'aria-posinset': index,\n 'aria-setsize': listLength,\n style: { height: (this.height || cachedHeight) + 'px', opacity: 0, overflow: 'hidden' },\n 'data-id': id,\n tabIndex: '0'\n },\n children && __WEBPACK_IMPORTED_MODULE_3_react___default.a.cloneElement(children, { hidden: true })\n );\n }\n\n return __WEBPACK_IMPORTED_MODULE_3_react___default.a.createElement(\n 'article',\n { ref: this.handleRef, 'aria-posinset': index, 'aria-setsize': listLength, 'data-id': id, tabIndex: '0' },\n children && __WEBPACK_IMPORTED_MODULE_3_react___default.a.cloneElement(children, { hidden: false })\n );\n };\n\n return IntersectionObserverArticle;\n}(__WEBPACK_IMPORTED_MODULE_3_react___default.a.Component);\n\n\n\n/***/ }),\n\n/***/ 265:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tiny_queue__ = __webpack_require__(266);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tiny_queue___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_tiny_queue__);\n// Wrapper to call requestIdleCallback() to schedule low-priority work.\n// See https://developer.mozilla.org/en-US/docs/Web/API/Background_Tasks_API\n// for a good breakdown of the concepts behind this.\n\n\n\nvar taskQueue = new __WEBPACK_IMPORTED_MODULE_0_tiny_queue___default.a();\nvar runningRequestIdleCallback = false;\n\nfunction runTasks(deadline) {\n while (taskQueue.length && deadline.timeRemaining() > 0) {\n taskQueue.shift()();\n }\n if (taskQueue.length) {\n requestIdleCallback(runTasks);\n } else {\n runningRequestIdleCallback = false;\n }\n}\n\nfunction scheduleIdleTask(task) {\n taskQueue.push(task);\n if (!runningRequestIdleCallback) {\n runningRequestIdleCallback = true;\n requestIdleCallback(runTasks);\n }\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (scheduleIdleTask);\n\n/***/ }),\n\n/***/ 266:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n// Simple FIFO queue implementation to avoid having to do shift()\n// on an array, which is slow.\n\nfunction Queue() {\n this.length = 0;\n}\n\nQueue.prototype.push = function (item) {\n var node = { item: item };\n if (this.last) {\n this.last = this.last.next = node;\n } else {\n this.last = this.first = node;\n }\n this.length++;\n};\n\nQueue.prototype.shift = function () {\n var node = this.first;\n if (node) {\n this.first = node.next;\n if (! --this.length) {\n this.last = undefined;\n }\n return node.item;\n }\n};\n\nQueue.prototype.slice = function (start, end) {\n start = typeof start === 'undefined' ? 0 : start;\n end = typeof end === 'undefined' ? Infinity : end;\n\n var output = [];\n\n var i = 0;\n for (var node = this.first; node; node = node.next) {\n if (--end < 0) {\n break;\n } else if (++i > start) {\n output.push(node.item);\n }\n }\n return output;\n};\n\nmodule.exports = Queue;\n\n/***/ }),\n\n/***/ 267:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// Get the bounding client rect from an IntersectionObserver entry.\n// This is to work around a bug in Chrome: https://crbug.com/737228\n\nvar hasBoundingRectBug = void 0;\n\nfunction getRectFromEntry(entry) {\n if (typeof hasBoundingRectBug !== 'boolean') {\n var boundingRect = entry.target.getBoundingClientRect();\n var observerRect = entry.boundingClientRect;\n hasBoundingRectBug = boundingRect.height !== observerRect.height || boundingRect.top !== observerRect.top || boundingRect.width !== observerRect.width || boundingRect.bottom !== observerRect.bottom || boundingRect.left !== observerRect.left || boundingRect.right !== observerRect.right;\n }\n return hasBoundingRectBug ? entry.target.getBoundingClientRect() : entry.boundingClientRect;\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (getRectFromEntry);\n\n/***/ }),\n\n/***/ 268:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_classCallCheck__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_classCallCheck___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_classCallCheck__);\n\n\n// Wrapper for IntersectionObserver in order to make working with it\n// a bit easier. We also follow this performance advice:\n// \"If you need to observe multiple elements, it is both possible and\n// advised to observe multiple elements using the same IntersectionObserver\n// instance by calling observe() multiple times.\"\n// https://developers.google.com/web/updates/2016/04/intersectionobserver\n\nvar IntersectionObserverWrapper = function () {\n function IntersectionObserverWrapper() {\n __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_classCallCheck___default()(this, IntersectionObserverWrapper);\n\n this.callbacks = {};\n this.observerBacklog = [];\n this.observer = null;\n }\n\n IntersectionObserverWrapper.prototype.connect = function connect(options) {\n var _this = this;\n\n var onIntersection = function onIntersection(entries) {\n entries.forEach(function (entry) {\n var id = entry.target.getAttribute('data-id');\n if (_this.callbacks[id]) {\n _this.callbacks[id](entry);\n }\n });\n };\n\n this.observer = new IntersectionObserver(onIntersection, options);\n this.observerBacklog.forEach(function (_ref) {\n var id = _ref[0],\n node = _ref[1],\n callback = _ref[2];\n\n _this.observe(id, node, callback);\n });\n this.observerBacklog = null;\n };\n\n IntersectionObserverWrapper.prototype.observe = function observe(id, node, callback) {\n if (!this.observer) {\n this.observerBacklog.push([id, node, callback]);\n } else {\n this.callbacks[id] = callback;\n this.observer.observe(node);\n }\n };\n\n IntersectionObserverWrapper.prototype.unobserve = function unobserve(id, node) {\n if (this.observer) {\n delete this.callbacks[id];\n this.observer.unobserve(node);\n }\n };\n\n IntersectionObserverWrapper.prototype.disconnect = function disconnect() {\n if (this.observer) {\n this.callbacks = {};\n this.observer.disconnect();\n this.observer = null;\n }\n };\n\n return IntersectionObserverWrapper;\n}();\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (IntersectionObserverWrapper);\n\n/***/ }),\n\n/***/ 269:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return StatusList; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends__ = __webpack_require__(28);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_jsx__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_jsx___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_jsx__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_objectWithoutProperties__ = __webpack_require__(29);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_objectWithoutProperties___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_objectWithoutProperties__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_classCallCheck__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_classCallCheck___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_classCallCheck__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_babel_runtime_helpers_possibleConstructorReturn__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_babel_runtime_helpers_possibleConstructorReturn___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_4_babel_runtime_helpers_possibleConstructorReturn__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_babel_runtime_helpers_inherits__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_babel_runtime_helpers_inherits___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_5_babel_runtime_helpers_inherits__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_react__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_6_react__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_react_immutable_proptypes__ = __webpack_require__(12);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_react_immutable_proptypes___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_7_react_immutable_proptypes__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8_prop_types__ = __webpack_require__(5);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8_prop_types___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_8_prop_types__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__containers_status_container__ = __webpack_require__(261);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10_react_immutable_pure_component__ = __webpack_require__(11);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10_react_immutable_pure_component___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_10_react_immutable_pure_component__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__scrollable_list__ = __webpack_require__(262);\n\n\n\n\n\n\n\nvar _class, _temp2;\n\n\n\n\n\n\n\n\nvar StatusList = (_temp2 = _class = function (_ImmutablePureCompone) {\n __WEBPACK_IMPORTED_MODULE_5_babel_runtime_helpers_inherits___default()(StatusList, _ImmutablePureCompone);\n\n function StatusList() {\n var _temp, _this, _ret;\n\n __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_classCallCheck___default()(this, StatusList);\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 = __WEBPACK_IMPORTED_MODULE_4_babel_runtime_helpers_possibleConstructorReturn___default()(this, _ImmutablePureCompone.call.apply(_ImmutablePureCompone, [this].concat(args))), _this), _this.handleMoveUp = function (id) {\n var elementIndex = _this.props.statusIds.indexOf(id) - 1;\n _this._selectChild(elementIndex);\n }, _this.handleMoveDown = function (id) {\n var elementIndex = _this.props.statusIds.indexOf(id) + 1;\n _this._selectChild(elementIndex);\n }, _this.setRef = function (c) {\n _this.node = c;\n }, _temp), __WEBPACK_IMPORTED_MODULE_4_babel_runtime_helpers_possibleConstructorReturn___default()(_this, _ret);\n }\n\n StatusList.prototype._selectChild = function _selectChild(index) {\n var element = this.node.node.querySelector('article:nth-of-type(' + (index + 1) + ') .focusable');\n\n if (element) {\n element.focus();\n }\n };\n\n StatusList.prototype.render = function render() {\n var _this2 = this;\n\n var _props = this.props,\n statusIds = _props.statusIds,\n other = __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_objectWithoutProperties___default()(_props, ['statusIds']);\n\n var isLoading = other.isLoading;\n\n\n var scrollableContent = isLoading || statusIds.size > 0 ? statusIds.map(function (statusId) {\n return __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_9__containers_status_container__[\"a\" /* default */], {\n id: statusId,\n onMoveUp: _this2.handleMoveUp,\n onMoveDown: _this2.handleMoveDown\n }, statusId);\n }) : null;\n\n return __WEBPACK_IMPORTED_MODULE_6_react___default.a.createElement(\n __WEBPACK_IMPORTED_MODULE_11__scrollable_list__[\"a\" /* default */],\n __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends___default()({}, other, { ref: this.setRef }),\n scrollableContent\n );\n };\n\n return StatusList;\n}(__WEBPACK_IMPORTED_MODULE_10_react_immutable_pure_component___default.a), _class.propTypes = {\n scrollKey: __WEBPACK_IMPORTED_MODULE_8_prop_types___default.a.string.isRequired,\n statusIds: __WEBPACK_IMPORTED_MODULE_7_react_immutable_proptypes___default.a.list.isRequired,\n onScrollToBottom: __WEBPACK_IMPORTED_MODULE_8_prop_types___default.a.func,\n onScrollToTop: __WEBPACK_IMPORTED_MODULE_8_prop_types___default.a.func,\n onScroll: __WEBPACK_IMPORTED_MODULE_8_prop_types___default.a.func,\n trackScroll: __WEBPACK_IMPORTED_MODULE_8_prop_types___default.a.bool,\n shouldUpdateScroll: __WEBPACK_IMPORTED_MODULE_8_prop_types___default.a.func,\n isLoading: __WEBPACK_IMPORTED_MODULE_8_prop_types___default.a.bool,\n hasMore: __WEBPACK_IMPORTED_MODULE_8_prop_types___default.a.bool,\n prepend: __WEBPACK_IMPORTED_MODULE_8_prop_types___default.a.node,\n emptyMessage: __WEBPACK_IMPORTED_MODULE_8_prop_types___default.a.node\n}, _class.defaultProps = {\n trackScroll: true\n}, _temp2);\n\n\n/***/ }),\n\n/***/ 274:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* unused harmony export connectTimelineStream */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"d\", function() { return connectUserStream; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return connectCommunityStream; });\n/* unused harmony export connectMediaStream */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return connectPublicStream; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return connectHashtagStream; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__stream__ = __webpack_require__(275);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__timelines__ = __webpack_require__(16);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__notifications__ = __webpack_require__(45);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__locales__ = __webpack_require__(7);\n\n\n\n\n\nvar _getLocale = Object(__WEBPACK_IMPORTED_MODULE_3__locales__[\"getLocale\"])(),\n messages = _getLocale.messages;\n\nfunction connectTimelineStream(timelineId, path) {\n var pollingRefresh = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n return function (dispatch, getState) {\n var streamingAPIBaseURL = getState().getIn(['meta', 'streaming_api_base_url']);\n var accessToken = getState().getIn(['meta', 'access_token']);\n var locale = getState().getIn(['meta', 'locale']);\n var polling = null;\n\n var setupPolling = function setupPolling() {\n polling = setInterval(function () {\n pollingRefresh(dispatch);\n }, 20000);\n };\n\n var clearPolling = function clearPolling() {\n if (polling) {\n clearInterval(polling);\n polling = null;\n }\n };\n\n var subscription = Object(__WEBPACK_IMPORTED_MODULE_0__stream__[\"a\" /* default */])(streamingAPIBaseURL, accessToken, path, {\n connected: function connected() {\n if (pollingRefresh) {\n clearPolling();\n }\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_1__timelines__[\"m\" /* connectTimeline */])(timelineId));\n },\n disconnected: function disconnected() {\n if (pollingRefresh) {\n setupPolling();\n }\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_1__timelines__[\"o\" /* disconnectTimeline */])(timelineId));\n },\n received: function received(data) {\n switch (data.event) {\n case 'update':\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_1__timelines__[\"C\" /* updateTimeline */])(timelineId, JSON.parse(data.payload)));\n break;\n case 'delete':\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_1__timelines__[\"n\" /* deleteFromTimelines */])(data.payload));\n break;\n case 'notification':\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_2__notifications__[\"n\" /* updateNotifications */])(JSON.parse(data.payload), messages, locale));\n break;\n }\n },\n reconnected: function reconnected() {\n if (pollingRefresh) {\n clearPolling();\n pollingRefresh(dispatch);\n }\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_1__timelines__[\"m\" /* connectTimeline */])(timelineId));\n }\n });\n\n var disconnect = function disconnect() {\n if (subscription) {\n subscription.close();\n }\n clearPolling();\n };\n\n return disconnect;\n };\n}\n\nfunction refreshHomeTimelineAndNotification(dispatch) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_1__timelines__[\"z\" /* refreshHomeTimeline */])());\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_2__notifications__[\"l\" /* refreshNotifications */])());\n}\n\nvar connectUserStream = function connectUserStream() {\n return connectTimelineStream('home', 'user', refreshHomeTimelineAndNotification);\n};\nvar connectCommunityStream = function connectCommunityStream() {\n return connectTimelineStream('community', 'public:local');\n};\nvar connectMediaStream = function connectMediaStream() {\n return connectTimelineStream('community', 'public:local');\n};\nvar connectPublicStream = function connectPublicStream() {\n return connectTimelineStream('public', 'public');\n};\nvar connectHashtagStream = function connectHashtagStream(tag) {\n return connectTimelineStream('hashtag:' + tag, 'hashtag&tag=' + tag);\n};\n\n/***/ }),\n\n/***/ 275:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = getStream;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_websocket_js__ = __webpack_require__(276);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_websocket_js___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_websocket_js__);\n\n\nfunction getStream(streamingAPIBaseURL, accessToken, stream, _ref) {\n var connected = _ref.connected,\n received = _ref.received,\n disconnected = _ref.disconnected,\n reconnected = _ref.reconnected;\n\n var ws = new __WEBPACK_IMPORTED_MODULE_0_websocket_js___default.a(streamingAPIBaseURL + '/api/v1/streaming/?access_token=' + accessToken + '&stream=' + stream);\n\n ws.onopen = connected;\n ws.onmessage = function (e) {\n return received(JSON.parse(e.data));\n };\n ws.onclose = disconnected;\n ws.onreconnect = reconnected;\n\n return ws;\n};\n\n/***/ }),\n\n/***/ 276:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n 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);\n }\n }return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);if (staticProps) defineProperties(Constructor, staticProps);return Constructor;\n };\n}();function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}var backoff = __webpack_require__(277);var WebSocketClient = function () {\n /**\n * @param url DOMString The URL to which to connect; this should be the URL to which the WebSocket server will respond.\n * @param protocols DOMString|DOMString[] Either a single protocol string or an array of protocol strings. These strings are used to indicate sub-protocols, so that a single server can implement multiple WebSocket sub-protocols (for example, you might want one server to be able to handle different types of interactions depending on the specified protocol). If you don't specify a protocol string, an empty string is assumed.\n */function WebSocketClient(url, protocols) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};_classCallCheck(this, WebSocketClient);this.url = url;this.protocols = protocols;this.reconnectEnabled = true;this.listeners = {};this.backoff = backoff[options.backoff || 'fibonacci'](options);this.backoff.on('backoff', this.onBackoffStart.bind(this));this.backoff.on('ready', this.onBackoffReady.bind(this));this.backoff.on('fail', this.onBackoffFail.bind(this));this.open();\n }_createClass(WebSocketClient, [{ key: 'open', value: function open() {\n var reconnect = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;this.isReconnect = reconnect;this.ws = new WebSocket(this.url, this.protocols);this.ws.onclose = this.onCloseCallback.bind(this);this.ws.onerror = this.onErrorCallback.bind(this);this.ws.onmessage = this.onMessageCallback.bind(this);this.ws.onopen = this.onOpenCallback.bind(this);\n } /**\n * @ignore\n */ }, { key: 'onBackoffStart', value: function onBackoffStart(number, delay) {} /**\n * @ignore\n */ }, { key: 'onBackoffReady', value: function onBackoffReady(number, delay) {\n // console.log(\"onBackoffReady\", number + ' ' + delay + 'ms');\n this.open(true);\n } /**\n * @ignore\n */ }, { key: 'onBackoffFail', value: function onBackoffFail() {} /**\n * @ignore\n */ }, { key: 'onCloseCallback', value: function onCloseCallback() {\n if (!this.isReconnect && this.listeners['onclose']) this.listeners['onclose'].apply(null, arguments);if (this.reconnectEnabled) {\n this.backoff.backoff();\n }\n } /**\n * @ignore\n */ }, { key: 'onErrorCallback', value: function onErrorCallback() {\n if (this.listeners['onerror']) this.listeners['onerror'].apply(null, arguments);\n } /**\n * @ignore\n */ }, { key: 'onMessageCallback', value: function onMessageCallback() {\n if (this.listeners['onmessage']) this.listeners['onmessage'].apply(null, arguments);\n } /**\n * @ignore\n */ }, { key: 'onOpenCallback', value: function onOpenCallback() {\n if (this.listeners['onopen']) this.listeners['onopen'].apply(null, arguments);if (this.isReconnect && this.listeners['onreconnect']) this.listeners['onreconnect'].apply(null, arguments);this.isReconnect = false;\n } /**\n * The number of bytes of data that have been queued using calls to send()\n * but not yet transmitted to the network. This value does not reset to zero\n * when the connection is closed; if you keep calling send(), this will\n * continue to climb.\n *\n * @type unsigned long\n * @readonly\n */ }, { key: 'close', /**\n * Closes the WebSocket connection or connection attempt, if any. If the\n * connection is already CLOSED, this method does nothing.\n *\n * @param code A numeric value indicating the status code explaining why the connection is being closed. If this parameter is not specified, a default value of 1000 (indicating a normal \"transaction complete\" closure) is assumed. See the list of status codes on the CloseEvent page for permitted values.\n * @param reason A human-readable string explaining why the connection is closing. This string must be no longer than 123 bytes of UTF-8 text (not characters).\n *\n * @return void\n */value: function close(code, reason) {\n if (typeof code == 'undefined') {\n code = 1000;\n }this.reconnectEnabled = false;this.ws.close(code, reason);\n } /**\n * Transmits data to the server over the WebSocket connection.\n * @param data DOMString|ArrayBuffer|Blob\n * @return void\n */ }, { key: 'send', value: function send(data) {\n this.ws.send(data);\n } /**\n * An event listener to be called when the WebSocket connection's readyState changes to CLOSED. The listener receives a CloseEvent named \"close\".\n * @param listener EventListener\n */ }, { key: 'bufferedAmount', get: function get() {\n return this.ws.bufferedAmount;\n } /**\n * The current state of the connection; this is one of the Ready state constants.\n * @type unsigned short\n * @readonly\n */ }, { key: 'readyState', get: function get() {\n return this.ws.readyState;\n } /**\n * A string indicating the type of binary data being transmitted by the\n * connection. This should be either \"blob\" if DOM Blob objects are being\n * used or \"arraybuffer\" if ArrayBuffer objects are being used.\n * @type DOMString\n */ }, { key: 'binaryType', get: function get() {\n return this.ws.binaryType;\n }, set: function set(binaryType) {\n this.ws.binaryType = binaryType;\n } /**\n * The extensions selected by the server. This is currently only the empty\n * string or a list of extensions as negotiated by the connection.\n * @type DOMString\n */ }, { key: 'extensions', get: function get() {\n return this.ws.extensions;\n }, set: function set(extensions) {\n this.ws.extensions = extensions;\n } /**\n * A string indicating the name of the sub-protocol the server selected;\n * this will be one of the strings specified in the protocols parameter when\n * creating the WebSocket object.\n * @type DOMString\n */ }, { key: 'protocol', get: function get() {\n return this.ws.protocol;\n }, set: function set(protocol) {\n this.ws.protocol = protocol;\n } }, { key: 'onclose', set: function set(listener) {\n this.listeners['onclose'] = listener;\n }, get: function get() {\n return this.listeners['onclose'];\n } /**\n * An event listener to be called when an error occurs. This is a simple event named \"error\".\n * @param listener EventListener\n */ }, { key: 'onerror', set: function set(listener) {\n this.listeners['onerror'] = listener;\n }, get: function get() {\n return this.listeners['onerror'];\n } /**\n * An event listener to be called when a message is received from the server. The listener receives a MessageEvent named \"message\".\n * @param listener EventListener\n */ }, { key: 'onmessage', set: function set(listener) {\n this.listeners['onmessage'] = listener;\n }, get: function get() {\n return this.listeners['onmessage'];\n } /**\n * An event listener to be called when the WebSocket connection's readyState changes to OPEN; this indicates that the connection is ready to send and receive data. The event is a simple one with the name \"open\".\n * @param listener EventListener\n */ }, { key: 'onopen', set: function set(listener) {\n this.listeners['onopen'] = listener;\n }, get: function get() {\n return this.listeners['onopen'];\n } /**\n * @param listener EventListener\n */ }, { key: 'onreconnect', set: function set(listener) {\n this.listeners['onreconnect'] = listener;\n }, get: function get() {\n return this.listeners['onreconnect'];\n } }]);return WebSocketClient;\n}(); /**\n * The connection is not yet open.\n */WebSocketClient.CONNECTING = WebSocket.CONNECTING; /**\n * The connection is open and ready to communicate.\n */WebSocketClient.OPEN = WebSocket.OPEN; /**\n * The connection is in the process of closing.\n */WebSocketClient.CLOSING = WebSocket.CLOSING; /**\n * The connection is closed or couldn't be opened.\n */WebSocketClient.CLOSED = WebSocket.CLOSED;exports.default = WebSocketClient;\n\n/***/ }),\n\n/***/ 277:\n/***/ (function(module, exports, __webpack_require__) {\n\n// Copyright (c) 2012 Mathieu Turcotte\n// Licensed under the MIT license.\n\nvar Backoff = __webpack_require__(155);\nvar ExponentialBackoffStrategy = __webpack_require__(282);\nvar FibonacciBackoffStrategy = __webpack_require__(157);\nvar FunctionCall = __webpack_require__(283);\n\nmodule.exports.Backoff = Backoff;\nmodule.exports.FunctionCall = FunctionCall;\nmodule.exports.FibonacciStrategy = FibonacciBackoffStrategy;\nmodule.exports.ExponentialStrategy = ExponentialBackoffStrategy;\n\n// Constructs a Fibonacci backoff.\nmodule.exports.fibonacci = function (options) {\n return new Backoff(new FibonacciBackoffStrategy(options));\n};\n\n// Constructs an exponential backoff.\nmodule.exports.exponential = function (options) {\n return new Backoff(new ExponentialBackoffStrategy(options));\n};\n\n// Constructs a FunctionCall for the given function and arguments.\nmodule.exports.call = function (fn, vargs, callback) {\n var args = Array.prototype.slice.call(arguments);\n fn = args[0];\n vargs = args.slice(1, args.length - 1);\n callback = args[args.length - 1];\n return new FunctionCall(fn, vargs, callback);\n};\n\n/***/ }),\n\n/***/ 278:\n/***/ (function(module, exports, __webpack_require__) {\n\n/*\n * Copyright (c) 2012 Mathieu Turcotte\n * Licensed under the MIT license.\n */\n\nvar util = __webpack_require__(32);\n\nvar errors = module.exports = __webpack_require__(281);\n\nfunction failCheck(ExceptionConstructor, callee, messageFormat, formatArgs) {\n messageFormat = messageFormat || '';\n var message = util.format.apply(this, [messageFormat].concat(formatArgs));\n var error = new ExceptionConstructor(message);\n Error.captureStackTrace(error, callee);\n throw error;\n}\n\nfunction failArgumentCheck(callee, message, formatArgs) {\n failCheck(errors.IllegalArgumentError, callee, message, formatArgs);\n}\n\nfunction failStateCheck(callee, message, formatArgs) {\n failCheck(errors.IllegalStateError, callee, message, formatArgs);\n}\n\nmodule.exports.checkArgument = function (value, message) {\n if (!value) {\n failArgumentCheck(arguments.callee, message, Array.prototype.slice.call(arguments, 2));\n }\n};\n\nmodule.exports.checkState = function (value, message) {\n if (!value) {\n failStateCheck(arguments.callee, message, Array.prototype.slice.call(arguments, 2));\n }\n};\n\nmodule.exports.checkIsDef = function (value, message) {\n if (value !== undefined) {\n return value;\n }\n\n failArgumentCheck(arguments.callee, message || 'Expected value to be defined but was undefined.', Array.prototype.slice.call(arguments, 2));\n};\n\nmodule.exports.checkIsDefAndNotNull = function (value, message) {\n // Note that undefined == null.\n if (value != null) {\n return value;\n }\n\n failArgumentCheck(arguments.callee, message || 'Expected value to be defined and not null but got \"' + typeOf(value) + '\".', Array.prototype.slice.call(arguments, 2));\n};\n\n// Fixed version of the typeOf operator which returns 'null' for null values\n// and 'array' for arrays.\nfunction typeOf(value) {\n var s = typeof value;\n if (s == 'object') {\n if (!value) {\n return 'null';\n } else if (value instanceof Array) {\n return 'array';\n }\n }\n return s;\n}\n\nfunction typeCheck(expect) {\n return function (value, message) {\n var type = typeOf(value);\n\n if (type == expect) {\n return value;\n }\n\n failArgumentCheck(arguments.callee, message || 'Expected \"' + expect + '\" but got \"' + type + '\".', Array.prototype.slice.call(arguments, 2));\n };\n}\n\nmodule.exports.checkIsString = typeCheck('string');\nmodule.exports.checkIsArray = typeCheck('array');\nmodule.exports.checkIsNumber = typeCheck('number');\nmodule.exports.checkIsBoolean = typeCheck('boolean');\nmodule.exports.checkIsFunction = typeCheck('function');\nmodule.exports.checkIsObject = typeCheck('object');\n\n/***/ }),\n\n/***/ 279:\n/***/ (function(module, exports) {\n\nmodule.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object' && typeof arg.copy === 'function' && typeof arg.fill === 'function' && typeof arg.readUInt8 === 'function';\n};\n\n/***/ }),\n\n/***/ 280:\n/***/ (function(module, exports) {\n\nif (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n };\n}\n\n/***/ }),\n\n/***/ 281:\n/***/ (function(module, exports, __webpack_require__) {\n\n/*\n * Copyright (c) 2012 Mathieu Turcotte\n * Licensed under the MIT license.\n */\n\nvar util = __webpack_require__(32);\n\nfunction IllegalArgumentError(message) {\n Error.call(this, message);\n this.message = message;\n}\nutil.inherits(IllegalArgumentError, Error);\n\nIllegalArgumentError.prototype.name = 'IllegalArgumentError';\n\nfunction IllegalStateError(message) {\n Error.call(this, message);\n this.message = message;\n}\nutil.inherits(IllegalStateError, Error);\n\nIllegalStateError.prototype.name = 'IllegalStateError';\n\nmodule.exports.IllegalStateError = IllegalStateError;\nmodule.exports.IllegalArgumentError = IllegalArgumentError;\n\n/***/ }),\n\n/***/ 282:\n/***/ (function(module, exports, __webpack_require__) {\n\n// Copyright (c) 2012 Mathieu Turcotte\n// Licensed under the MIT license.\n\nvar util = __webpack_require__(32);\nvar precond = __webpack_require__(93);\n\nvar BackoffStrategy = __webpack_require__(156);\n\n// Exponential backoff strategy.\nfunction ExponentialBackoffStrategy(options) {\n BackoffStrategy.call(this, options);\n this.backoffDelay_ = 0;\n this.nextBackoffDelay_ = this.getInitialDelay();\n this.factor_ = ExponentialBackoffStrategy.DEFAULT_FACTOR;\n\n if (options && options.factor !== undefined) {\n precond.checkArgument(options.factor > 1, 'Exponential factor should be greater than 1 but got %s.', options.factor);\n this.factor_ = options.factor;\n }\n}\nutil.inherits(ExponentialBackoffStrategy, BackoffStrategy);\n\n// Default multiplication factor used to compute the next backoff delay from\n// the current one. The value can be overridden by passing a custom factor as\n// part of the options.\nExponentialBackoffStrategy.DEFAULT_FACTOR = 2;\n\nExponentialBackoffStrategy.prototype.next_ = function () {\n this.backoffDelay_ = Math.min(this.nextBackoffDelay_, this.getMaxDelay());\n this.nextBackoffDelay_ = this.backoffDelay_ * this.factor_;\n return this.backoffDelay_;\n};\n\nExponentialBackoffStrategy.prototype.reset_ = function () {\n this.backoffDelay_ = 0;\n this.nextBackoffDelay_ = this.getInitialDelay();\n};\n\nmodule.exports = ExponentialBackoffStrategy;\n\n/***/ }),\n\n/***/ 283:\n/***/ (function(module, exports, __webpack_require__) {\n\n// Copyright (c) 2012 Mathieu Turcotte\n// Licensed under the MIT license.\n\nvar events = __webpack_require__(92);\nvar precond = __webpack_require__(93);\nvar util = __webpack_require__(32);\n\nvar Backoff = __webpack_require__(155);\nvar FibonacciBackoffStrategy = __webpack_require__(157);\n\n// Wraps a function to be called in a backoff loop.\nfunction FunctionCall(fn, args, callback) {\n events.EventEmitter.call(this);\n\n precond.checkIsFunction(fn, 'Expected fn to be a function.');\n precond.checkIsArray(args, 'Expected args to be an array.');\n precond.checkIsFunction(callback, 'Expected callback to be a function.');\n\n this.function_ = fn;\n this.arguments_ = args;\n this.callback_ = callback;\n this.lastResult_ = [];\n this.numRetries_ = 0;\n\n this.backoff_ = null;\n this.strategy_ = null;\n this.failAfter_ = -1;\n this.retryPredicate_ = FunctionCall.DEFAULT_RETRY_PREDICATE_;\n\n this.state_ = FunctionCall.State_.PENDING;\n}\nutil.inherits(FunctionCall, events.EventEmitter);\n\n// States in which the call can be.\nFunctionCall.State_ = {\n // Call isn't started yet.\n PENDING: 0,\n // Call is in progress.\n RUNNING: 1,\n // Call completed successfully which means that either the wrapped function\n // returned successfully or the maximal number of backoffs was reached.\n COMPLETED: 2,\n // The call was aborted.\n ABORTED: 3\n};\n\n// The default retry predicate which considers any error as retriable.\nFunctionCall.DEFAULT_RETRY_PREDICATE_ = function (err) {\n return true;\n};\n\n// Checks whether the call is pending.\nFunctionCall.prototype.isPending = function () {\n return this.state_ == FunctionCall.State_.PENDING;\n};\n\n// Checks whether the call is in progress.\nFunctionCall.prototype.isRunning = function () {\n return this.state_ == FunctionCall.State_.RUNNING;\n};\n\n// Checks whether the call is completed.\nFunctionCall.prototype.isCompleted = function () {\n return this.state_ == FunctionCall.State_.COMPLETED;\n};\n\n// Checks whether the call is aborted.\nFunctionCall.prototype.isAborted = function () {\n return this.state_ == FunctionCall.State_.ABORTED;\n};\n\n// Sets the backoff strategy to use. Can only be called before the call is\n// started otherwise an exception will be thrown.\nFunctionCall.prototype.setStrategy = function (strategy) {\n precond.checkState(this.isPending(), 'FunctionCall in progress.');\n this.strategy_ = strategy;\n return this; // Return this for chaining.\n};\n\n// Sets the predicate which will be used to determine whether the errors\n// returned from the wrapped function should be retried or not, e.g. a\n// network error would be retriable while a type error would stop the\n// function call.\nFunctionCall.prototype.retryIf = function (retryPredicate) {\n precond.checkState(this.isPending(), 'FunctionCall in progress.');\n this.retryPredicate_ = retryPredicate;\n return this;\n};\n\n// Returns all intermediary results returned by the wrapped function since\n// the initial call.\nFunctionCall.prototype.getLastResult = function () {\n return this.lastResult_.concat();\n};\n\n// Returns the number of times the wrapped function call was retried.\nFunctionCall.prototype.getNumRetries = function () {\n return this.numRetries_;\n};\n\n// Sets the backoff limit.\nFunctionCall.prototype.failAfter = function (maxNumberOfRetry) {\n precond.checkState(this.isPending(), 'FunctionCall in progress.');\n this.failAfter_ = maxNumberOfRetry;\n return this; // Return this for chaining.\n};\n\n// Aborts the call.\nFunctionCall.prototype.abort = function () {\n if (this.isCompleted() || this.isAborted()) {\n return;\n }\n\n if (this.isRunning()) {\n this.backoff_.reset();\n }\n\n this.state_ = FunctionCall.State_.ABORTED;\n this.lastResult_ = [new Error('Backoff aborted.')];\n this.emit('abort');\n this.doCallback_();\n};\n\n// Initiates the call to the wrapped function. Accepts an optional factory\n// function used to create the backoff instance; used when testing.\nFunctionCall.prototype.start = function (backoffFactory) {\n precond.checkState(!this.isAborted(), 'FunctionCall is aborted.');\n precond.checkState(this.isPending(), 'FunctionCall already started.');\n\n var strategy = this.strategy_ || new FibonacciBackoffStrategy();\n\n this.backoff_ = backoffFactory ? backoffFactory(strategy) : new Backoff(strategy);\n\n this.backoff_.on('ready', this.doCall_.bind(this, true /* isRetry */));\n this.backoff_.on('fail', this.doCallback_.bind(this));\n this.backoff_.on('backoff', this.handleBackoff_.bind(this));\n\n if (this.failAfter_ > 0) {\n this.backoff_.failAfter(this.failAfter_);\n }\n\n this.state_ = FunctionCall.State_.RUNNING;\n this.doCall_(false /* isRetry */);\n};\n\n// Calls the wrapped function.\nFunctionCall.prototype.doCall_ = function (isRetry) {\n if (isRetry) {\n this.numRetries_++;\n }\n var eventArgs = ['call'].concat(this.arguments_);\n events.EventEmitter.prototype.emit.apply(this, eventArgs);\n var callback = this.handleFunctionCallback_.bind(this);\n this.function_.apply(null, this.arguments_.concat(callback));\n};\n\n// Calls the wrapped function's callback with the last result returned by the\n// wrapped function.\nFunctionCall.prototype.doCallback_ = function () {\n this.callback_.apply(null, this.lastResult_);\n};\n\n// Handles wrapped function's completion. This method acts as a replacement\n// for the original callback function.\nFunctionCall.prototype.handleFunctionCallback_ = function () {\n if (this.isAborted()) {\n return;\n }\n\n var args = Array.prototype.slice.call(arguments);\n this.lastResult_ = args; // Save last callback arguments.\n events.EventEmitter.prototype.emit.apply(this, ['callback'].concat(args));\n\n var err = args[0];\n if (err && this.retryPredicate_(err)) {\n this.backoff_.backoff(err);\n } else {\n this.state_ = FunctionCall.State_.COMPLETED;\n this.doCallback_();\n }\n};\n\n// Handles the backoff event by reemitting it.\nFunctionCall.prototype.handleBackoff_ = function (number, delay, err) {\n this.emit('backoff', number, delay, err);\n};\n\nmodule.exports = FunctionCall;\n\n/***/ }),\n\n/***/ 32:\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global, process) {// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function (f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function (x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s':\n return String(args[i++]);\n case '%d':\n return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function (fn, msg) {\n // Allow for deprecating things in the process of starting up.\n if (isUndefined(global.process)) {\n return function () {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n if (process.noDeprecation === true) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\nvar debugs = {};\nvar debugEnviron;\nexports.debuglog = function (set) {\n if (isUndefined(debugEnviron)) debugEnviron = process.env.NODE_DEBUG || '';\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n var pid = process.pid;\n debugs[set] = function () {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function () {};\n }\n }\n return debugs[set];\n};\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold': [1, 22],\n 'italic': [3, 23],\n 'underline': [4, 24],\n 'inverse': [7, 27],\n 'white': [37, 39],\n 'grey': [90, 39],\n 'black': [30, 39],\n 'blue': [34, 39],\n 'cyan': [36, 39],\n 'green': [32, 39],\n 'magenta': [35, 39],\n 'red': [31, 39],\n 'yellow': [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str + '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function (val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect && value && isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value) && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '',\n array = false,\n braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function (key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value)) return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '').replace(/'/g, \"\\\\'\").replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value)) return ctx.stylize('' + value, 'number');\n if (isBoolean(value)) return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value)) return ctx.stylize('null', 'null');\n}\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function (key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, key, true));\n }\n });\n return output;\n}\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function (line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function (line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\").replace(/\\\\\"/g, '\"').replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function (prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] + (base === '' ? '' : base + '\\n ') + ' ' + output.join(',\\n ') + ' ' + braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) && (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null || typeof arg === 'boolean' || typeof arg === 'number' || typeof arg === 'string' || typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = __webpack_require__(279);\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()), pad(d.getMinutes()), pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function () {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = __webpack_require__(280);\n\nexports._extend = function (origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(44), __webpack_require__(34)))\n\n/***/ }),\n\n/***/ 757:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return HashtagTimeline; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_react__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_4_react__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_react_redux__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__ui_containers_status_list_container__ = __webpack_require__(158);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__components_column__ = __webpack_require__(99);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__components_column_header__ = __webpack_require__(98);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__actions_timelines__ = __webpack_require__(16);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__actions_columns__ = __webpack_require__(273);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11_react_intl__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__actions_streaming__ = __webpack_require__(274);\n\n\n\n\n\nvar _dec, _class;\n\n\n\n\n\n\n\n\n\n\n\n\nvar mapStateToProps = function mapStateToProps(state, props) {\n return {\n hasUnread: state.getIn(['timelines', 'hashtag:' + props.params.id, 'unread']) > 0\n };\n};\n\nvar HashtagTimeline = (_dec = Object(__WEBPACK_IMPORTED_MODULE_5_react_redux__[\"connect\"])(mapStateToProps), _dec(_class = function (_React$PureComponent) {\n __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits___default()(HashtagTimeline, _React$PureComponent);\n\n function HashtagTimeline() {\n var _temp, _this, _ret;\n\n __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default()(this, HashtagTimeline);\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 = __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default()(this, _React$PureComponent.call.apply(_React$PureComponent, [this].concat(args))), _this), _this.handlePin = function () {\n var _this$props = _this.props,\n columnId = _this$props.columnId,\n dispatch = _this$props.dispatch;\n\n\n if (columnId) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_10__actions_columns__[\"f\" /* removeColumn */])(columnId));\n } else {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_10__actions_columns__[\"d\" /* addColumn */])('HASHTAG', { id: _this.props.params.id }));\n }\n }, _this.handleMove = function (dir) {\n var _this$props2 = _this.props,\n columnId = _this$props2.columnId,\n dispatch = _this$props2.dispatch;\n\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_10__actions_columns__[\"e\" /* moveColumn */])(columnId, dir));\n }, _this.handleHeaderClick = function () {\n _this.column.scrollTop();\n }, _this.setRef = function (c) {\n _this.column = c;\n }, _this.handleLoadMore = function () {\n _this.props.dispatch(Object(__WEBPACK_IMPORTED_MODULE_9__actions_timelines__[\"s\" /* expandHashtagTimeline */])(_this.props.params.id));\n }, _temp), __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default()(_this, _ret);\n }\n\n HashtagTimeline.prototype._subscribe = function _subscribe(dispatch, id) {\n this.disconnect = dispatch(Object(__WEBPACK_IMPORTED_MODULE_12__actions_streaming__[\"b\" /* connectHashtagStream */])(id));\n };\n\n HashtagTimeline.prototype._unsubscribe = function _unsubscribe() {\n if (this.disconnect) {\n this.disconnect();\n this.disconnect = null;\n }\n };\n\n HashtagTimeline.prototype.componentDidMount = function componentDidMount() {\n var dispatch = this.props.dispatch;\n var id = this.props.params.id;\n\n\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_9__actions_timelines__[\"y\" /* refreshHashtagTimeline */])(id));\n this._subscribe(dispatch, id);\n };\n\n HashtagTimeline.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (nextProps.params.id !== this.props.params.id) {\n this.props.dispatch(Object(__WEBPACK_IMPORTED_MODULE_9__actions_timelines__[\"y\" /* refreshHashtagTimeline */])(nextProps.params.id));\n this._unsubscribe();\n this._subscribe(this.props.dispatch, nextProps.params.id);\n }\n };\n\n HashtagTimeline.prototype.componentWillUnmount = function componentWillUnmount() {\n this._unsubscribe();\n };\n\n HashtagTimeline.prototype.render = function render() {\n var _props = this.props,\n hasUnread = _props.hasUnread,\n columnId = _props.columnId,\n multiColumn = _props.multiColumn;\n var id = this.props.params.id;\n\n var pinned = !!columnId;\n\n return __WEBPACK_IMPORTED_MODULE_4_react___default.a.createElement(\n __WEBPACK_IMPORTED_MODULE_7__components_column__[\"a\" /* default */],\n { ref: this.setRef },\n __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_8__components_column_header__[\"a\" /* default */], {\n icon: 'hashtag',\n active: hasUnread,\n title: id,\n onPin: this.handlePin,\n onMove: this.handleMove,\n onClick: this.handleHeaderClick,\n pinned: pinned,\n multiColumn: multiColumn,\n showBackButton: true\n }),\n __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_6__ui_containers_status_list_container__[\"a\" /* default */], {\n trackScroll: !pinned,\n scrollKey: 'hashtag_timeline-' + columnId,\n timelineId: 'hashtag:' + id,\n loadMore: this.handleLoadMore,\n emptyMessage: __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_11_react_intl__[\"b\" /* FormattedMessage */], {\n id: 'empty_column.hashtag',\n defaultMessage: 'There is nothing in this hashtag yet.'\n })\n })\n );\n };\n\n return HashtagTimeline;\n}(__WEBPACK_IMPORTED_MODULE_4_react___default.a.PureComponent)) || _class);\n\n\n/***/ }),\n\n/***/ 92:\n/***/ (function(module, exports) {\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nfunction EventEmitter() {\n this._events = this._events || {};\n this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function (n) {\n if (!isNumber(n) || n < 0 || isNaN(n)) throw TypeError('n must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nEventEmitter.prototype.emit = function (type) {\n var er, handler, len, args, i, listeners;\n\n if (!this._events) this._events = {};\n\n // If there is no 'error' event listener then throw.\n if (type === 'error') {\n if (!this._events.error || isObject(this._events.error) && !this._events.error.length) {\n er = arguments[1];\n if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n }\n }\n\n handler = this._events[type];\n\n if (isUndefined(handler)) return false;\n\n if (isFunction(handler)) {\n switch (arguments.length) {\n // fast cases\n case 1:\n handler.call(this);\n break;\n case 2:\n handler.call(this, arguments[1]);\n break;\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n // slower\n default:\n args = Array.prototype.slice.call(arguments, 1);\n handler.apply(this, args);\n }\n } else if (isObject(handler)) {\n args = Array.prototype.slice.call(arguments, 1);\n listeners = handler.slice();\n len = listeners.length;\n for (i = 0; i < len; i++) listeners[i].apply(this, args);\n }\n\n return true;\n};\n\nEventEmitter.prototype.addListener = function (type, listener) {\n var m;\n\n if (!isFunction(listener)) throw TypeError('listener must be a function');\n\n if (!this._events) this._events = {};\n\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (this._events.newListener) this.emit('newListener', type, isFunction(listener.listener) ? listener.listener : listener);\n\n if (!this._events[type])\n // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;else if (isObject(this._events[type]))\n // If we've already got an array, just append.\n this._events[type].push(listener);else\n // Adding the second element, need to change to array.\n this._events[type] = [this._events[type], listener];\n\n // Check for listener leak\n if (isObject(this._events[type]) && !this._events[type].warned) {\n if (!isUndefined(this._maxListeners)) {\n m = this._maxListeners;\n } else {\n m = EventEmitter.defaultMaxListeners;\n }\n\n if (m && m > 0 && this._events[type].length > m) {\n this._events[type].warned = true;\n console.error('(node) warning: possible EventEmitter memory ' + 'leak detected. %d listeners added. ' + 'Use emitter.setMaxListeners() to increase limit.', this._events[type].length);\n if (typeof console.trace === 'function') {\n // not supported in IE 10\n console.trace();\n }\n }\n }\n\n return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function (type, listener) {\n if (!isFunction(listener)) throw TypeError('listener must be a function');\n\n var fired = false;\n\n function g() {\n this.removeListener(type, g);\n\n if (!fired) {\n fired = true;\n listener.apply(this, arguments);\n }\n }\n\n g.listener = listener;\n this.on(type, g);\n\n return this;\n};\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener = function (type, listener) {\n var list, position, length, i;\n\n if (!isFunction(listener)) throw TypeError('listener must be a function');\n\n if (!this._events || !this._events[type]) return this;\n\n list = this._events[type];\n length = list.length;\n position = -1;\n\n if (list === listener || isFunction(list.listener) && list.listener === listener) {\n delete this._events[type];\n if (this._events.removeListener) this.emit('removeListener', type, listener);\n } else if (isObject(list)) {\n for (i = length; i-- > 0;) {\n if (list[i] === listener || list[i].listener && list[i].listener === listener) {\n position = i;\n break;\n }\n }\n\n if (position < 0) return this;\n\n if (list.length === 1) {\n list.length = 0;\n delete this._events[type];\n } else {\n list.splice(position, 1);\n }\n\n if (this._events.removeListener) this.emit('removeListener', type, listener);\n }\n\n return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function (type) {\n var key, listeners;\n\n if (!this._events) return this;\n\n // not listening for removeListener, no need to emit\n if (!this._events.removeListener) {\n if (arguments.length === 0) this._events = {};else if (this._events[type]) delete this._events[type];\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n for (key in this._events) {\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = {};\n return this;\n }\n\n listeners = this._events[type];\n\n if (isFunction(listeners)) {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n while (listeners.length) this.removeListener(type, listeners[listeners.length - 1]);\n }\n delete this._events[type];\n\n return this;\n};\n\nEventEmitter.prototype.listeners = function (type) {\n var ret;\n if (!this._events || !this._events[type]) ret = [];else if (isFunction(this._events[type])) ret = [this._events[type]];else ret = this._events[type].slice();\n return ret;\n};\n\nEventEmitter.prototype.listenerCount = function (type) {\n if (this._events) {\n var evlistener = this._events[type];\n\n if (isFunction(evlistener)) return 1;else if (evlistener) return evlistener.length;\n }\n return 0;\n};\n\nEventEmitter.listenerCount = function (emitter, type) {\n return emitter.listenerCount(type);\n};\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n\n/***/ }),\n\n/***/ 93:\n/***/ (function(module, exports, __webpack_require__) {\n\n/*\n * Copyright (c) 2012 Mathieu Turcotte\n * Licensed under the MIT license.\n */\n\nmodule.exports = __webpack_require__(278);\n\n/***/ })\n\n});\n\n\n// WEBPACK FOOTER //\n// features/hashtag_timeline-3ed7e7bf18fd2fc04c9e.js","// Copyright (c) 2012 Mathieu Turcotte\n// Licensed under the MIT license.\n\nvar events = require('events');\nvar precond = require('precond');\nvar util = require('util');\n\n// A class to hold the state of a backoff operation. Accepts a backoff strategy\n// to generate the backoff delays.\nfunction Backoff(backoffStrategy) {\n events.EventEmitter.call(this);\n\n this.backoffStrategy_ = backoffStrategy;\n this.maxNumberOfRetry_ = -1;\n this.backoffNumber_ = 0;\n this.backoffDelay_ = 0;\n this.timeoutID_ = -1;\n\n this.handlers = {\n backoff: this.onBackoff_.bind(this)\n };\n}\nutil.inherits(Backoff, events.EventEmitter);\n\n// Sets a limit, greater than 0, on the maximum number of backoffs. A 'fail'\n// event will be emitted when the limit is reached.\nBackoff.prototype.failAfter = function(maxNumberOfRetry) {\n precond.checkArgument(maxNumberOfRetry > 0,\n 'Expected a maximum number of retry greater than 0 but got %s.',\n maxNumberOfRetry);\n\n this.maxNumberOfRetry_ = maxNumberOfRetry;\n};\n\n// Starts a backoff operation. Accepts an optional parameter to let the\n// listeners know why the backoff operation was started.\nBackoff.prototype.backoff = function(err) {\n precond.checkState(this.timeoutID_ === -1, 'Backoff in progress.');\n\n if (this.backoffNumber_ === this.maxNumberOfRetry_) {\n this.emit('fail', err);\n this.reset();\n } else {\n this.backoffDelay_ = this.backoffStrategy_.next();\n this.timeoutID_ = setTimeout(this.handlers.backoff, this.backoffDelay_);\n this.emit('backoff', this.backoffNumber_, this.backoffDelay_, err);\n }\n};\n\n// Handles the backoff timeout completion.\nBackoff.prototype.onBackoff_ = function() {\n this.timeoutID_ = -1;\n this.emit('ready', this.backoffNumber_, this.backoffDelay_);\n this.backoffNumber_++;\n};\n\n// Stops any backoff operation and resets the backoff delay to its inital value.\nBackoff.prototype.reset = function() {\n this.backoffNumber_ = 0;\n this.backoffStrategy_.reset();\n clearTimeout(this.timeoutID_);\n this.timeoutID_ = -1;\n};\n\nmodule.exports = Backoff;\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/backoff/lib/backoff.js","// Copyright (c) 2012 Mathieu Turcotte\n// Licensed under the MIT license.\n\nvar events = require('events');\nvar util = require('util');\n\nfunction isDef(value) {\n return value !== undefined && value !== null;\n}\n\n// Abstract class defining the skeleton for the backoff strategies. Accepts an\n// object holding the options for the backoff strategy:\n//\n// * `randomisationFactor`: The randomisation factor which must be between 0\n// and 1 where 1 equates to a randomization factor of 100% and 0 to no\n// randomization.\n// * `initialDelay`: The backoff initial delay in milliseconds.\n// * `maxDelay`: The backoff maximal delay in milliseconds.\nfunction BackoffStrategy(options) {\n options = options || {};\n\n if (isDef(options.initialDelay) && options.initialDelay < 1) {\n throw new Error('The initial timeout must be greater than 0.');\n } else if (isDef(options.maxDelay) && options.maxDelay < 1) {\n throw new Error('The maximal timeout must be greater than 0.');\n }\n\n this.initialDelay_ = options.initialDelay || 100;\n this.maxDelay_ = options.maxDelay || 10000;\n\n if (this.maxDelay_ <= this.initialDelay_) {\n throw new Error('The maximal backoff delay must be ' +\n 'greater than the initial backoff delay.');\n }\n\n if (isDef(options.randomisationFactor) &&\n (options.randomisationFactor < 0 || options.randomisationFactor > 1)) {\n throw new Error('The randomisation factor must be between 0 and 1.');\n }\n\n this.randomisationFactor_ = options.randomisationFactor || 0;\n}\n\n// Gets the maximal backoff delay.\nBackoffStrategy.prototype.getMaxDelay = function() {\n return this.maxDelay_;\n};\n\n// Gets the initial backoff delay.\nBackoffStrategy.prototype.getInitialDelay = function() {\n return this.initialDelay_;\n};\n\n// Template method that computes and returns the next backoff delay in\n// milliseconds.\nBackoffStrategy.prototype.next = function() {\n var backoffDelay = this.next_();\n var randomisationMultiple = 1 + Math.random() * this.randomisationFactor_;\n var randomizedDelay = Math.round(backoffDelay * randomisationMultiple);\n return randomizedDelay;\n};\n\n// Computes and returns the next backoff delay. Intended to be overridden by\n// subclasses.\nBackoffStrategy.prototype.next_ = function() {\n throw new Error('BackoffStrategy.next_() unimplemented.');\n};\n\n// Template method that resets the backoff delay to its initial value.\nBackoffStrategy.prototype.reset = function() {\n this.reset_();\n};\n\n// Resets the backoff delay to its initial value. Intended to be overridden by\n// subclasses.\nBackoffStrategy.prototype.reset_ = function() {\n throw new Error('BackoffStrategy.reset_() unimplemented.');\n};\n\nmodule.exports = BackoffStrategy;\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/backoff/lib/strategy/strategy.js","// Copyright (c) 2012 Mathieu Turcotte\n// Licensed under the MIT license.\n\nvar util = require('util');\n\nvar BackoffStrategy = require('./strategy');\n\n// Fibonacci backoff strategy.\nfunction FibonacciBackoffStrategy(options) {\n BackoffStrategy.call(this, options);\n this.backoffDelay_ = 0;\n this.nextBackoffDelay_ = this.getInitialDelay();\n}\nutil.inherits(FibonacciBackoffStrategy, BackoffStrategy);\n\nFibonacciBackoffStrategy.prototype.next_ = function() {\n var backoffDelay = Math.min(this.nextBackoffDelay_, this.getMaxDelay());\n this.nextBackoffDelay_ += this.backoffDelay_;\n this.backoffDelay_ = backoffDelay;\n return backoffDelay;\n};\n\nFibonacciBackoffStrategy.prototype.reset_ = function() {\n this.nextBackoffDelay_ = this.getInitialDelay();\n this.backoffDelay_ = 0;\n};\n\nmodule.exports = FibonacciBackoffStrategy;\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/backoff/lib/strategy/fibonacci.js","import { connect } from 'react-redux';\nimport StatusList from '../../../components/status_list';\nimport { scrollTopTimeline } from '../../../actions/timelines';\nimport { Map as ImmutableMap, List as ImmutableList } from 'immutable';\nimport { createSelector } from 'reselect';\nimport { debounce } from 'lodash';\nimport { me } from '../../../initial_state';\n\nconst makeGetStatusIds = () => createSelector([\n (state, { type }) => state.getIn(['settings', type], ImmutableMap()),\n (state, { type }) => state.getIn(['timelines', type, 'items'], ImmutableList()),\n (state) => state.get('statuses'),\n], (columnSettings, statusIds, statuses) => {\n const rawRegex = columnSettings.getIn(['regex', 'body'], '').trim();\n let regex = null;\n\n try {\n regex = rawRegex && new RegExp(rawRegex, 'i');\n } catch (e) {\n // Bad regex, don't affect filters\n }\n\n return statusIds.filter(id => {\n const statusForId = statuses.get(id);\n let showStatus = true;\n\n if (columnSettings.getIn(['shows', 'reblog']) === false) {\n showStatus = showStatus && statusForId.get('reblog') === null;\n }\n\n if (columnSettings.getIn(['shows', 'reply']) === false) {\n showStatus = showStatus && (statusForId.get('in_reply_to_id') === null || statusForId.get('in_reply_to_account_id') === me);\n }\n\n if (showStatus && regex && statusForId.get('account') !== me) {\n const searchIndex = statusForId.get('reblog') ? statuses.getIn([statusForId.get('reblog'), 'search_index']) : statusForId.get('search_index');\n showStatus = !regex.test(searchIndex);\n }\n\n return showStatus;\n });\n});\n\nconst makeMapStateToProps = () => {\n const getStatusIds = makeGetStatusIds();\n\n const mapStateToProps = (state, { timelineId }) => ({\n statusIds: getStatusIds(state, { type: timelineId }),\n isLoading: state.getIn(['timelines', timelineId, 'isLoading'], true),\n hasMore: !!state.getIn(['timelines', timelineId, 'next']),\n });\n\n return mapStateToProps;\n};\n\nconst mapDispatchToProps = (dispatch, { timelineId, loadMore }) => ({\n\n onScrollToBottom: debounce(() => {\n dispatch(scrollTopTimeline(timelineId, false));\n loadMore();\n }, 300, { leading: true }),\n\n onScrollToTop: debounce(() => {\n dispatch(scrollTopTimeline(timelineId, true));\n }, 100),\n\n onScroll: debounce(() => {\n dispatch(scrollTopTimeline(timelineId, false));\n }, 100),\n\n});\n\nexport default connect(makeMapStateToProps, mapDispatchToProps)(StatusList);\n\n\n\n// WEBPACK FOOTER //\n// ./app/javascript/mastodon/features/ui/containers/status_list_container.js","import React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport PropTypes from 'prop-types';\n\nexport default class LoadMore extends React.PureComponent {\n\n static propTypes = {\n onClick: PropTypes.func,\n visible: PropTypes.bool,\n }\n\n static defaultProps = {\n visible: true,\n }\n\n render() {\n const { visible } = this.props;\n\n return (\n <button className='load-more' disabled={!visible} style={{ visibility: visible ? 'visible' : 'hidden' }} onClick={this.props.onClick}>\n <FormattedMessage id='status.load_more' defaultMessage='Load more' />\n </button>\n );\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/javascript/mastodon/components/load_more.js","import React from 'react';\nimport { connect } from 'react-redux';\nimport Status from '../components/status';\nimport { makeGetStatus } from '../selectors';\nimport {\n replyCompose,\n mentionCompose,\n} from '../actions/compose';\nimport {\n reblog,\n favourite,\n unreblog,\n unfavourite,\n pin,\n unpin,\n} from '../actions/interactions';\nimport {\n blockAccount,\n muteAccount,\n} from '../actions/accounts';\nimport { muteStatus, unmuteStatus, deleteStatus } from '../actions/statuses';\nimport { initReport } from '../actions/reports';\nimport { openModal } from '../actions/modal';\nimport { defineMessages, injectIntl, FormattedMessage } from 'react-intl';\nimport { boostModal, deleteModal } from '../initial_state';\n\nconst messages = defineMessages({\n deleteConfirm: { id: 'confirmations.delete.confirm', defaultMessage: 'Delete' },\n deleteMessage: { id: 'confirmations.delete.message', defaultMessage: 'Are you sure you want to delete this status?' },\n blockConfirm: { id: 'confirmations.block.confirm', defaultMessage: 'Block' },\n muteConfirm: { id: 'confirmations.mute.confirm', defaultMessage: 'Mute' },\n});\n\nconst makeMapStateToProps = () => {\n const getStatus = makeGetStatus();\n\n const mapStateToProps = (state, props) => ({\n status: getStatus(state, props.id),\n });\n\n return mapStateToProps;\n};\n\nconst mapDispatchToProps = (dispatch, { intl }) => ({\n\n onReply (status, router) {\n dispatch(replyCompose(status, router));\n },\n\n onModalReblog (status) {\n dispatch(reblog(status));\n },\n\n onReblog (status, e) {\n if (status.get('reblogged')) {\n dispatch(unreblog(status));\n } else {\n if (e.shiftKey || !boostModal) {\n this.onModalReblog(status);\n } else {\n dispatch(openModal('BOOST', { status, onReblog: this.onModalReblog }));\n }\n }\n },\n\n onFavourite (status) {\n if (status.get('favourited')) {\n dispatch(unfavourite(status));\n } else {\n dispatch(favourite(status));\n }\n },\n\n onPin (status) {\n if (status.get('pinned')) {\n dispatch(unpin(status));\n } else {\n dispatch(pin(status));\n }\n },\n\n onEmbed (status) {\n dispatch(openModal('EMBED', { url: status.get('url') }));\n },\n\n onDelete (status) {\n if (!deleteModal) {\n dispatch(deleteStatus(status.get('id')));\n } else {\n dispatch(openModal('CONFIRM', {\n message: intl.formatMessage(messages.deleteMessage),\n confirm: intl.formatMessage(messages.deleteConfirm),\n onConfirm: () => dispatch(deleteStatus(status.get('id'))),\n }));\n }\n },\n\n onMention (account, router) {\n dispatch(mentionCompose(account, router));\n },\n\n onOpenMedia (media, index) {\n dispatch(openModal('MEDIA', { media, index }));\n },\n\n onOpenVideo (media, time) {\n dispatch(openModal('VIDEO', { media, time }));\n },\n\n onBlock (account) {\n dispatch(openModal('CONFIRM', {\n message: <FormattedMessage id='confirmations.block.message' defaultMessage='Are you sure you want to block {name}?' values={{ name: <strong>@{account.get('acct')}</strong> }} />,\n confirm: intl.formatMessage(messages.blockConfirm),\n onConfirm: () => dispatch(blockAccount(account.get('id'))),\n }));\n },\n\n onReport (status) {\n dispatch(initReport(status.get('account'), status));\n },\n\n onMute (account) {\n dispatch(openModal('CONFIRM', {\n message: <FormattedMessage id='confirmations.mute.message' defaultMessage='Are you sure you want to mute {name}?' values={{ name: <strong>@{account.get('acct')}</strong> }} />,\n confirm: intl.formatMessage(messages.muteConfirm),\n onConfirm: () => dispatch(muteAccount(account.get('id'))),\n }));\n },\n\n onMuteConversation (status) {\n if (status.get('muted')) {\n dispatch(unmuteStatus(status.get('id')));\n } else {\n dispatch(muteStatus(status.get('id')));\n }\n },\n\n});\n\nexport default injectIntl(connect(makeMapStateToProps, mapDispatchToProps)(Status));\n\n\n\n// WEBPACK FOOTER //\n// ./app/javascript/mastodon/containers/status_container.js","import React, { PureComponent } from 'react';\nimport { ScrollContainer } from 'react-router-scroll-4';\nimport PropTypes from 'prop-types';\nimport IntersectionObserverArticleContainer from '../containers/intersection_observer_article_container';\nimport LoadMore from './load_more';\nimport IntersectionObserverWrapper from '../features/ui/util/intersection_observer_wrapper';\nimport { throttle } from 'lodash';\nimport { List as ImmutableList } from 'immutable';\nimport classNames from 'classnames';\nimport { attachFullscreenListener, detachFullscreenListener, isFullscreen } from '../features/ui/util/fullscreen';\n\nexport default class ScrollableList extends PureComponent {\n\n static contextTypes = {\n router: PropTypes.object,\n };\n\n static propTypes = {\n scrollKey: PropTypes.string.isRequired,\n onScrollToBottom: PropTypes.func,\n onScrollToTop: PropTypes.func,\n onScroll: PropTypes.func,\n trackScroll: PropTypes.bool,\n shouldUpdateScroll: PropTypes.func,\n isLoading: PropTypes.bool,\n hasMore: PropTypes.bool,\n prepend: PropTypes.node,\n emptyMessage: PropTypes.node,\n children: PropTypes.node,\n };\n\n static defaultProps = {\n trackScroll: true,\n };\n\n state = {\n lastMouseMove: null,\n };\n\n intersectionObserverWrapper = new IntersectionObserverWrapper();\n\n handleScroll = throttle(() => {\n if (this.node) {\n const { scrollTop, scrollHeight, clientHeight } = this.node;\n const offset = scrollHeight - scrollTop - clientHeight;\n this._oldScrollPosition = scrollHeight - scrollTop;\n\n if (400 > offset && this.props.onScrollToBottom && !this.props.isLoading) {\n this.props.onScrollToBottom();\n } else if (scrollTop < 100 && this.props.onScrollToTop) {\n this.props.onScrollToTop();\n } else if (this.props.onScroll) {\n this.props.onScroll();\n }\n }\n }, 150, {\n trailing: true,\n });\n\n handleMouseMove = throttle(() => {\n this._lastMouseMove = new Date();\n }, 300);\n\n handleMouseLeave = () => {\n this._lastMouseMove = null;\n }\n\n componentDidMount () {\n this.attachScrollListener();\n this.attachIntersectionObserver();\n attachFullscreenListener(this.onFullScreenChange);\n\n // Handle initial scroll posiiton\n this.handleScroll();\n }\n\n componentDidUpdate (prevProps) {\n const someItemInserted = React.Children.count(prevProps.children) > 0 &&\n React.Children.count(prevProps.children) < React.Children.count(this.props.children) &&\n this.getFirstChildKey(prevProps) !== this.getFirstChildKey(this.props);\n\n // Reset the scroll position when a new child comes in in order not to\n // jerk the scrollbar around if you're already scrolled down the page.\n if (someItemInserted && this._oldScrollPosition && this.node.scrollTop > 0) {\n const newScrollTop = this.node.scrollHeight - this._oldScrollPosition;\n\n if (this.node.scrollTop !== newScrollTop) {\n this.node.scrollTop = newScrollTop;\n }\n } else {\n this._oldScrollPosition = this.node.scrollHeight - this.node.scrollTop;\n }\n }\n\n componentWillUnmount () {\n this.detachScrollListener();\n this.detachIntersectionObserver();\n detachFullscreenListener(this.onFullScreenChange);\n }\n\n onFullScreenChange = () => {\n this.setState({ fullscreen: isFullscreen() });\n }\n\n attachIntersectionObserver () {\n this.intersectionObserverWrapper.connect({\n root: this.node,\n rootMargin: '300% 0px',\n });\n }\n\n detachIntersectionObserver () {\n this.intersectionObserverWrapper.disconnect();\n }\n\n attachScrollListener () {\n this.node.addEventListener('scroll', this.handleScroll);\n }\n\n detachScrollListener () {\n this.node.removeEventListener('scroll', this.handleScroll);\n }\n\n getFirstChildKey (props) {\n const { children } = props;\n let firstChild = children;\n if (children instanceof ImmutableList) {\n firstChild = children.get(0);\n } else if (Array.isArray(children)) {\n firstChild = children[0];\n }\n return firstChild && firstChild.key;\n }\n\n setRef = (c) => {\n this.node = c;\n }\n\n handleLoadMore = (e) => {\n e.preventDefault();\n this.props.onScrollToBottom();\n }\n\n _recentlyMoved () {\n return this._lastMouseMove !== null && ((new Date()) - this._lastMouseMove < 600);\n }\n\n render () {\n const { children, scrollKey, trackScroll, shouldUpdateScroll, isLoading, hasMore, prepend, emptyMessage } = this.props;\n const { fullscreen } = this.state;\n const childrenCount = React.Children.count(children);\n\n const loadMore = (hasMore && childrenCount > 0) ? <LoadMore visible={!isLoading} onClick={this.handleLoadMore} /> : null;\n let scrollableArea = null;\n\n if (isLoading || childrenCount > 0 || !emptyMessage) {\n scrollableArea = (\n <div className={classNames('scrollable', { fullscreen })} ref={this.setRef} onMouseMove={this.handleMouseMove} onMouseLeave={this.handleMouseLeave}>\n <div role='feed' className='item-list'>\n {prepend}\n\n {React.Children.map(this.props.children, (child, index) => (\n <IntersectionObserverArticleContainer\n key={child.key}\n id={child.key}\n index={index}\n listLength={childrenCount}\n intersectionObserverWrapper={this.intersectionObserverWrapper}\n saveHeightKey={trackScroll ? `${this.context.router.route.location.key}:${scrollKey}` : null}\n >\n {child}\n </IntersectionObserverArticleContainer>\n ))}\n\n {loadMore}\n </div>\n </div>\n );\n } else {\n scrollableArea = (\n <div className='empty-column-indicator' ref={this.setRef}>\n {emptyMessage}\n </div>\n );\n }\n\n if (trackScroll) {\n return (\n <ScrollContainer scrollKey={scrollKey} shouldUpdateScroll={shouldUpdateScroll}>\n {scrollableArea}\n </ScrollContainer>\n );\n } else {\n return scrollableArea;\n }\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/javascript/mastodon/components/scrollable_list.js","import { connect } from 'react-redux';\nimport IntersectionObserverArticle from '../components/intersection_observer_article';\nimport { setHeight } from '../actions/height_cache';\n\nconst makeMapStateToProps = (state, props) => ({\n cachedHeight: state.getIn(['height_cache', props.saveHeightKey, props.id]),\n});\n\nconst mapDispatchToProps = (dispatch) => ({\n\n onHeightChange (key, id, height) {\n dispatch(setHeight(key, id, height));\n },\n\n});\n\nexport default connect(makeMapStateToProps, mapDispatchToProps)(IntersectionObserverArticle);\n\n\n\n// WEBPACK FOOTER //\n// ./app/javascript/mastodon/containers/intersection_observer_article_container.js","import React from 'react';\nimport PropTypes from 'prop-types';\nimport scheduleIdleTask from '../features/ui/util/schedule_idle_task';\nimport getRectFromEntry from '../features/ui/util/get_rect_from_entry';\nimport { is } from 'immutable';\n\n// Diff these props in the \"rendered\" state\nconst updateOnPropsForRendered = ['id', 'index', 'listLength'];\n// Diff these props in the \"unrendered\" state\nconst updateOnPropsForUnrendered = ['id', 'index', 'listLength', 'cachedHeight'];\n\nexport default class IntersectionObserverArticle extends React.Component {\n\n static propTypes = {\n intersectionObserverWrapper: PropTypes.object.isRequired,\n id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n index: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n listLength: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n saveHeightKey: PropTypes.string,\n cachedHeight: PropTypes.number,\n onHeightChange: PropTypes.func,\n children: PropTypes.node,\n };\n\n state = {\n isHidden: false, // set to true in requestIdleCallback to trigger un-render\n }\n\n shouldComponentUpdate (nextProps, nextState) {\n const isUnrendered = !this.state.isIntersecting && (this.state.isHidden || this.props.cachedHeight);\n const willBeUnrendered = !nextState.isIntersecting && (nextState.isHidden || nextProps.cachedHeight);\n if (!!isUnrendered !== !!willBeUnrendered) {\n // If we're going from rendered to unrendered (or vice versa) then update\n return true;\n }\n // Otherwise, diff based on props\n const propsToDiff = isUnrendered ? updateOnPropsForUnrendered : updateOnPropsForRendered;\n return !propsToDiff.every(prop => is(nextProps[prop], this.props[prop]));\n }\n\n componentDidMount () {\n const { intersectionObserverWrapper, id } = this.props;\n\n intersectionObserverWrapper.observe(\n id,\n this.node,\n this.handleIntersection\n );\n\n this.componentMounted = true;\n }\n\n componentWillUnmount () {\n const { intersectionObserverWrapper, id } = this.props;\n intersectionObserverWrapper.unobserve(id, this.node);\n\n this.componentMounted = false;\n }\n\n handleIntersection = (entry) => {\n this.entry = entry;\n\n scheduleIdleTask(this.calculateHeight);\n this.setState(this.updateStateAfterIntersection);\n }\n\n updateStateAfterIntersection = (prevState) => {\n if (prevState.isIntersecting && !this.entry.isIntersecting) {\n scheduleIdleTask(this.hideIfNotIntersecting);\n }\n return {\n isIntersecting: this.entry.isIntersecting,\n isHidden: false,\n };\n }\n\n calculateHeight = () => {\n const { onHeightChange, saveHeightKey, id } = this.props;\n // save the height of the fully-rendered element (this is expensive\n // on Chrome, where we need to fall back to getBoundingClientRect)\n this.height = getRectFromEntry(this.entry).height;\n\n if (onHeightChange && saveHeightKey) {\n onHeightChange(saveHeightKey, id, this.height);\n }\n }\n\n hideIfNotIntersecting = () => {\n if (!this.componentMounted) {\n return;\n }\n\n // When the browser gets a chance, test if we're still not intersecting,\n // and if so, set our isHidden to true to trigger an unrender. The point of\n // this is to save DOM nodes and avoid using up too much memory.\n // See: https://github.com/tootsuite/mastodon/issues/2900\n this.setState((prevState) => ({ isHidden: !prevState.isIntersecting }));\n }\n\n handleRef = (node) => {\n this.node = node;\n }\n\n render () {\n const { children, id, index, listLength, cachedHeight } = this.props;\n const { isIntersecting, isHidden } = this.state;\n\n if (!isIntersecting && (isHidden || cachedHeight)) {\n return (\n <article\n ref={this.handleRef}\n aria-posinset={index}\n aria-setsize={listLength}\n style={{ height: `${this.height || cachedHeight}px`, opacity: 0, overflow: 'hidden' }}\n data-id={id}\n tabIndex='0'\n >\n {children && React.cloneElement(children, { hidden: true })}\n </article>\n );\n }\n\n return (\n <article ref={this.handleRef} aria-posinset={index} aria-setsize={listLength} data-id={id} tabIndex='0'>\n {children && React.cloneElement(children, { hidden: false })}\n </article>\n );\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/javascript/mastodon/components/intersection_observer_article.js","// Wrapper to call requestIdleCallback() to schedule low-priority work.\n// See https://developer.mozilla.org/en-US/docs/Web/API/Background_Tasks_API\n// for a good breakdown of the concepts behind this.\n\nimport Queue from 'tiny-queue';\n\nconst taskQueue = new Queue();\nlet runningRequestIdleCallback = false;\n\nfunction runTasks(deadline) {\n while (taskQueue.length && deadline.timeRemaining() > 0) {\n taskQueue.shift()();\n }\n if (taskQueue.length) {\n requestIdleCallback(runTasks);\n } else {\n runningRequestIdleCallback = false;\n }\n}\n\nfunction scheduleIdleTask(task) {\n taskQueue.push(task);\n if (!runningRequestIdleCallback) {\n runningRequestIdleCallback = true;\n requestIdleCallback(runTasks);\n }\n}\n\nexport default scheduleIdleTask;\n\n\n\n// WEBPACK FOOTER //\n// ./app/javascript/mastodon/features/ui/util/schedule_idle_task.js","'use strict';\n\n// Simple FIFO queue implementation to avoid having to do shift()\n// on an array, which is slow.\n\nfunction Queue() {\n this.length = 0;\n}\n\nQueue.prototype.push = function (item) {\n var node = {item: item};\n if (this.last) {\n this.last = this.last.next = node;\n } else {\n this.last = this.first = node;\n }\n this.length++;\n};\n\nQueue.prototype.shift = function () {\n var node = this.first;\n if (node) {\n this.first = node.next;\n if (!(--this.length)) {\n this.last = undefined;\n }\n return node.item;\n }\n};\n\nQueue.prototype.slice = function (start, end) {\n start = typeof start === 'undefined' ? 0 : start;\n end = typeof end === 'undefined' ? Infinity : end;\n\n var output = [];\n\n var i = 0;\n for (var node = this.first; node; node = node.next) {\n if (--end < 0) {\n break;\n } else if (++i > start) {\n output.push(node.item);\n }\n }\n return output;\n}\n\nmodule.exports = Queue;\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/tiny-queue/index.js","\n// Get the bounding client rect from an IntersectionObserver entry.\n// This is to work around a bug in Chrome: https://crbug.com/737228\n\nlet hasBoundingRectBug;\n\nfunction getRectFromEntry(entry) {\n if (typeof hasBoundingRectBug !== 'boolean') {\n const boundingRect = entry.target.getBoundingClientRect();\n const observerRect = entry.boundingClientRect;\n hasBoundingRectBug = boundingRect.height !== observerRect.height ||\n boundingRect.top !== observerRect.top ||\n boundingRect.width !== observerRect.width ||\n boundingRect.bottom !== observerRect.bottom ||\n boundingRect.left !== observerRect.left ||\n boundingRect.right !== observerRect.right;\n }\n return hasBoundingRectBug ? entry.target.getBoundingClientRect() : entry.boundingClientRect;\n}\n\nexport default getRectFromEntry;\n\n\n\n// WEBPACK FOOTER //\n// ./app/javascript/mastodon/features/ui/util/get_rect_from_entry.js","// Wrapper for IntersectionObserver in order to make working with it\n// a bit easier. We also follow this performance advice:\n// \"If you need to observe multiple elements, it is both possible and\n// advised to observe multiple elements using the same IntersectionObserver\n// instance by calling observe() multiple times.\"\n// https://developers.google.com/web/updates/2016/04/intersectionobserver\n\nclass IntersectionObserverWrapper {\n\n callbacks = {};\n observerBacklog = [];\n observer = null;\n\n connect (options) {\n const onIntersection = (entries) => {\n entries.forEach(entry => {\n const id = entry.target.getAttribute('data-id');\n if (this.callbacks[id]) {\n this.callbacks[id](entry);\n }\n });\n };\n\n this.observer = new IntersectionObserver(onIntersection, options);\n this.observerBacklog.forEach(([ id, node, callback ]) => {\n this.observe(id, node, callback);\n });\n this.observerBacklog = null;\n }\n\n observe (id, node, callback) {\n if (!this.observer) {\n this.observerBacklog.push([ id, node, callback ]);\n } else {\n this.callbacks[id] = callback;\n this.observer.observe(node);\n }\n }\n\n unobserve (id, node) {\n if (this.observer) {\n delete this.callbacks[id];\n this.observer.unobserve(node);\n }\n }\n\n disconnect () {\n if (this.observer) {\n this.callbacks = {};\n this.observer.disconnect();\n this.observer = null;\n }\n }\n\n}\n\nexport default IntersectionObserverWrapper;\n\n\n\n// WEBPACK FOOTER //\n// ./app/javascript/mastodon/features/ui/util/intersection_observer_wrapper.js","import React from 'react';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport PropTypes from 'prop-types';\nimport StatusContainer from '../containers/status_container';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport ScrollableList from './scrollable_list';\n\nexport default class StatusList extends ImmutablePureComponent {\n\n static propTypes = {\n scrollKey: PropTypes.string.isRequired,\n statusIds: ImmutablePropTypes.list.isRequired,\n onScrollToBottom: PropTypes.func,\n onScrollToTop: PropTypes.func,\n onScroll: PropTypes.func,\n trackScroll: PropTypes.bool,\n shouldUpdateScroll: PropTypes.func,\n isLoading: PropTypes.bool,\n hasMore: PropTypes.bool,\n prepend: PropTypes.node,\n emptyMessage: PropTypes.node,\n };\n\n static defaultProps = {\n trackScroll: true,\n };\n\n handleMoveUp = id => {\n const elementIndex = this.props.statusIds.indexOf(id) - 1;\n this._selectChild(elementIndex);\n }\n\n handleMoveDown = id => {\n const elementIndex = this.props.statusIds.indexOf(id) + 1;\n this._selectChild(elementIndex);\n }\n\n _selectChild (index) {\n const element = this.node.node.querySelector(`article:nth-of-type(${index + 1}) .focusable`);\n\n if (element) {\n element.focus();\n }\n }\n\n setRef = c => {\n this.node = c;\n }\n\n render () {\n const { statusIds, ...other } = this.props;\n const { isLoading } = other;\n\n const scrollableContent = (isLoading || statusIds.size > 0) ? (\n statusIds.map((statusId) => (\n <StatusContainer\n key={statusId}\n id={statusId}\n onMoveUp={this.handleMoveUp}\n onMoveDown={this.handleMoveDown}\n />\n ))\n ) : null;\n\n return (\n <ScrollableList {...other} ref={this.setRef}>\n {scrollableContent}\n </ScrollableList>\n );\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/javascript/mastodon/components/status_list.js","import createStream from '../stream';\nimport {\n updateTimeline,\n deleteFromTimelines,\n refreshHomeTimeline,\n connectTimeline,\n disconnectTimeline,\n} from './timelines';\nimport { updateNotifications, refreshNotifications } from './notifications';\nimport { getLocale } from '../locales';\n\nconst { messages } = getLocale();\n\nexport function connectTimelineStream (timelineId, path, pollingRefresh = null) {\n return (dispatch, getState) => {\n const streamingAPIBaseURL = getState().getIn(['meta', 'streaming_api_base_url']);\n const accessToken = getState().getIn(['meta', 'access_token']);\n const locale = getState().getIn(['meta', 'locale']);\n let polling = null;\n\n const setupPolling = () => {\n polling = setInterval(() => {\n pollingRefresh(dispatch);\n }, 20000);\n };\n\n const clearPolling = () => {\n if (polling) {\n clearInterval(polling);\n polling = null;\n }\n };\n\n const subscription = createStream(streamingAPIBaseURL, accessToken, path, {\n\n connected () {\n if (pollingRefresh) {\n clearPolling();\n }\n dispatch(connectTimeline(timelineId));\n },\n\n disconnected () {\n if (pollingRefresh) {\n setupPolling();\n }\n dispatch(disconnectTimeline(timelineId));\n },\n\n received (data) {\n switch(data.event) {\n case 'update':\n dispatch(updateTimeline(timelineId, JSON.parse(data.payload)));\n break;\n case 'delete':\n dispatch(deleteFromTimelines(data.payload));\n break;\n case 'notification':\n dispatch(updateNotifications(JSON.parse(data.payload), messages, locale));\n break;\n }\n },\n\n reconnected () {\n if (pollingRefresh) {\n clearPolling();\n pollingRefresh(dispatch);\n }\n dispatch(connectTimeline(timelineId));\n },\n\n });\n\n const disconnect = () => {\n if (subscription) {\n subscription.close();\n }\n clearPolling();\n };\n\n return disconnect;\n };\n}\n\nfunction refreshHomeTimelineAndNotification (dispatch) {\n dispatch(refreshHomeTimeline());\n dispatch(refreshNotifications());\n}\n\nexport const connectUserStream = () => connectTimelineStream('home', 'user', refreshHomeTimelineAndNotification);\nexport const connectCommunityStream = () => connectTimelineStream('community', 'public:local');\nexport const connectMediaStream = () => connectTimelineStream('community', 'public:local');\nexport const connectPublicStream = () => connectTimelineStream('public', 'public');\nexport const connectHashtagStream = (tag) => connectTimelineStream(`hashtag:${tag}`, `hashtag&tag=${tag}`);\n\n\n\n// WEBPACK FOOTER //\n// ./app/javascript/mastodon/actions/streaming.js","import WebSocketClient from 'websocket.js';\n\nexport default function getStream(streamingAPIBaseURL, accessToken, stream, { connected, received, disconnected, reconnected }) {\n const ws = new WebSocketClient(`${streamingAPIBaseURL}/api/v1/streaming/?access_token=${accessToken}&stream=${stream}`);\n\n ws.onopen = connected;\n ws.onmessage = e => received(JSON.parse(e.data));\n ws.onclose = disconnected;\n ws.onreconnect = reconnected;\n\n return ws;\n};\n\n\n\n// WEBPACK FOOTER //\n// ./app/javascript/mastodon/stream.js","'use strict';Object.defineProperty(exports,\"__esModule\",{value:true});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 backoff=require('backoff');var WebSocketClient=function(){/**\n * @param url DOMString The URL to which to connect; this should be the URL to which the WebSocket server will respond.\n * @param protocols DOMString|DOMString[] Either a single protocol string or an array of protocol strings. These strings are used to indicate sub-protocols, so that a single server can implement multiple WebSocket sub-protocols (for example, you might want one server to be able to handle different types of interactions depending on the specified protocol). If you don't specify a protocol string, an empty string is assumed.\n */function WebSocketClient(url,protocols){var options=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{};_classCallCheck(this,WebSocketClient);this.url=url;this.protocols=protocols;this.reconnectEnabled=true;this.listeners={};this.backoff=backoff[options.backoff||'fibonacci'](options);this.backoff.on('backoff',this.onBackoffStart.bind(this));this.backoff.on('ready',this.onBackoffReady.bind(this));this.backoff.on('fail',this.onBackoffFail.bind(this));this.open();}_createClass(WebSocketClient,[{key:'open',value:function open(){var reconnect=arguments.length>0&&arguments[0]!==undefined?arguments[0]:false;this.isReconnect=reconnect;this.ws=new WebSocket(this.url,this.protocols);this.ws.onclose=this.onCloseCallback.bind(this);this.ws.onerror=this.onErrorCallback.bind(this);this.ws.onmessage=this.onMessageCallback.bind(this);this.ws.onopen=this.onOpenCallback.bind(this);}/**\n * @ignore\n */},{key:'onBackoffStart',value:function onBackoffStart(number,delay){}/**\n * @ignore\n */},{key:'onBackoffReady',value:function onBackoffReady(number,delay){// console.log(\"onBackoffReady\", number + ' ' + delay + 'ms');\nthis.open(true);}/**\n * @ignore\n */},{key:'onBackoffFail',value:function onBackoffFail(){}/**\n * @ignore\n */},{key:'onCloseCallback',value:function onCloseCallback(){if(!this.isReconnect&&this.listeners['onclose'])this.listeners['onclose'].apply(null,arguments);if(this.reconnectEnabled){this.backoff.backoff();}}/**\n * @ignore\n */},{key:'onErrorCallback',value:function onErrorCallback(){if(this.listeners['onerror'])this.listeners['onerror'].apply(null,arguments);}/**\n * @ignore\n */},{key:'onMessageCallback',value:function onMessageCallback(){if(this.listeners['onmessage'])this.listeners['onmessage'].apply(null,arguments);}/**\n * @ignore\n */},{key:'onOpenCallback',value:function onOpenCallback(){if(this.listeners['onopen'])this.listeners['onopen'].apply(null,arguments);if(this.isReconnect&&this.listeners['onreconnect'])this.listeners['onreconnect'].apply(null,arguments);this.isReconnect=false;}/**\n * The number of bytes of data that have been queued using calls to send()\n * but not yet transmitted to the network. This value does not reset to zero\n * when the connection is closed; if you keep calling send(), this will\n * continue to climb.\n *\n * @type unsigned long\n * @readonly\n */},{key:'close',/**\n * Closes the WebSocket connection or connection attempt, if any. If the\n * connection is already CLOSED, this method does nothing.\n *\n * @param code A numeric value indicating the status code explaining why the connection is being closed. If this parameter is not specified, a default value of 1000 (indicating a normal \"transaction complete\" closure) is assumed. See the list of status codes on the CloseEvent page for permitted values.\n * @param reason A human-readable string explaining why the connection is closing. This string must be no longer than 123 bytes of UTF-8 text (not characters).\n *\n * @return void\n */value:function close(code,reason){if(typeof code=='undefined'){code=1000;}this.reconnectEnabled=false;this.ws.close(code,reason);}/**\n * Transmits data to the server over the WebSocket connection.\n * @param data DOMString|ArrayBuffer|Blob\n * @return void\n */},{key:'send',value:function send(data){this.ws.send(data);}/**\n * An event listener to be called when the WebSocket connection's readyState changes to CLOSED. The listener receives a CloseEvent named \"close\".\n * @param listener EventListener\n */},{key:'bufferedAmount',get:function get(){return this.ws.bufferedAmount;}/**\n * The current state of the connection; this is one of the Ready state constants.\n * @type unsigned short\n * @readonly\n */},{key:'readyState',get:function get(){return this.ws.readyState;}/**\n * A string indicating the type of binary data being transmitted by the\n * connection. This should be either \"blob\" if DOM Blob objects are being\n * used or \"arraybuffer\" if ArrayBuffer objects are being used.\n * @type DOMString\n */},{key:'binaryType',get:function get(){return this.ws.binaryType;},set:function set(binaryType){this.ws.binaryType=binaryType;}/**\n * The extensions selected by the server. This is currently only the empty\n * string or a list of extensions as negotiated by the connection.\n * @type DOMString\n */},{key:'extensions',get:function get(){return this.ws.extensions;},set:function set(extensions){this.ws.extensions=extensions;}/**\n * A string indicating the name of the sub-protocol the server selected;\n * this will be one of the strings specified in the protocols parameter when\n * creating the WebSocket object.\n * @type DOMString\n */},{key:'protocol',get:function get(){return this.ws.protocol;},set:function set(protocol){this.ws.protocol=protocol;}},{key:'onclose',set:function set(listener){this.listeners['onclose']=listener;},get:function get(){return this.listeners['onclose'];}/**\n * An event listener to be called when an error occurs. This is a simple event named \"error\".\n * @param listener EventListener\n */},{key:'onerror',set:function set(listener){this.listeners['onerror']=listener;},get:function get(){return this.listeners['onerror'];}/**\n * An event listener to be called when a message is received from the server. The listener receives a MessageEvent named \"message\".\n * @param listener EventListener\n */},{key:'onmessage',set:function set(listener){this.listeners['onmessage']=listener;},get:function get(){return this.listeners['onmessage'];}/**\n * An event listener to be called when the WebSocket connection's readyState changes to OPEN; this indicates that the connection is ready to send and receive data. The event is a simple one with the name \"open\".\n * @param listener EventListener\n */},{key:'onopen',set:function set(listener){this.listeners['onopen']=listener;},get:function get(){return this.listeners['onopen'];}/**\n * @param listener EventListener\n */},{key:'onreconnect',set:function set(listener){this.listeners['onreconnect']=listener;},get:function get(){return this.listeners['onreconnect'];}}]);return WebSocketClient;}();/**\n * The connection is not yet open.\n */WebSocketClient.CONNECTING=WebSocket.CONNECTING;/**\n * The connection is open and ready to communicate.\n */WebSocketClient.OPEN=WebSocket.OPEN;/**\n * The connection is in the process of closing.\n */WebSocketClient.CLOSING=WebSocket.CLOSING;/**\n * The connection is closed or couldn't be opened.\n */WebSocketClient.CLOSED=WebSocket.CLOSED;exports.default=WebSocketClient;\n\n\n// WEBPACK FOOTER //\n// ./node_modules/websocket.js/lib/index.js","// Copyright (c) 2012 Mathieu Turcotte\n// Licensed under the MIT license.\n\nvar Backoff = require('./lib/backoff');\nvar ExponentialBackoffStrategy = require('./lib/strategy/exponential');\nvar FibonacciBackoffStrategy = require('./lib/strategy/fibonacci');\nvar FunctionCall = require('./lib/function_call.js');\n\nmodule.exports.Backoff = Backoff;\nmodule.exports.FunctionCall = FunctionCall;\nmodule.exports.FibonacciStrategy = FibonacciBackoffStrategy;\nmodule.exports.ExponentialStrategy = ExponentialBackoffStrategy;\n\n// Constructs a Fibonacci backoff.\nmodule.exports.fibonacci = function(options) {\n return new Backoff(new FibonacciBackoffStrategy(options));\n};\n\n// Constructs an exponential backoff.\nmodule.exports.exponential = function(options) {\n return new Backoff(new ExponentialBackoffStrategy(options));\n};\n\n// Constructs a FunctionCall for the given function and arguments.\nmodule.exports.call = function(fn, vargs, callback) {\n var args = Array.prototype.slice.call(arguments);\n fn = args[0];\n vargs = args.slice(1, args.length - 1);\n callback = args[args.length - 1];\n return new FunctionCall(fn, vargs, callback);\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/backoff/index.js","/*\n * Copyright (c) 2012 Mathieu Turcotte\n * Licensed under the MIT license.\n */\n\nvar util = require('util');\n\nvar errors = module.exports = require('./errors');\n\nfunction failCheck(ExceptionConstructor, callee, messageFormat, formatArgs) {\n messageFormat = messageFormat || '';\n var message = util.format.apply(this, [messageFormat].concat(formatArgs));\n var error = new ExceptionConstructor(message);\n Error.captureStackTrace(error, callee);\n throw error;\n}\n\nfunction failArgumentCheck(callee, message, formatArgs) {\n failCheck(errors.IllegalArgumentError, callee, message, formatArgs);\n}\n\nfunction failStateCheck(callee, message, formatArgs) {\n failCheck(errors.IllegalStateError, callee, message, formatArgs);\n}\n\nmodule.exports.checkArgument = function(value, message) {\n if (!value) {\n failArgumentCheck(arguments.callee, message,\n Array.prototype.slice.call(arguments, 2));\n }\n};\n\nmodule.exports.checkState = function(value, message) {\n if (!value) {\n failStateCheck(arguments.callee, message,\n Array.prototype.slice.call(arguments, 2));\n }\n};\n\nmodule.exports.checkIsDef = function(value, message) {\n if (value !== undefined) {\n return value;\n }\n\n failArgumentCheck(arguments.callee, message ||\n 'Expected value to be defined but was undefined.',\n Array.prototype.slice.call(arguments, 2));\n};\n\nmodule.exports.checkIsDefAndNotNull = function(value, message) {\n // Note that undefined == null.\n if (value != null) {\n return value;\n }\n\n failArgumentCheck(arguments.callee, message ||\n 'Expected value to be defined and not null but got \"' +\n typeOf(value) + '\".', Array.prototype.slice.call(arguments, 2));\n};\n\n// Fixed version of the typeOf operator which returns 'null' for null values\n// and 'array' for arrays.\nfunction typeOf(value) {\n var s = typeof value;\n if (s == 'object') {\n if (!value) {\n return 'null';\n } else if (value instanceof Array) {\n return 'array';\n }\n }\n return s;\n}\n\nfunction typeCheck(expect) {\n return function(value, message) {\n var type = typeOf(value);\n\n if (type == expect) {\n return value;\n }\n\n failArgumentCheck(arguments.callee, message ||\n 'Expected \"' + expect + '\" but got \"' + type + '\".',\n Array.prototype.slice.call(arguments, 2));\n };\n}\n\nmodule.exports.checkIsString = typeCheck('string');\nmodule.exports.checkIsArray = typeCheck('array');\nmodule.exports.checkIsNumber = typeCheck('number');\nmodule.exports.checkIsBoolean = typeCheck('boolean');\nmodule.exports.checkIsFunction = typeCheck('function');\nmodule.exports.checkIsObject = typeCheck('object');\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/precond/lib/checks.js","module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}\n\n\n// WEBPACK FOOTER //\n// ./node_modules/util/support/isBufferBrowser.js","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/util/node_modules/inherits/inherits_browser.js","/*\n * Copyright (c) 2012 Mathieu Turcotte\n * Licensed under the MIT license.\n */\n\nvar util = require('util');\n\nfunction IllegalArgumentError(message) {\n Error.call(this, message);\n this.message = message;\n}\nutil.inherits(IllegalArgumentError, Error);\n\nIllegalArgumentError.prototype.name = 'IllegalArgumentError';\n\nfunction IllegalStateError(message) {\n Error.call(this, message);\n this.message = message;\n}\nutil.inherits(IllegalStateError, Error);\n\nIllegalStateError.prototype.name = 'IllegalStateError';\n\nmodule.exports.IllegalStateError = IllegalStateError;\nmodule.exports.IllegalArgumentError = IllegalArgumentError;\n\n\n// WEBPACK FOOTER //\n// ./node_modules/precond/lib/errors.js","// Copyright (c) 2012 Mathieu Turcotte\n// Licensed under the MIT license.\n\nvar util = require('util');\nvar precond = require('precond');\n\nvar BackoffStrategy = require('./strategy');\n\n// Exponential backoff strategy.\nfunction ExponentialBackoffStrategy(options) {\n BackoffStrategy.call(this, options);\n this.backoffDelay_ = 0;\n this.nextBackoffDelay_ = this.getInitialDelay();\n this.factor_ = ExponentialBackoffStrategy.DEFAULT_FACTOR;\n\n if (options && options.factor !== undefined) {\n precond.checkArgument(options.factor > 1,\n 'Exponential factor should be greater than 1 but got %s.',\n options.factor);\n this.factor_ = options.factor;\n }\n}\nutil.inherits(ExponentialBackoffStrategy, BackoffStrategy);\n\n// Default multiplication factor used to compute the next backoff delay from\n// the current one. The value can be overridden by passing a custom factor as\n// part of the options.\nExponentialBackoffStrategy.DEFAULT_FACTOR = 2;\n\nExponentialBackoffStrategy.prototype.next_ = function() {\n this.backoffDelay_ = Math.min(this.nextBackoffDelay_, this.getMaxDelay());\n this.nextBackoffDelay_ = this.backoffDelay_ * this.factor_;\n return this.backoffDelay_;\n};\n\nExponentialBackoffStrategy.prototype.reset_ = function() {\n this.backoffDelay_ = 0;\n this.nextBackoffDelay_ = this.getInitialDelay();\n};\n\nmodule.exports = ExponentialBackoffStrategy;\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/backoff/lib/strategy/exponential.js","// Copyright (c) 2012 Mathieu Turcotte\n// Licensed under the MIT license.\n\nvar events = require('events');\nvar precond = require('precond');\nvar util = require('util');\n\nvar Backoff = require('./backoff');\nvar FibonacciBackoffStrategy = require('./strategy/fibonacci');\n\n// Wraps a function to be called in a backoff loop.\nfunction FunctionCall(fn, args, callback) {\n events.EventEmitter.call(this);\n\n precond.checkIsFunction(fn, 'Expected fn to be a function.');\n precond.checkIsArray(args, 'Expected args to be an array.');\n precond.checkIsFunction(callback, 'Expected callback to be a function.');\n\n this.function_ = fn;\n this.arguments_ = args;\n this.callback_ = callback;\n this.lastResult_ = [];\n this.numRetries_ = 0;\n\n this.backoff_ = null;\n this.strategy_ = null;\n this.failAfter_ = -1;\n this.retryPredicate_ = FunctionCall.DEFAULT_RETRY_PREDICATE_;\n\n this.state_ = FunctionCall.State_.PENDING;\n}\nutil.inherits(FunctionCall, events.EventEmitter);\n\n// States in which the call can be.\nFunctionCall.State_ = {\n // Call isn't started yet.\n PENDING: 0,\n // Call is in progress.\n RUNNING: 1,\n // Call completed successfully which means that either the wrapped function\n // returned successfully or the maximal number of backoffs was reached.\n COMPLETED: 2,\n // The call was aborted.\n ABORTED: 3\n};\n\n// The default retry predicate which considers any error as retriable.\nFunctionCall.DEFAULT_RETRY_PREDICATE_ = function(err) {\n return true;\n};\n\n// Checks whether the call is pending.\nFunctionCall.prototype.isPending = function() {\n return this.state_ == FunctionCall.State_.PENDING;\n};\n\n// Checks whether the call is in progress.\nFunctionCall.prototype.isRunning = function() {\n return this.state_ == FunctionCall.State_.RUNNING;\n};\n\n// Checks whether the call is completed.\nFunctionCall.prototype.isCompleted = function() {\n return this.state_ == FunctionCall.State_.COMPLETED;\n};\n\n// Checks whether the call is aborted.\nFunctionCall.prototype.isAborted = function() {\n return this.state_ == FunctionCall.State_.ABORTED;\n};\n\n// Sets the backoff strategy to use. Can only be called before the call is\n// started otherwise an exception will be thrown.\nFunctionCall.prototype.setStrategy = function(strategy) {\n precond.checkState(this.isPending(), 'FunctionCall in progress.');\n this.strategy_ = strategy;\n return this; // Return this for chaining.\n};\n\n// Sets the predicate which will be used to determine whether the errors\n// returned from the wrapped function should be retried or not, e.g. a\n// network error would be retriable while a type error would stop the\n// function call.\nFunctionCall.prototype.retryIf = function(retryPredicate) {\n precond.checkState(this.isPending(), 'FunctionCall in progress.');\n this.retryPredicate_ = retryPredicate;\n return this;\n};\n\n// Returns all intermediary results returned by the wrapped function since\n// the initial call.\nFunctionCall.prototype.getLastResult = function() {\n return this.lastResult_.concat();\n};\n\n// Returns the number of times the wrapped function call was retried.\nFunctionCall.prototype.getNumRetries = function() {\n return this.numRetries_;\n};\n\n// Sets the backoff limit.\nFunctionCall.prototype.failAfter = function(maxNumberOfRetry) {\n precond.checkState(this.isPending(), 'FunctionCall in progress.');\n this.failAfter_ = maxNumberOfRetry;\n return this; // Return this for chaining.\n};\n\n// Aborts the call.\nFunctionCall.prototype.abort = function() {\n if (this.isCompleted() || this.isAborted()) {\n return;\n }\n\n if (this.isRunning()) {\n this.backoff_.reset();\n }\n\n this.state_ = FunctionCall.State_.ABORTED;\n this.lastResult_ = [new Error('Backoff aborted.')];\n this.emit('abort');\n this.doCallback_();\n};\n\n// Initiates the call to the wrapped function. Accepts an optional factory\n// function used to create the backoff instance; used when testing.\nFunctionCall.prototype.start = function(backoffFactory) {\n precond.checkState(!this.isAborted(), 'FunctionCall is aborted.');\n precond.checkState(this.isPending(), 'FunctionCall already started.');\n\n var strategy = this.strategy_ || new FibonacciBackoffStrategy();\n\n this.backoff_ = backoffFactory ?\n backoffFactory(strategy) :\n new Backoff(strategy);\n\n this.backoff_.on('ready', this.doCall_.bind(this, true /* isRetry */));\n this.backoff_.on('fail', this.doCallback_.bind(this));\n this.backoff_.on('backoff', this.handleBackoff_.bind(this));\n\n if (this.failAfter_ > 0) {\n this.backoff_.failAfter(this.failAfter_);\n }\n\n this.state_ = FunctionCall.State_.RUNNING;\n this.doCall_(false /* isRetry */);\n};\n\n// Calls the wrapped function.\nFunctionCall.prototype.doCall_ = function(isRetry) {\n if (isRetry) {\n this.numRetries_++;\n }\n var eventArgs = ['call'].concat(this.arguments_);\n events.EventEmitter.prototype.emit.apply(this, eventArgs);\n var callback = this.handleFunctionCallback_.bind(this);\n this.function_.apply(null, this.arguments_.concat(callback));\n};\n\n// Calls the wrapped function's callback with the last result returned by the\n// wrapped function.\nFunctionCall.prototype.doCallback_ = function() {\n this.callback_.apply(null, this.lastResult_);\n};\n\n// Handles wrapped function's completion. This method acts as a replacement\n// for the original callback function.\nFunctionCall.prototype.handleFunctionCallback_ = function() {\n if (this.isAborted()) {\n return;\n }\n\n var args = Array.prototype.slice.call(arguments);\n this.lastResult_ = args; // Save last callback arguments.\n events.EventEmitter.prototype.emit.apply(this, ['callback'].concat(args));\n\n var err = args[0];\n if (err && this.retryPredicate_(err)) {\n this.backoff_.backoff(err);\n } else {\n this.state_ = FunctionCall.State_.COMPLETED;\n this.doCallback_();\n }\n};\n\n// Handles the backoff event by reemitting it.\nFunctionCall.prototype.handleBackoff_ = function(number, delay, err) {\n this.emit('backoff', number, delay, err);\n};\n\nmodule.exports = FunctionCall;\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/backoff/lib/function_call.js","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n // Allow for deprecating things in the process of starting up.\n if (isUndefined(global.process)) {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n if (process.noDeprecation === true) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnviron;\nexports.debuglog = function(set) {\n if (isUndefined(debugEnviron))\n debugEnviron = process.env.NODE_DEBUG || '';\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/util/util.js","import React from 'react';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport StatusListContainer from '../ui/containers/status_list_container';\nimport Column from '../../components/column';\nimport ColumnHeader from '../../components/column_header';\nimport {\n refreshHashtagTimeline,\n expandHashtagTimeline,\n} from '../../actions/timelines';\nimport { addColumn, removeColumn, moveColumn } from '../../actions/columns';\nimport { FormattedMessage } from 'react-intl';\nimport { connectHashtagStream } from '../../actions/streaming';\n\nconst mapStateToProps = (state, props) => ({\n hasUnread: state.getIn(['timelines', `hashtag:${props.params.id}`, 'unread']) > 0,\n});\n\n@connect(mapStateToProps)\nexport default class HashtagTimeline extends React.PureComponent {\n\n static propTypes = {\n params: PropTypes.object.isRequired,\n columnId: PropTypes.string,\n dispatch: PropTypes.func.isRequired,\n hasUnread: PropTypes.bool,\n multiColumn: PropTypes.bool,\n };\n\n handlePin = () => {\n const { columnId, dispatch } = this.props;\n\n if (columnId) {\n dispatch(removeColumn(columnId));\n } else {\n dispatch(addColumn('HASHTAG', { id: this.props.params.id }));\n }\n }\n\n handleMove = (dir) => {\n const { columnId, dispatch } = this.props;\n dispatch(moveColumn(columnId, dir));\n }\n\n handleHeaderClick = () => {\n this.column.scrollTop();\n }\n\n _subscribe (dispatch, id) {\n this.disconnect = dispatch(connectHashtagStream(id));\n }\n\n _unsubscribe () {\n if (this.disconnect) {\n this.disconnect();\n this.disconnect = null;\n }\n }\n\n componentDidMount () {\n const { dispatch } = this.props;\n const { id } = this.props.params;\n\n dispatch(refreshHashtagTimeline(id));\n this._subscribe(dispatch, id);\n }\n\n componentWillReceiveProps (nextProps) {\n if (nextProps.params.id !== this.props.params.id) {\n this.props.dispatch(refreshHashtagTimeline(nextProps.params.id));\n this._unsubscribe();\n this._subscribe(this.props.dispatch, nextProps.params.id);\n }\n }\n\n componentWillUnmount () {\n this._unsubscribe();\n }\n\n setRef = c => {\n this.column = c;\n }\n\n handleLoadMore = () => {\n this.props.dispatch(expandHashtagTimeline(this.props.params.id));\n }\n\n render () {\n const { hasUnread, columnId, multiColumn } = this.props;\n const { id } = this.props.params;\n const pinned = !!columnId;\n\n return (\n <Column ref={this.setRef}>\n <ColumnHeader\n icon='hashtag'\n active={hasUnread}\n title={id}\n onPin={this.handlePin}\n onMove={this.handleMove}\n onClick={this.handleHeaderClick}\n pinned={pinned}\n multiColumn={multiColumn}\n showBackButton\n />\n\n <StatusListContainer\n trackScroll={!pinned}\n scrollKey={`hashtag_timeline-${columnId}`}\n timelineId={`hashtag:${id}`}\n loadMore={this.handleLoadMore}\n emptyMessage={<FormattedMessage id='empty_column.hashtag' defaultMessage='There is nothing in this hashtag yet.' />}\n />\n </Column>\n );\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/javascript/mastodon/features/hashtag_timeline/index.js","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nfunction EventEmitter() {\n this._events = this._events || {};\n this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function(n) {\n if (!isNumber(n) || n < 0 || isNaN(n))\n throw TypeError('n must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nEventEmitter.prototype.emit = function(type) {\n var er, handler, len, args, i, listeners;\n\n if (!this._events)\n this._events = {};\n\n // If there is no 'error' event listener then throw.\n if (type === 'error') {\n if (!this._events.error ||\n (isObject(this._events.error) && !this._events.error.length)) {\n er = arguments[1];\n if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n }\n }\n\n handler = this._events[type];\n\n if (isUndefined(handler))\n return false;\n\n if (isFunction(handler)) {\n switch (arguments.length) {\n // fast cases\n case 1:\n handler.call(this);\n break;\n case 2:\n handler.call(this, arguments[1]);\n break;\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n // slower\n default:\n args = Array.prototype.slice.call(arguments, 1);\n handler.apply(this, args);\n }\n } else if (isObject(handler)) {\n args = Array.prototype.slice.call(arguments, 1);\n listeners = handler.slice();\n len = listeners.length;\n for (i = 0; i < len; i++)\n listeners[i].apply(this, args);\n }\n\n return true;\n};\n\nEventEmitter.prototype.addListener = function(type, listener) {\n var m;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events)\n this._events = {};\n\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (this._events.newListener)\n this.emit('newListener', type,\n isFunction(listener.listener) ?\n listener.listener : listener);\n\n if (!this._events[type])\n // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;\n else if (isObject(this._events[type]))\n // If we've already got an array, just append.\n this._events[type].push(listener);\n else\n // Adding the second element, need to change to array.\n this._events[type] = [this._events[type], listener];\n\n // Check for listener leak\n if (isObject(this._events[type]) && !this._events[type].warned) {\n if (!isUndefined(this._maxListeners)) {\n m = this._maxListeners;\n } else {\n m = EventEmitter.defaultMaxListeners;\n }\n\n if (m && m > 0 && this._events[type].length > m) {\n this._events[type].warned = true;\n console.error('(node) warning: possible EventEmitter memory ' +\n 'leak detected. %d listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.',\n this._events[type].length);\n if (typeof console.trace === 'function') {\n // not supported in IE 10\n console.trace();\n }\n }\n }\n\n return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n var fired = false;\n\n function g() {\n this.removeListener(type, g);\n\n if (!fired) {\n fired = true;\n listener.apply(this, arguments);\n }\n }\n\n g.listener = listener;\n this.on(type, g);\n\n return this;\n};\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener = function(type, listener) {\n var list, position, length, i;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events || !this._events[type])\n return this;\n\n list = this._events[type];\n length = list.length;\n position = -1;\n\n if (list === listener ||\n (isFunction(list.listener) && list.listener === listener)) {\n delete this._events[type];\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n\n } else if (isObject(list)) {\n for (i = length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list.length = 0;\n delete this._events[type];\n } else {\n list.splice(position, 1);\n }\n\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n }\n\n return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n var key, listeners;\n\n if (!this._events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!this._events.removeListener) {\n if (arguments.length === 0)\n this._events = {};\n else if (this._events[type])\n delete this._events[type];\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n for (key in this._events) {\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = {};\n return this;\n }\n\n listeners = this._events[type];\n\n if (isFunction(listeners)) {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n while (listeners.length)\n this.removeListener(type, listeners[listeners.length - 1]);\n }\n delete this._events[type];\n\n return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n var ret;\n if (!this._events || !this._events[type])\n ret = [];\n else if (isFunction(this._events[type]))\n ret = [this._events[type]];\n else\n ret = this._events[type].slice();\n return ret;\n};\n\nEventEmitter.prototype.listenerCount = function(type) {\n if (this._events) {\n var evlistener = this._events[type];\n\n if (isFunction(evlistener))\n return 1;\n else if (evlistener)\n return evlistener.length;\n }\n return 0;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n return emitter.listenerCount(type);\n};\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/events/events.js","/*\n * Copyright (c) 2012 Mathieu Turcotte\n * Licensed under the MIT license.\n */\n\nmodule.exports = require('./lib/checks');\n\n\n// WEBPACK FOOTER //\n// ./node_modules/precond/index.js"],"sourceRoot":""}