New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

flummox

Package Overview
Dependencies
Maintainers
1
Versions
68
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

flummox - npm Package Compare versions

Comparing version 2.12.5 to 2.13.0

10

CHANGELOG.md

@@ -12,8 +12,12 @@ # Changelog

## 2.13.0
- **New Features**
- `Store#forceUpdate()` like React
## 2.12.5
- **Bugfix**
- **Bug Fix**
- Fix requiring normal React instead of React with addons in FluxComponent.
## 2.12.4
- **Bugfix**
- **Bug Fix**
- Fix bug when single item array is child of FluxComponent. [#53](https://github.com/acdlite/flummox/issues/53)

@@ -73,3 +77,3 @@

## 2.7.2
- **Bugfix**
- **Bug Fix**
- Fix React peer dependency version so it works on 0.13

@@ -76,0 +80,0 @@

@@ -378,3 +378,3 @@ var Flummox =

var assign = _interopRequire(__webpack_require__(5));
var assign = _interopRequire(__webpack_require__(6));

@@ -449,2 +449,13 @@ var Store = (function (EventEmitter) {

},
forceUpdate: {
value: function forceUpdate() {
if (this._isHandlingDispatch) {
this._emitChangeAfterHandlingDispatch = true;
} else {
this.emit("change");
}
},
writable: true,
configurable: true
},
register: {

@@ -597,3 +608,3 @@ value: function register(actionId, handler) {

var uniqueId = _interopRequire(__webpack_require__(6));
var uniqueId = _interopRequire(__webpack_require__(7));

@@ -737,3 +748,3 @@ var Actions = (function () {

module.exports.Dispatcher = __webpack_require__(7)
module.exports.Dispatcher = __webpack_require__(5)

@@ -980,93 +991,2 @@

'use strict';
function ToObject(val) {
if (val == null) {
throw new TypeError('Object.assign cannot be called with null or undefined');
}
return Object(val);
}
module.exports = Object.assign || function (target, source) {
var from;
var keys;
var to = ToObject(target);
for (var s = 1; s < arguments.length; s++) {
from = arguments[s];
keys = Object.keys(Object(from));
for (var i = 0; i < keys.length; i++) {
to[keys[i]] = from[keys[i]];
}
}
return to;
};
/***/ },
/* 6 */
/***/ function(module, exports, __webpack_require__) {
'use strict';
var count = 0;
/**
* Generate a unique ID.
*
* Optionally pass a prefix to prepend, a suffix to append, or a
* multiplier to use on the ID.
*
* ```js
* uniqueId(); //=> '25'
*
* uniqueId({prefix: 'apple_'});
* //=> 'apple_10'
*
* uniqueId({suffix: '_orange'});
* //=> '10_orange'
*
* uniqueId({multiplier: 5});
* //=> 5, 10, 15, 20...
* ```
*
* To reset the `id` to zero, do `id.reset()`.
*
* @param {Object} `options` Optionally pass a `prefix`, `suffix` and/or `multiplier.
* @return {String} The unique id.
* @api public
*/
var id = module.exports = function (options) {
options = options || {};
var prefix = options.prefix;
var suffix = options.suffix;
var id = ++count * (options.multiplier || 1);
if (prefix == null) {
prefix = '';
}
if (suffix == null) {
suffix = '';
}
return String(prefix) + id + String(suffix);
};
id.reset = function() {
return count = 0;
};
/***/ },
/* 7 */
/***/ function(module, exports, __webpack_require__) {
/*

@@ -1325,2 +1245,93 @@ * Copyright (c) 2014, Facebook, Inc.

/***/ },
/* 6 */
/***/ function(module, exports, __webpack_require__) {
'use strict';
function ToObject(val) {
if (val == null) {
throw new TypeError('Object.assign cannot be called with null or undefined');
}
return Object(val);
}
module.exports = Object.assign || function (target, source) {
var from;
var keys;
var to = ToObject(target);
for (var s = 1; s < arguments.length; s++) {
from = arguments[s];
keys = Object.keys(Object(from));
for (var i = 0; i < keys.length; i++) {
to[keys[i]] = from[keys[i]];
}
}
return to;
};
/***/ },
/* 7 */
/***/ function(module, exports, __webpack_require__) {
'use strict';
var count = 0;
/**
* Generate a unique ID.
*
* Optionally pass a prefix to prepend, a suffix to append, or a
* multiplier to use on the ID.
*
* ```js
* uniqueId(); //=> '25'
*
* uniqueId({prefix: 'apple_'});
* //=> 'apple_10'
*
* uniqueId({suffix: '_orange'});
* //=> '10_orange'
*
* uniqueId({multiplier: 5});
* //=> 5, 10, 15, 20...
* ```
*
* To reset the `id` to zero, do `id.reset()`.
*
* @param {Object} `options` Optionally pass a `prefix`, `suffix` and/or `multiplier.
* @return {String} The unique id.
* @api public
*/
var id = module.exports = function (options) {
options = options || {};
var prefix = options.prefix;
var suffix = options.suffix;
var id = ++count * (options.multiplier || 1);
if (prefix == null) {
prefix = '';
}
if (suffix == null) {
suffix = '';
}
return String(prefix) + id + String(suffix);
};
id.reset = function() {
return count = 0;
};
/***/ },
/* 8 */

@@ -1327,0 +1338,0 @@ /***/ function(module, exports, __webpack_require__) {

@@ -1,1 +0,1 @@

var Flummox=function(t){function e(n){if(i[n])return i[n].exports;var r=i[n]={exports:{},id:n,loaded:!1};return t[n].call(r.exports,r,r.exports,e),r.loaded=!0,r.exports}var i={};return e.m=t,e.c=i,e.p="",e(0)}([function(t,e,i){"use strict";function n(t){return t.prototype.constructor.name}var r=function(t){return t&&t.__esModule?t["default"]:t},s=function(t,e){var i=Object.create(t.prototype),n=t.apply(i,e);return null==n||"object"!=typeof n&&"function"!=typeof n?i:n},a=function(t,e,i){e&&Object.defineProperties(t,e),i&&Object.defineProperties(t.prototype,i)},o=function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(t.__proto__=e)},c=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},h=r(i(1)),u=r(i(2)),f=i(4).Dispatcher,p=r(i(3)),l=function(t){function e(){c(this,e),this.dispatcher=new f,this._stores={},this._actions={}}return o(e,t),a(e,null,{createStore:{value:function(t,e){for(var i=arguments.length,r=Array(i>2?i-2:0),a=2;i>a;a++)r[a-2]=arguments[a];if(!(e.prototype instanceof h)){var o=n(e);throw new Error("You've attempted to create a store from the class "+o+", which does not have the base Store class in its prototype chain. Make sure "+("you're using the `extends` keyword: `class "+o+" extends ")+"Store { ... }`")}if(this._stores.hasOwnProperty(t)&&this._stores[t])throw new Error("You've attempted to create multiple stores with key "+t+". Keys must be unique.");var c=s(e,r),u=this.dispatcher.register(c.handler.bind(c));return c._waitFor=this.waitFor.bind(this),c._token=u,this._stores[t]=c,c},writable:!0,configurable:!0},getStore:{value:function(t){return this._stores.hasOwnProperty(t)?this._stores[t]:void 0},writable:!0,configurable:!0},createActions:{value:function(t,e){for(var i=arguments.length,r=Array(i>2?i-2:0),a=2;i>a;a++)r[a-2]=arguments[a];if(!(e.prototype instanceof u)&&e!==u){var o=n(e);throw new Error("You've attempted to create actions from the class "+o+", which does not have the base Actions class in its prototype chain. Make "+("sure you're using the `extends` keyword: `class "+o+" ")+"extends Actions { ... }`")}if(this._actions.hasOwnProperty(t)&&this._actions[t])throw new Error("You've attempted to create multiple actions with key "+t+". Keys must be unique.");var c=s(e,r);return c.dispatch=this.dispatch.bind(this),c.dispatchAsync=this.dispatchAsync.bind(this),this._actions[t]=c,c},writable:!0,configurable:!0},getActions:{value:function(t){return this._actions.hasOwnProperty(t)?this._actions[t]:void 0},writable:!0,configurable:!0},getActionIds:{value:function(t){var e=this.getActions(t);if(e)return e.getConstants()},writable:!0,configurable:!0},dispatch:{value:function(t,e){this._dispatch({actionId:t,body:e})},writable:!0,configurable:!0},dispatchAsync:{value:function(t,e,i){var n=this,r={actionId:t,async:"begin"};return i&&(r.actionArgs=i),this._dispatch(r),e.then(function(e){return n._dispatch({actionId:t,body:e,async:"success"}),e},function(e){return n._dispatch({actionId:t,error:e,async:"failure"}),Promise.reject(e)})["catch"](function(t){return n.emit("error",t),Promise.reject(t)})},writable:!0,configurable:!0},_dispatch:{value:function(t){this.dispatcher.dispatch(t),this.emit("dispatch",t)},writable:!0,configurable:!0},waitFor:{value:function(t){Array.isArray(t)||(t=[t]);var e=function(t){return t instanceof h?t._token:t},i=t.map(e);this.dispatcher.waitFor(i)},writable:!0,configurable:!0},removeAllStoreListeners:{value:function(t){for(var e in this._stores)if(this._stores.hasOwnProperty(e)){var i=this._stores[e];i.removeAllListeners(t)}},writable:!0,configurable:!0},serialize:{value:function i(){var t={};for(var e in this._stores)if(this._stores.hasOwnProperty(e)){var n=this._stores[e],i=n.constructor.serialize;if("function"==typeof i){var r=i(n.state);if("string"!=typeof r){n.constructor.name}if(t[e]=r,"function"!=typeof n.constructor.deserialize){n.constructor.name}}}return JSON.stringify(t)},writable:!0,configurable:!0},deserialize:{value:function r(t){var e=void 0;try{e=JSON.parse(t)}catch(i){{this.constructor.name}}for(var n in this._stores)if(this._stores.hasOwnProperty(n)){var s=this._stores[n],r=s.constructor.deserialize;if("function"==typeof r){var a=e[n],o=r(a);if(s.replaceState(o),"function"!=typeof s.constructor.serialize){s.constructor.name}}}},writable:!0,configurable:!0}}),e}(p);e["default"]=l,l.prototype.getConstants=l.prototype.getActionIds,l.prototype.dehydrate=l.prototype.serialize,l.prototype.hydrate=l.prototype.deserialize;var d=l;e.Flux=l,e.Flummox=d,e.Store=h,e.Actions=u,Object.defineProperty(e,"__esModule",{value:!0})},function(t,e,i){"use strict";function n(t){return"function"==typeof t?t._id:t}var r=function(t){return t&&t.__esModule?t["default"]:t},s=function(t,e,i){e&&Object.defineProperties(t,e),i&&Object.defineProperties(t.prototype,i)},a=function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(t.__proto__=e)},o=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},c=r(i(3)),h=r(i(6)),u=function(t){function e(){o(this,e),this.state=void 0,this._handlers={},this._asyncHandlers={}}return a(e,t),s(e,null,{getState:{value:function(){return h({},this.state)},writable:!0,configurable:!0},setState:{value:function(t){"undefined"==typeof this.state&&(this.state={}),this._isHandlingDispatch?(this._pendingState=h(this._pendingState,t),this._emitChangeAfterHandlingDispatch=!0):(this.state=h({},this.state,t),this.emit("change"))},writable:!0,configurable:!0},replaceState:{value:function(t){"undefined"==typeof this.state&&(this.state={}),this._isHandlingDispatch?(this._pendingState=h({},t),this._emitChangeAfterHandlingDispatch=!0):(this.state=h({},t),this.emit("change"))},writable:!0,configurable:!0},register:{value:function(t,e){t=n(t),"function"==typeof e&&(this._handlers[t]=e.bind(this))},writable:!0,configurable:!0},registerAsync:{value:function(t,e,i,r){t=n(t);var s={begin:e,success:i,failure:r};for(var a in s)if(s.hasOwnProperty(a)){var o=s[a];"function"==typeof o?s[a]=o.bind(this):delete s[a]}this._asyncHandlers[t]=s},writable:!0,configurable:!0},waitFor:{value:function(t){this._waitFor(t)},writable:!0,configurable:!0},handler:{value:function(t){var e=t.body,i=t.actionId,n=t.async,r=t.actionArgs,s=t.error,a=this._handlers[i],o=this._asyncHandlers[i]&&this._asyncHandlers[i][n];if(n)switch(n){case"begin":return void("function"==typeof o&&this._performHandler.apply(this,[o].concat(r)));case"failure":return void("function"==typeof o&&this._performHandler(o,s));case"success":"function"==typeof o&&(a=o);break;default:return}"function"==typeof a&&this._performHandler(a,e)},writable:!0,configurable:!0},_performHandler:{value:function(t){for(var e=arguments.length,i=Array(e>1?e-1:0),n=1;e>n;n++)i[n-1]=arguments[n];this._isHandlingDispatch=!0,this._pendingState=h({},this.state),this._emitChangeAfterHandlingDispatch=!1;try{t.apply(this,i)}finally{this._emitChangeAfterHandlingDispatch&&(this.state=this._pendingState,this.emit("change")),this._isHandlingDispatch=!1,this._pendingState={},this._emitChangeAfterHandlingDispatch=!1}},writable:!0,configurable:!0}}),e}(c);t.exports=u},function(t,e,i){"use strict";function n(t){return t&&"function"==typeof t.then}var r=function(t){return t&&t.__esModule?t["default"]:t},s=function(t,e,i){e&&Object.defineProperties(t,e),i&&Object.defineProperties(t.prototype,i)},a=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},o=r(i(7)),c=function(){function t(){a(this,t),this._baseId=o();for(var e=this._getActionMethodNames(),i=0;i<e.length;i++){var n=e[i];this._wrapAction(n)}this.getConstants=this.getActionIds}return s(t,null,{getActionIds:{value:function(){var t=this;return this._getActionMethodNames().reduce(function(e,i){return e[i]=t[i]._id,e},{})},writable:!0,configurable:!0},_getActionMethodNames:{value:function(){var t=this;return Object.getOwnPropertyNames(this.constructor.prototype).filter(function(e){return"constructor"!==e&&"function"==typeof t[e]})},writable:!0,configurable:!0},_wrapAction:{value:function(t){var e=this,i=this[t],r=this._createActionId(t),s=function(){for(var s=arguments.length,a=Array(s),o=0;s>o;o++)a[o]=arguments[o];var c=i.apply(e,a);if(n(c)){var h=c;return e._dispatchAsync(r,h,a,t)}return e._dispatch(r,c,a,t)};s._id=r,this[t]=s},writable:!0,configurable:!0},_createActionId:{value:function(t){return""+this._baseId+"-"+t},writable:!0,configurable:!0},_dispatch:{value:function(t,e,i,n){return"function"==typeof this.dispatch&&"undefined"!=typeof e&&this.dispatch(t,e,i),e},writable:!0,configurable:!0},_dispatchAsync:{value:function(t,e,i,n){return"function"==typeof this.dispatchAsync?this.dispatchAsync(t,e,i):e},writable:!0,configurable:!0}}),t}();t.exports=c},function(t){"use strict";function e(t,e,i){this.fn=t,this.context=e,this.once=i||!1}function i(){}i.prototype._events=void 0,i.prototype.listeners=function(t){if(!this._events||!this._events[t])return[];if(this._events[t].fn)return[this._events[t].fn];for(var e=0,i=this._events[t].length,n=new Array(i);i>e;e++)n[e]=this._events[t][e].fn;return n},i.prototype.emit=function(t,e,i,n,r,s){if(!this._events||!this._events[t])return!1;var a,o,c=this._events[t],h=arguments.length;if("function"==typeof c.fn){switch(c.once&&this.removeListener(t,c.fn,!0),h){case 1:return c.fn.call(c.context),!0;case 2:return c.fn.call(c.context,e),!0;case 3:return c.fn.call(c.context,e,i),!0;case 4:return c.fn.call(c.context,e,i,n),!0;case 5:return c.fn.call(c.context,e,i,n,r),!0;case 6:return c.fn.call(c.context,e,i,n,r,s),!0}for(o=1,a=new Array(h-1);h>o;o++)a[o-1]=arguments[o];c.fn.apply(c.context,a)}else{var u,f=c.length;for(o=0;f>o;o++)switch(c[o].once&&this.removeListener(t,c[o].fn,!0),h){case 1:c[o].fn.call(c[o].context);break;case 2:c[o].fn.call(c[o].context,e);break;case 3:c[o].fn.call(c[o].context,e,i);break;default:if(!a)for(u=1,a=new Array(h-1);h>u;u++)a[u-1]=arguments[u];c[o].fn.apply(c[o].context,a)}}return!0},i.prototype.on=function(t,i,n){var r=new e(i,n||this);return this._events||(this._events={}),this._events[t]?this._events[t].fn?this._events[t]=[this._events[t],r]:this._events[t].push(r):this._events[t]=r,this},i.prototype.once=function(t,i,n){var r=new e(i,n||this,!0);return this._events||(this._events={}),this._events[t]?this._events[t].fn?this._events[t]=[this._events[t],r]:this._events[t].push(r):this._events[t]=r,this},i.prototype.removeListener=function(t,e,i){if(!this._events||!this._events[t])return this;var n=this._events[t],r=[];if(e&&(n.fn&&(n.fn!==e||i&&!n.once)&&r.push(n),!n.fn))for(var s=0,a=n.length;a>s;s++)(n[s].fn!==e||i&&!n[s].once)&&r.push(n[s]);return r.length?this._events[t]=1===r.length?r[0]:r:delete this._events[t],this},i.prototype.removeAllListeners=function(t){return this._events?(t?delete this._events[t]:this._events={},this):this},i.prototype.off=i.prototype.removeListener,i.prototype.addListener=i.prototype.on,i.prototype.setMaxListeners=function(){return this},i.EventEmitter=i,i.EventEmitter2=i,i.EventEmitter3=i,t.exports=i},function(t,e,i){t.exports.Dispatcher=i(5)},function(t,e,i){"use strict";function n(){this.$Dispatcher_callbacks={},this.$Dispatcher_isPending={},this.$Dispatcher_isHandled={},this.$Dispatcher_isDispatching=!1,this.$Dispatcher_pendingPayload=null}var r=i(8),s=1,a="ID_";n.prototype.register=function(t){var e=a+s++;return this.$Dispatcher_callbacks[e]=t,e},n.prototype.unregister=function(t){r(this.$Dispatcher_callbacks[t],"Dispatcher.unregister(...): `%s` does not map to a registered callback.",t),delete this.$Dispatcher_callbacks[t]},n.prototype.waitFor=function(t){r(this.$Dispatcher_isDispatching,"Dispatcher.waitFor(...): Must be invoked while dispatching.");for(var e=0;e<t.length;e++){var i=t[e];this.$Dispatcher_isPending[i]?r(this.$Dispatcher_isHandled[i],"Dispatcher.waitFor(...): Circular dependency detected while waiting for `%s`.",i):(r(this.$Dispatcher_callbacks[i],"Dispatcher.waitFor(...): `%s` does not map to a registered callback.",i),this.$Dispatcher_invokeCallback(i))}},n.prototype.dispatch=function(t){r(!this.$Dispatcher_isDispatching,"Dispatch.dispatch(...): Cannot dispatch in the middle of a dispatch."),this.$Dispatcher_startDispatching(t);try{for(var e in this.$Dispatcher_callbacks)this.$Dispatcher_isPending[e]||this.$Dispatcher_invokeCallback(e)}finally{this.$Dispatcher_stopDispatching()}},n.prototype.isDispatching=function(){return this.$Dispatcher_isDispatching},n.prototype.$Dispatcher_invokeCallback=function(t){this.$Dispatcher_isPending[t]=!0,this.$Dispatcher_callbacks[t](this.$Dispatcher_pendingPayload),this.$Dispatcher_isHandled[t]=!0},n.prototype.$Dispatcher_startDispatching=function(t){for(var e in this.$Dispatcher_callbacks)this.$Dispatcher_isPending[e]=!1,this.$Dispatcher_isHandled[e]=!1;this.$Dispatcher_pendingPayload=t,this.$Dispatcher_isDispatching=!0},n.prototype.$Dispatcher_stopDispatching=function(){this.$Dispatcher_pendingPayload=null,this.$Dispatcher_isDispatching=!1},t.exports=n},function(t){"use strict";function e(t){if(null==t)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(t)}t.exports=Object.assign||function(t){for(var i,n,r=e(t),s=1;s<arguments.length;s++){i=arguments[s],n=Object.keys(Object(i));for(var a=0;a<n.length;a++)r[n[a]]=i[n[a]]}return r}},function(t){"use strict";var e=0,i=t.exports=function(t){t=t||{};var i=t.prefix,n=t.suffix,r=++e*(t.multiplier||1);return null==i&&(i=""),null==n&&(n=""),String(i)+r+String(n)};i.reset=function(){return e=0}},function(t){"use strict";var e=function(t,e,i,n,r,s,a,o){if(!t){var c;if(void 0===e)c=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var h=[i,n,r,s,a,o],u=0;c=new Error("Invariant Violation: "+e.replace(/%s/g,function(){return h[u++]}))}throw c.framesToPop=1,c}};t.exports=e}]);
var Flummox=function(t){function e(n){if(i[n])return i[n].exports;var r=i[n]={exports:{},id:n,loaded:!1};return t[n].call(r.exports,r,r.exports,e),r.loaded=!0,r.exports}var i={};return e.m=t,e.c=i,e.p="",e(0)}([function(t,e,i){"use strict";function n(t){return t.prototype.constructor.name}var r=function(t){return t&&t.__esModule?t["default"]:t},s=function(t,e){var i=Object.create(t.prototype),n=t.apply(i,e);return null==n||"object"!=typeof n&&"function"!=typeof n?i:n},a=function(t,e,i){e&&Object.defineProperties(t,e),i&&Object.defineProperties(t.prototype,i)},o=function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(t.__proto__=e)},c=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},h=r(i(1)),u=r(i(2)),f=i(3).Dispatcher,l=r(i(4)),p=function(t){function e(){c(this,e),this.dispatcher=new f,this._stores={},this._actions={}}return o(e,t),a(e,null,{createStore:{value:function(t,e){for(var i=arguments.length,r=Array(i>2?i-2:0),a=2;i>a;a++)r[a-2]=arguments[a];if(!(e.prototype instanceof h)){var o=n(e);throw new Error("You've attempted to create a store from the class "+o+", which does not have the base Store class in its prototype chain. Make sure "+("you're using the `extends` keyword: `class "+o+" extends ")+"Store { ... }`")}if(this._stores.hasOwnProperty(t)&&this._stores[t])throw new Error("You've attempted to create multiple stores with key "+t+". Keys must be unique.");var c=s(e,r),u=this.dispatcher.register(c.handler.bind(c));return c._waitFor=this.waitFor.bind(this),c._token=u,this._stores[t]=c,c},writable:!0,configurable:!0},getStore:{value:function(t){return this._stores.hasOwnProperty(t)?this._stores[t]:void 0},writable:!0,configurable:!0},createActions:{value:function(t,e){for(var i=arguments.length,r=Array(i>2?i-2:0),a=2;i>a;a++)r[a-2]=arguments[a];if(!(e.prototype instanceof u)&&e!==u){var o=n(e);throw new Error("You've attempted to create actions from the class "+o+", which does not have the base Actions class in its prototype chain. Make "+("sure you're using the `extends` keyword: `class "+o+" ")+"extends Actions { ... }`")}if(this._actions.hasOwnProperty(t)&&this._actions[t])throw new Error("You've attempted to create multiple actions with key "+t+". Keys must be unique.");var c=s(e,r);return c.dispatch=this.dispatch.bind(this),c.dispatchAsync=this.dispatchAsync.bind(this),this._actions[t]=c,c},writable:!0,configurable:!0},getActions:{value:function(t){return this._actions.hasOwnProperty(t)?this._actions[t]:void 0},writable:!0,configurable:!0},getActionIds:{value:function(t){var e=this.getActions(t);if(e)return e.getConstants()},writable:!0,configurable:!0},dispatch:{value:function(t,e){this._dispatch({actionId:t,body:e})},writable:!0,configurable:!0},dispatchAsync:{value:function(t,e,i){var n=this,r={actionId:t,async:"begin"};return i&&(r.actionArgs=i),this._dispatch(r),e.then(function(e){return n._dispatch({actionId:t,body:e,async:"success"}),e},function(e){return n._dispatch({actionId:t,error:e,async:"failure"}),Promise.reject(e)})["catch"](function(t){return n.emit("error",t),Promise.reject(t)})},writable:!0,configurable:!0},_dispatch:{value:function(t){this.dispatcher.dispatch(t),this.emit("dispatch",t)},writable:!0,configurable:!0},waitFor:{value:function(t){Array.isArray(t)||(t=[t]);var e=function(t){return t instanceof h?t._token:t},i=t.map(e);this.dispatcher.waitFor(i)},writable:!0,configurable:!0},removeAllStoreListeners:{value:function(t){for(var e in this._stores)if(this._stores.hasOwnProperty(e)){var i=this._stores[e];i.removeAllListeners(t)}},writable:!0,configurable:!0},serialize:{value:function i(){var t={};for(var e in this._stores)if(this._stores.hasOwnProperty(e)){var n=this._stores[e],i=n.constructor.serialize;if("function"==typeof i){var r=i(n.state);if("string"!=typeof r){n.constructor.name}if(t[e]=r,"function"!=typeof n.constructor.deserialize){n.constructor.name}}}return JSON.stringify(t)},writable:!0,configurable:!0},deserialize:{value:function r(t){var e=void 0;try{e=JSON.parse(t)}catch(i){{this.constructor.name}}for(var n in this._stores)if(this._stores.hasOwnProperty(n)){var s=this._stores[n],r=s.constructor.deserialize;if("function"==typeof r){var a=e[n],o=r(a);if(s.replaceState(o),"function"!=typeof s.constructor.serialize){s.constructor.name}}}},writable:!0,configurable:!0}}),e}(l);e["default"]=p,p.prototype.getConstants=p.prototype.getActionIds,p.prototype.dehydrate=p.prototype.serialize,p.prototype.hydrate=p.prototype.deserialize;var d=p;e.Flux=p,e.Flummox=d,e.Store=h,e.Actions=u,Object.defineProperty(e,"__esModule",{value:!0})},function(t,e,i){"use strict";function n(t){return"function"==typeof t?t._id:t}var r=function(t){return t&&t.__esModule?t["default"]:t},s=function(t,e,i){e&&Object.defineProperties(t,e),i&&Object.defineProperties(t.prototype,i)},a=function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(t.__proto__=e)},o=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},c=r(i(4)),h=r(i(6)),u=function(t){function e(){o(this,e),this.state=void 0,this._handlers={},this._asyncHandlers={}}return a(e,t),s(e,null,{getState:{value:function(){return h({},this.state)},writable:!0,configurable:!0},setState:{value:function(t){"undefined"==typeof this.state&&(this.state={}),this._isHandlingDispatch?(this._pendingState=h(this._pendingState,t),this._emitChangeAfterHandlingDispatch=!0):(this.state=h({},this.state,t),this.emit("change"))},writable:!0,configurable:!0},replaceState:{value:function(t){"undefined"==typeof this.state&&(this.state={}),this._isHandlingDispatch?(this._pendingState=h({},t),this._emitChangeAfterHandlingDispatch=!0):(this.state=h({},t),this.emit("change"))},writable:!0,configurable:!0},forceUpdate:{value:function(){this._isHandlingDispatch?this._emitChangeAfterHandlingDispatch=!0:this.emit("change")},writable:!0,configurable:!0},register:{value:function(t,e){t=n(t),"function"==typeof e&&(this._handlers[t]=e.bind(this))},writable:!0,configurable:!0},registerAsync:{value:function(t,e,i,r){t=n(t);var s={begin:e,success:i,failure:r};for(var a in s)if(s.hasOwnProperty(a)){var o=s[a];"function"==typeof o?s[a]=o.bind(this):delete s[a]}this._asyncHandlers[t]=s},writable:!0,configurable:!0},waitFor:{value:function(t){this._waitFor(t)},writable:!0,configurable:!0},handler:{value:function(t){var e=t.body,i=t.actionId,n=t.async,r=t.actionArgs,s=t.error,a=this._handlers[i],o=this._asyncHandlers[i]&&this._asyncHandlers[i][n];if(n)switch(n){case"begin":return void("function"==typeof o&&this._performHandler.apply(this,[o].concat(r)));case"failure":return void("function"==typeof o&&this._performHandler(o,s));case"success":"function"==typeof o&&(a=o);break;default:return}"function"==typeof a&&this._performHandler(a,e)},writable:!0,configurable:!0},_performHandler:{value:function(t){for(var e=arguments.length,i=Array(e>1?e-1:0),n=1;e>n;n++)i[n-1]=arguments[n];this._isHandlingDispatch=!0,this._pendingState=h({},this.state),this._emitChangeAfterHandlingDispatch=!1;try{t.apply(this,i)}finally{this._emitChangeAfterHandlingDispatch&&(this.state=this._pendingState,this.emit("change")),this._isHandlingDispatch=!1,this._pendingState={},this._emitChangeAfterHandlingDispatch=!1}},writable:!0,configurable:!0}}),e}(c);t.exports=u},function(t,e,i){"use strict";function n(t){return t&&"function"==typeof t.then}var r=function(t){return t&&t.__esModule?t["default"]:t},s=function(t,e,i){e&&Object.defineProperties(t,e),i&&Object.defineProperties(t.prototype,i)},a=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},o=r(i(7)),c=function(){function t(){a(this,t),this._baseId=o();for(var e=this._getActionMethodNames(),i=0;i<e.length;i++){var n=e[i];this._wrapAction(n)}this.getConstants=this.getActionIds}return s(t,null,{getActionIds:{value:function(){var t=this;return this._getActionMethodNames().reduce(function(e,i){return e[i]=t[i]._id,e},{})},writable:!0,configurable:!0},_getActionMethodNames:{value:function(){var t=this;return Object.getOwnPropertyNames(this.constructor.prototype).filter(function(e){return"constructor"!==e&&"function"==typeof t[e]})},writable:!0,configurable:!0},_wrapAction:{value:function(t){var e=this,i=this[t],r=this._createActionId(t),s=function(){for(var s=arguments.length,a=Array(s),o=0;s>o;o++)a[o]=arguments[o];var c=i.apply(e,a);if(n(c)){var h=c;return e._dispatchAsync(r,h,a,t)}return e._dispatch(r,c,a,t)};s._id=r,this[t]=s},writable:!0,configurable:!0},_createActionId:{value:function(t){return""+this._baseId+"-"+t},writable:!0,configurable:!0},_dispatch:{value:function(t,e,i,n){return"function"==typeof this.dispatch&&"undefined"!=typeof e&&this.dispatch(t,e,i),e},writable:!0,configurable:!0},_dispatchAsync:{value:function(t,e,i,n){return"function"==typeof this.dispatchAsync?this.dispatchAsync(t,e,i):e},writable:!0,configurable:!0}}),t}();t.exports=c},function(t,e,i){t.exports.Dispatcher=i(5)},function(t){"use strict";function e(t,e,i){this.fn=t,this.context=e,this.once=i||!1}function i(){}i.prototype._events=void 0,i.prototype.listeners=function(t){if(!this._events||!this._events[t])return[];if(this._events[t].fn)return[this._events[t].fn];for(var e=0,i=this._events[t].length,n=new Array(i);i>e;e++)n[e]=this._events[t][e].fn;return n},i.prototype.emit=function(t,e,i,n,r,s){if(!this._events||!this._events[t])return!1;var a,o,c=this._events[t],h=arguments.length;if("function"==typeof c.fn){switch(c.once&&this.removeListener(t,c.fn,!0),h){case 1:return c.fn.call(c.context),!0;case 2:return c.fn.call(c.context,e),!0;case 3:return c.fn.call(c.context,e,i),!0;case 4:return c.fn.call(c.context,e,i,n),!0;case 5:return c.fn.call(c.context,e,i,n,r),!0;case 6:return c.fn.call(c.context,e,i,n,r,s),!0}for(o=1,a=new Array(h-1);h>o;o++)a[o-1]=arguments[o];c.fn.apply(c.context,a)}else{var u,f=c.length;for(o=0;f>o;o++)switch(c[o].once&&this.removeListener(t,c[o].fn,!0),h){case 1:c[o].fn.call(c[o].context);break;case 2:c[o].fn.call(c[o].context,e);break;case 3:c[o].fn.call(c[o].context,e,i);break;default:if(!a)for(u=1,a=new Array(h-1);h>u;u++)a[u-1]=arguments[u];c[o].fn.apply(c[o].context,a)}}return!0},i.prototype.on=function(t,i,n){var r=new e(i,n||this);return this._events||(this._events={}),this._events[t]?this._events[t].fn?this._events[t]=[this._events[t],r]:this._events[t].push(r):this._events[t]=r,this},i.prototype.once=function(t,i,n){var r=new e(i,n||this,!0);return this._events||(this._events={}),this._events[t]?this._events[t].fn?this._events[t]=[this._events[t],r]:this._events[t].push(r):this._events[t]=r,this},i.prototype.removeListener=function(t,e,i){if(!this._events||!this._events[t])return this;var n=this._events[t],r=[];if(e&&(n.fn&&(n.fn!==e||i&&!n.once)&&r.push(n),!n.fn))for(var s=0,a=n.length;a>s;s++)(n[s].fn!==e||i&&!n[s].once)&&r.push(n[s]);return r.length?this._events[t]=1===r.length?r[0]:r:delete this._events[t],this},i.prototype.removeAllListeners=function(t){return this._events?(t?delete this._events[t]:this._events={},this):this},i.prototype.off=i.prototype.removeListener,i.prototype.addListener=i.prototype.on,i.prototype.setMaxListeners=function(){return this},i.EventEmitter=i,i.EventEmitter2=i,i.EventEmitter3=i,t.exports=i},function(t,e,i){"use strict";function n(){this.$Dispatcher_callbacks={},this.$Dispatcher_isPending={},this.$Dispatcher_isHandled={},this.$Dispatcher_isDispatching=!1,this.$Dispatcher_pendingPayload=null}var r=i(8),s=1,a="ID_";n.prototype.register=function(t){var e=a+s++;return this.$Dispatcher_callbacks[e]=t,e},n.prototype.unregister=function(t){r(this.$Dispatcher_callbacks[t],"Dispatcher.unregister(...): `%s` does not map to a registered callback.",t),delete this.$Dispatcher_callbacks[t]},n.prototype.waitFor=function(t){r(this.$Dispatcher_isDispatching,"Dispatcher.waitFor(...): Must be invoked while dispatching.");for(var e=0;e<t.length;e++){var i=t[e];this.$Dispatcher_isPending[i]?r(this.$Dispatcher_isHandled[i],"Dispatcher.waitFor(...): Circular dependency detected while waiting for `%s`.",i):(r(this.$Dispatcher_callbacks[i],"Dispatcher.waitFor(...): `%s` does not map to a registered callback.",i),this.$Dispatcher_invokeCallback(i))}},n.prototype.dispatch=function(t){r(!this.$Dispatcher_isDispatching,"Dispatch.dispatch(...): Cannot dispatch in the middle of a dispatch."),this.$Dispatcher_startDispatching(t);try{for(var e in this.$Dispatcher_callbacks)this.$Dispatcher_isPending[e]||this.$Dispatcher_invokeCallback(e)}finally{this.$Dispatcher_stopDispatching()}},n.prototype.isDispatching=function(){return this.$Dispatcher_isDispatching},n.prototype.$Dispatcher_invokeCallback=function(t){this.$Dispatcher_isPending[t]=!0,this.$Dispatcher_callbacks[t](this.$Dispatcher_pendingPayload),this.$Dispatcher_isHandled[t]=!0},n.prototype.$Dispatcher_startDispatching=function(t){for(var e in this.$Dispatcher_callbacks)this.$Dispatcher_isPending[e]=!1,this.$Dispatcher_isHandled[e]=!1;this.$Dispatcher_pendingPayload=t,this.$Dispatcher_isDispatching=!0},n.prototype.$Dispatcher_stopDispatching=function(){this.$Dispatcher_pendingPayload=null,this.$Dispatcher_isDispatching=!1},t.exports=n},function(t){"use strict";function e(t){if(null==t)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(t)}t.exports=Object.assign||function(t){for(var i,n,r=e(t),s=1;s<arguments.length;s++){i=arguments[s],n=Object.keys(Object(i));for(var a=0;a<n.length;a++)r[n[a]]=i[n[a]]}return r}},function(t){"use strict";var e=0,i=t.exports=function(t){t=t||{};var i=t.prefix,n=t.suffix,r=++e*(t.multiplier||1);return null==i&&(i=""),null==n&&(n=""),String(i)+r+String(n)};i.reset=function(){return e=0}},function(t){"use strict";var e=function(t,e,i,n,r,s,a,o){if(!t){var c;if(void 0===e)c=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var h=[i,n,r,s,a,o],u=0;c=new Error("Invariant Violation: "+e.replace(/%s/g,function(){return h[u++]}))}throw c.framesToPop=1,c}};t.exports=e}]);

@@ -100,3 +100,13 @@ API: `Store`

### forceUpdate
```js
forceUpdate()
```
Emits change event.
**Usage note**: If you can, use `setState()` instead.
EventEmitter methods

@@ -103,0 +113,0 @@ --------------------

@@ -402,3 +402,39 @@ "use strict";

});
describe("#forceUpdate()", function () {
it("emits change event", function () {
var store = new ExampleStore();
var listener = sinon.spy();
store.addListener("change", listener);
store.forceUpdate();
expect(listener.calledOnce).to.be["true"];
});
it("doesn't modify existing state", function () {
var store = new ExampleStore();
var listener = sinon.spy();
store.addListener("change", listener);
store.register(actionId, function () {
this.replaceState({ bar: "baz" });
this.forceUpdate();
expect(this.state).to.deep.equal({ foo: "bar" });
expect(listener.called).to.be["false"];
this.setState({ foo: "bar" });
this.forceUpdate();
this.replaceState({ baz: "foo" });
});
// Simulate dispatch
store.handler({ actionId: actionId, body: "foobar" });
expect(listener.calledOnce).to.be["true"];
expect(store.state).to.deep.equal({ baz: "foo" });
});
});
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vU3RvcmUtdGVzdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7b0JBQXFDLFNBQVM7O0lBQXJDLEtBQUssU0FBTCxLQUFLO0lBQUUsSUFBSSxTQUFKLElBQUk7SUFBRSxPQUFPLFNBQVAsT0FBTztJQUN0QixLQUFLLDJCQUFNLE9BQU87O0FBRXpCLFFBQVEsQ0FBQyxPQUFPLEVBQUUsWUFBTTtNQUNoQixZQUFZLGNBQVMsS0FBSztBQUNuQixhQURQLFlBQVk7NEJBQVosWUFBWTs7QUFFZCxpQ0FGRSxZQUFZLDZDQUVOO0FBQ1IsVUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQztLQUM3Qjs7Y0FKRyxZQUFZLEVBQVMsS0FBSzs7V0FBMUIsWUFBWTtLQUFTLEtBQUs7O0FBT2hDLE1BQUksUUFBUSxHQUFHLFVBQVUsQ0FBQzs7QUFFMUIsVUFBUSxDQUFDLGFBQWEsRUFBRSxZQUFNO0FBRTVCLFFBQUksQ0FBQyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7O0FBRTNCLE1BQUUsQ0FBQyxzQkFBc0IsRUFBRSxZQUFNO0FBQy9CLFlBQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0tBQ3BELENBQUMsQ0FBQzs7QUFFSCxNQUFFLENBQUMsb0NBQW9DLEVBQUUsWUFBTTtBQUM3QyxVQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDekIsV0FBSyxDQUFDLEdBQUcsR0FBRyxTQUFTLENBQUM7O0FBRXRCLFlBQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0tBQ3BELENB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QUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsU0FBTSxDQUFDOztBQUVwQyxZQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7QUFDOUIsWUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO09BQ25DLENBQUMsQ0FBQzs7O0FBR0gsV0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLFFBQVEsRUFBUixRQUFRLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7O0FBRTVDLFlBQU0sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsUUFBSyxDQUFDO0FBQ3ZDLFlBQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztLQUNuRCxDQUFDLENBQUM7O0FBRUgsTUFBRSxDQUFDLG9CQUFvQixFQUFFLFlBQU07QUFDN0IsVUFBSSxLQUFLLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztBQUMvQixVQUFJLFFBQVEsR0FBRyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDM0IsV0FBSyxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7O0FBRXRDLFdBQUssQ0FBQyxZQUFZLENBQUMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQzs7QUFFbkMsWUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxRQUFLLENBQUM7S0FDeEMsQ0FBQyxDQUFDO0dBQ0osQ0FBQyxDQUFDO0NBRUosQ0FBQyxDQUFDIiwiZmlsZSI6InNyYy9fX3Rlc3RzX18vU3RvcmUtdGVzdC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0b3JlLCBGbHV4LCBBY3Rpb25zIH0gZnJvbSAnLi4vRmx1eCc7XG5pbXBvcnQgc2lub24gZnJvbSAnc2lub24nO1xuXG5kZXNjcmliZSgnU3RvcmUnLCAoKSA9PiB7XG4gIGNsYXNzIEV4YW1wbGVTdG9yZSBleHRlbmRzIFN0b3JlIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgIHN1cGVyKCk7XG4gICAgICB0aGlzLnN0YXRlID0geyBmb286ICdiYXInIH07XG4gICAgfVxuICB9XG5cbiAgbGV0IGFjdGlvbklkID0gJ2FjdGlvbklkJztcblxuICBkZXNjcmliZSgnI2dldFN0YXRlKCknLCAoKSA9PiB7XG5cbiAgICBsZXQgcyA9IG5ldyBFeGFtcGxlU3RvcmUoKTtcblxuICAgIGl0KCdyZXR1cm5zIHN0YXRlIG9iamVjdCcsICgpID0+IHtcbiAgICAgIGV4cGVjdChzLmdldFN0YXRlKCkpLnRvLmRlZXAuZXF1YWwoeyBmb286ICdiYXInIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3ByZXZlbnRzIG11dGF0aW9ucyBvZiBzdGF0ZSBvYmplY3QnLCAoKSA9PiB7XG4gICAgICBsZXQgc3RhdGUgPSBzLmdldFN0YXRlKCk7XG4gICAgICBzdGF0ZS5mb28gPSAnY2hhbmdlZCc7XG5cbiAgICAgIGV4cGVjdChzLmdldFN0YXRlKCkpLnRvLmRlZXAuZXF1YWwoeyBmb286ICdiYXInIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnI3JlZ2lzdGVyKCknLCAoKSA9PiB7XG4gICAgaXQoJ2FkZHMgaGFuZGxlciB0byBpbnRlcm5hbCBjb2xsZWN0aW9uIG9mIGhhbmRsZXJzJywgKCkgPT4ge1xuICAgICAgbGV0IHN0b3JlID0gbmV3IEV4YW1wbGVTdG9yZSgpO1xuICAgICAgbGV0IGhhbmRsZXIgPSBzaW5vbi5zcHkoKTtcbiAgICAgIHN0b3JlLnJlZ2lzdGVyKGFjdGlvbklkLCBoYW5kbGVyKTtcblxuICAgICAgbGV0IG1vY2tBcmdzID0gWydmb28nLCAnYmFyJ107XG4gICAgICBzdG9yZS5faGFuZGxlcnNbYWN0aW9uSWRdKC4uLm1vY2tBcmdzKTtcblxuICAgICAgZXhwZWN0KGhhbmRsZXIuY2FsbGVkV2l0aCguLi5tb2NrQXJncykpLnRvLmJlLnRydWU7XG4gICAgfSk7XG5cbiAgICBpdCgnYmluZHMgaGFuZGxlciB0byBzdG9yZScsICgpID0+IHtcbiAgICAgIGxldCBzdG9yZSA9IG5ldyBFeGFtcGxlU3RvcmUoKTtcbiAgICAgIHN0b3JlLmZvbyA9ICdiYXInO1xuXG4gICAgICBmdW5jdGlvbiBoYW5kbGVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5mb287XG4gICAgICB9XG5cbiAgICAgIHN0b3JlLnJlZ2lzdGVyKGFjdGlvbklkLCBoYW5kbGVyKTtcblxuICAgICAgZXhwZWN0KHN0b3JlLl9oYW5kbGVyc1thY3Rpb25JZF0oKSkudG8uZXF1YWwoJ2JhcicpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2FjY2VwdHMgYWN0aW9ucyBpbnN0ZWFkIG9mIGFjdGlvbiBpZHMnLCAoKSA9PiB7XG4gICAgICBjbGFzcyBFeGFtcGxlQWN0aW9ucyBleHRlbmRzIEFjdGlvbnMge1xuICAgICAgICBnZXRGb28oKSB7XG4gICAgICAgICAgcmV0dXJuICdmb28nO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGxldCBhY3Rpb25zID0gbmV3IEV4YW1wbGVBY3Rpb25zKCk7XG4gICAgICBsZXQgc3RvcmUgPSBuZXcgRXhhbXBsZVN0b3JlKCk7XG4gICAgICBsZXQgaGFuZGxlciA9IHNpbm9uLnNweSgpO1xuICAgICAgc3RvcmUucmVnaXN0ZXIoYWN0aW9ucy5nZXRGb28sIGhhbmRsZXIpO1xuXG4gICAgICBsZXQgbW9ja0FyZ3MgPSBbJ2ZvbycsICdiYXInXTtcbiAgICAgIHN0b3JlLl9oYW5kbGVyc1thY3Rpb25zLmdldEZvby5faWRdKC4uLm1vY2tBcmdzKTtcblxuICAgICAgZXhwZWN0KGhhbmRsZXIuY2FsbGVkV2l0aCguLi5tb2NrQXJncykpLnRvLmJlLnRydWU7XG4gICAgfSk7XG5cbiAgICBpdCgnaWdub3JlcyBub24tZnVuY3Rpb24gaGFuZGxlcnMnLCAoKSA9PiB7XG4gICAgICBsZXQgc3RvcmUgPSBuZXcgRXhhbXBsZVN0b3JlKCk7XG4gICAgICBleHBlY3Qoc3RvcmUucmVnaXN0ZXIuYmluZChzdG9yZSwgbnVsbCkpLm5vdC50by50aHJvdygpO1xuICAgIH0pO1xuXG4gIH0pO1xuXG4gIGRlc2NyaWJlKCcjcmVnaXN0ZXJBc3luYygpJywgKCkgPT4ge1xuICAgIGl0KCdyZWdpc3RlcnMgaGFuZGxlcnMgZm9yIGJlZ2luLCBzdWNjZXNzLCBhbmQgZmFpbHVyZSBvZiBhc3luYyBhY3Rpb24nLCBhc3luYyBmdW5jdGlvbigpIHtcbiAgICAgIGxldCBlcnJvciA9IG5ldyBFcnJvcigpO1xuXG4gICAgICBjbGFzcyBFeGFtcGxlQWN0aW9ucyBleHRlbmRzIEFjdGlvbnMge1xuICAgICAgICBhc3luYyBnZXRGb28obWVzc2FnZSwgX3N1Y2Nlc3MgPSB0cnVlKSB7XG4gICAgICAgICAgaWYgKCFfc3VjY2VzcykgdGhyb3cgZXJyb3I7XG5cbiAgICAgICAgICByZXR1cm4gbWVzc2FnZSArICcgc3VjY2Vzcyc7XG4gICAgICAgIH1cblxuICAgICAgICBhc3luYyBnZXRCYXIobWVzc2FnZSkge1xuICAgICAgICAgIHJldHVybiBtZXNzYWdlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNsYXNzIEV4YW1wbGVGbHV4IGV4dGVuZHMgRmx1eCB7XG4gICAgICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICAgIHN1cGVyKCk7XG4gICAgICAgICAgdGhpcy5jcmVhdGVBY3Rpb25zKCdleGFtcGxlJywgRXhhbXBsZUFjdGlvbnMpO1xuICAgICAgICAgIHRoaXMuY3JlYXRlU3RvcmUoJ2V4YW1wbGUnLCBFeGFtcGxlU3RvcmUpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGxldCBmbHV4ID0gbmV3IEV4YW1wbGVGbHV4KCk7XG4gICAgICBsZXQgYWN0aW9ucyA9IGZsdXguZ2V0QWN0aW9ucygnZXhhbXBsZScpO1xuICAgICAgbGV0IHN0b3JlID0gZmx1eC5nZXRTdG9yZSgnZXhhbXBsZScpO1xuXG4gICAgICBsZXQgaGFuZGxlciA9IHNpbm9uLnNweSgpO1xuICAgICAgc3RvcmUucmVnaXN0ZXIoYWN0aW9ucy5nZXRCYXIsIGhhbmRsZXIpO1xuXG4gICAgICBhd2FpdCBhY3Rpb25zLmdldEJhcignYmFyJyk7XG4gICAgICBleHBlY3QoaGFuZGxlci5jYWxsZWRPbmNlKS50by5iZS50cnVlO1xuICAgICAgZXhwZWN0KGhhbmRsZXIuZmlyc3RDYWxsLmFyZ3MpLnRvLmRlZXAuZXF1YWwoWydiYXInXSk7XG5cbiAgICAgIGxldCBiZWdpbiA9IHNpbm9uLnNweSgpO1xuICAgICAgbGV0IHN1Y2Nlc3MgPSBzaW5vbi5zcHkoKTtcbiAgICAgIGxldCBmYWlsdXJlID0gc2lub24uc3B5KCk7XG4gICAgICBzdG9yZS5yZWdpc3RlckFzeW5jKGFjdGlvbnMuZ2V0Rm9vLCBiZWdpbiwgc3VjY2VzcywgZmFpbHVyZSk7XG5cbiAgICAgIGF3YWl0IGFjdGlvbnMuZ2V0Rm9vKCdmb28nLCB0cnVlKTtcbiAgICAgIGV4cGVjdChiZWdpbi5jYWxsZWRPbmNlKS50by5iZS50cnVlO1xuICAgICAgZXhwZWN0KGJlZ2luLmZpcnN0Q2FsbC5hcmdzKS50by5kZWVwLmVxdWFsKFsnZm9vJywgdHJ1ZV0pO1xuICAgICAgZXhwZWN0KHN1Y2Nlc3MuY2FsbGVkT25jZSkudG8uYmUudHJ1ZTtcbiAgICAgIGV4cGVjdChzdWNjZXNzLmZpcnN0Q2FsbC5hcmdzWzBdKS50by5lcXVhbCgnZm9vIHN1Y2Nlc3MnKTtcbiAgICAgIGV4cGVjdChmYWlsdXJlLmNhbGxlZCkudG8uYmUuZmFsc2U7XG5cbiAgICAgIGF3YWl0IGV4cGVjdChhY3Rpb25zLmdldEZvbygnYmFyJywgZmFsc2UpKS50by5iZS5yZWplY3RlZDtcblxuICAgICAgZXhwZWN0KGJlZ2luLmNhbGxlZFR3aWNlKS50by5iZS50cnVlO1xuICAgICAgZXhwZWN0KHN1Y2Nlc3MuY2FsbGVkT25jZSkudG8uYmUudHJ1ZTtcbiAgICAgIGV4cGVjdChmYWlsdXJlLmNhbGxlZE9uY2UpLnRvLmJlLnRydWU7XG4gICAgICBleHBlY3QoZmFpbHVyZS5maXJzdENhbGwuYXJnc1swXSkudG8uZXF1YWwoZXJyb3IpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2lnbm9yZXMgbm9uLWZ1bmN0aW9uIGhhbmRsZXJzJywgKCkgPT4ge1xuICAgICAgbGV0IHN0b3JlID0gbmV3IEV4YW1wbGVTdG9yZSgpO1xuICAgICAgZXhwZWN0KHN0b3JlLnJlZ2lzdGVyQXN5bmMuYmluZChzdG9yZSwgbnVsbCkpLm5vdC50by50aHJvdygpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnI2hhbmRsZXIoKScsICgpID0+IHtcbiAgICBpdCgnZGVsZWdhdGVzIGRpc3BhdGNoZXMgdG8gcmVnaXN0ZXJlZCBoYW5kbGVycycsICgpID0+IHtcbiAgICAgIGxldCBzdG9yZSA9IG5ldyBFeGFtcGxlU3RvcmUoKTtcbiAgICAgIGxldCBoYW5kbGVyID0gc2lub24uc3B5KCk7XG4gICAgICBzdG9yZS5yZWdpc3RlcihhY3Rpb25JZCwgaGFuZGxlcik7XG5cbiAgICAgIC8vIFNpbXVsYXRlIGRpc3BhdGNoXG4gICAgICBsZXQgYm9keSA9IHsgZm9vOiAnYmFyJyB9O1xuICAgICAgc3RvcmUuaGFuZGxlcih7IGJvZHksIGFjdGlvbklkIH0pO1xuXG4gICAgICBleHBlY3QoaGFuZGxlci5jYWxsZWRXaXRoKGJvZHkpKS50by5iZS50cnVlO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnI3dhaXRGb3IoKScsICgpID0+IHtcbiAgICBpdCgnd2FpdHMgZm9yIG90aGVyIHN0b3JlcycsICgpID0+IHtcbiAgICAgIGxldCBmbHV4ID0gbmV3IEZsdXgoKTtcbiAgICAgIGxldCByZXN1bHQgPSBbXTtcblxuICAgICAgbGV0IHN0b3JlMjtcblxuICAgICAgY2xhc3MgU3RvcmUxIGV4dGVuZHMgU3RvcmUge1xuICAgICAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgICBzdXBlcigpO1xuXG4gICAgICAgICAgdGhpcy5yZWdpc3RlcihhY3Rpb25JZCwgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB0aGlzLndhaXRGb3Ioc3RvcmUyKTtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKDEpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNsYXNzIFN0b3JlMiBleHRlbmRzIFN0b3JlIHtcbiAgICAgICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgICAgc3VwZXIoKTtcblxuICAgICAgICAgIHRoaXMucmVnaXN0ZXIoYWN0aW9uSWQsICgpID0+IHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKDIpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGZsdXguY3JlYXRlU3RvcmUoJ3N0b3JlMScsIFN0b3JlMSk7XG4gICAgICBmbHV4LmNyZWF0ZVN0b3JlKCdzdG9yZTInLCBTdG9yZTIpO1xuXG4gICAgICBzdG9yZTIgPSBmbHV4LmdldFN0b3JlKCdzdG9yZTInKTtcblxuICAgICAgZmx1eC5kaXNwYXRjaChhY3Rpb25JZCwgJ2Zvb2JhcicpO1xuXG4gICAgICBleHBlY3QocmVzdWx0KS50by5kZWVwLmVxdWFsKFsyLCAxXSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCcjc2V0U3RhdGUoKScsICgpID0+IHtcbiAgICBpdCgnc2hhbGxvdyBtZXJnZXMgb2xkIHN0YXRlIHdpdGggbmV3IHN0YXRlJywgKCkgPT4ge1xuICAgICAgbGV0IHN0b3JlID0gbmV3IEV4YW1wbGVTdG9yZSgpO1xuXG4gICAgICBzdG9yZS5zZXRTdGF0ZSh7IGJhcjogJ2JheicgfSk7XG5cbiAgICAgIGV4cGVjdChzdG9yZS5zdGF0ZSkudG8uZGVlcC5lcXVhbCh7XG4gICAgICAgIGZvbzogJ2JhcicsXG4gICAgICAgIGJhcjogJ2JheicsXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdlbWl0cyBjaGFuZ2UgZXZlbnQnLCAoKSA9PiB7XG4gICAgICBsZXQgc3RvcmUgPSBuZXcgRXhhbXBsZVN0b3JlKCk7XG4gICAgICBsZXQgbGlzdGVuZXIgPSBzaW5vbi5zcHkoKTtcbiAgICAgIHN0b3JlLmFkZExpc3RlbmVyKCdjaGFuZ2UnLCBsaXN0ZW5lcik7XG5cbiAgICAgIHN0b3JlLnNldFN0YXRlKHsgZm9vOiAnYmFyJyB9KTtcblxuICAgICAgZXhwZWN0KGxpc3RlbmVyLmNhbGxlZE9uY2UpLnRvLmJlLnRydWU7XG4gICAgfSk7XG5cbiAgICBpdCgnYmF0Y2hlcyBtdWx0aXBsZSBzdGF0ZSB1cGRhdGVzIHdpdGhpbiBhY3Rpb24gaGFuZGxlcicsICgpID0+IHtcbiAgICAgIGxldCBzdG9yZSA9IG5ldyBFeGFtcGxlU3RvcmUoKTtcbiAgICAgIGxldCBsaXN0ZW5lciA9IHNpbm9uLnNweSgpO1xuICAgICAgc3RvcmUuYWRkTGlzdGVuZXIoJ2NoYW5nZScsIGxpc3RlbmVyKTtcblxuICAgICAgc3RvcmUucmVnaXN0ZXIoYWN0aW9uSWQsIGZ1bmN0aW9uKCkge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHsgYmFyOiAnYmF6JyB9KTtcblxuICAgICAgICBleHBlY3QodGhpcy5zdGF0ZSkudG8uZGVlcC5lcXVhbCh7IGZvbzogJ2JhcicgfSk7XG4gICAgICAgIGV4cGVjdChsaXN0ZW5lci5jYWxsZWQpLnRvLmJlLmZhbHNlO1xuXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBiYXo6ICdmb28nIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIC8vIFNpbXVsYXRlIGRpc3BhdGNoXG4gICAgICBzdG9yZS5oYW5kbGVyKHsgYWN0aW9uSWQsIGJvZHk6ICdmb29iYXInIH0pO1xuXG4gICAgICBleHBlY3QobGlzdGVuZXIuY2FsbGVkT25jZSkudG8uYmUudHJ1ZTtcbiAgICAgIGV4cGVjdChzdG9yZS5zdGF0ZSkudG8uZGVlcC5lcXVhbCh7IGZvbzogJ2JhcicsIGJhcjogJ2JheicsIGJhejogJ2ZvbycgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnd2FybnMgaWYgY2FsbGVkIGZyb20gb3V0c2lkZSBhbiBhY3Rpb24gaGFuZGxlcicsICgpID0+IHtcbiAgICAgIGxldCBzdG9yZSA9IG5ldyBFeGFtcGxlU3RvcmUoKTtcbiAgICAgIGxldCB3YXJuID0gc2lub24uc3B5KGNvbnNvbGUsICd3YXJuJyk7XG5cbiAgICAgIHN0b3JlLnNldFN0YXRlKHsgZm9vOiAnYmFyJyB9KTtcblxuICAgICAgZXhwZWN0KHdhcm4uZmlyc3RDYWxsLmFyZ3NbMF0pLnRvLmVxdWFsKFxuICAgICAgICAnU3RvcmUjc2V0U3RhdGUoKSBjYWxsZWQgZnJvbSBvdXRzaWRlIGFuIGFjdGlvbiBoYW5kbGVyLiBUaGlzIGlzICdcbiAgICAgICsgJ2xpa2VseSBhIG1pc3Rha2UuIEZsdXggc3RvcmVzIHNob3VsZCBtYW5hZ2UgdGhlaXIgb3duIHN0YXRlLidcbiAgICAgICk7XG5cbiAgICAgIGNvbnNvbGUud2Fybi5yZXN0b3JlKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCcjcmVwbGFjZVN0YXRlKCknLCAoKSA9PiB7XG4gICAgaXQoJ3JlcGxhY2VzIG9sZCBzdGF0ZSB3aXRoIG5ldyBzdGF0ZScsICgpID0+IHtcbiAgICAgIGxldCBzdG9yZSA9IG5ldyBFeGFtcGxlU3RvcmUoKTtcblxuICAgICAgc3RvcmUucmVwbGFjZVN0YXRlKHsgYmFyOiAnYmF6JyB9KTtcblxuICAgICAgZXhwZWN0KHN0b3JlLnN0YXRlKS50by5kZWVwLmVxdWFsKHtcbiAgICAgICAgYmFyOiAnYmF6JyxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ2JhdGNoZXMgbXVsdGlwbGUgc3RhdGUgdXBkYXRlcyB3aXRoaW4gYWN0aW9uIGhhbmRsZXInLCAoKSA9PiB7XG4gICAgICBsZXQgc3RvcmUgPSBuZXcgRXhhbXBsZVN0b3JlKCk7XG4gICAgICBsZXQgbGlzdGVuZXIgPSBzaW5vbi5zcHkoKTtcbiAgICAgIHN0b3JlLmFkZExpc3RlbmVyKCdjaGFuZ2UnLCBsaXN0ZW5lcik7XG5cbiAgICAgIHN0b3JlLnJlZ2lzdGVyKGFjdGlvbklkLCBmdW5jdGlvbigpIHtcbiAgICAgICAgdGhpcy5yZXBsYWNlU3RhdGUoeyBiYXI6ICdiYXonIH0pO1xuXG4gICAgICAgIGV4cGVjdCh0aGlzLnN0YXRlKS50by5kZWVwLmVxdWFsKHsgZm9vOiAnYmFyJyB9KTtcbiAgICAgICAgZXhwZWN0KGxpc3RlbmVyLmNhbGxlZCkudG8uYmUuZmFsc2U7XG5cbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGZvbzogJ2JhcicgfSk7XG4gICAgICAgIHRoaXMucmVwbGFjZVN0YXRlKHsgYmF6OiAnZm9vJyB9KTtcbiAgICAgIH0pO1xuXG4gICAgICAvLyBTaW11bGF0ZSBkaXNwYXRjaFxuICAgICAgc3RvcmUuaGFuZGxlcih7IGFjdGlvbklkLCBib2R5OiAnZm9vYmFyJyB9KTtcblxuICAgICAgZXhwZWN0KGxpc3RlbmVyLmNhbGxlZE9uY2UpLnRvLmJlLnRydWU7XG4gICAgICBleHBlY3Qoc3RvcmUuc3RhdGUpLnRvLmRlZXAuZXF1YWwoeyBiYXo6ICdmb28nIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ2VtaXRzIGNoYW5nZSBldmVudCcsICgpID0+IHtcbiAgICAgIGxldCBzdG9yZSA9IG5ldyBFeGFtcGxlU3RvcmUoKTtcbiAgICAgIGxldCBsaXN0ZW5lciA9IHNpbm9uLnNweSgpO1xuICAgICAgc3RvcmUuYWRkTGlzdGVuZXIoJ2NoYW5nZScsIGxpc3RlbmVyKTtcblxuICAgICAgc3RvcmUucmVwbGFjZVN0YXRlKHsgZm9vOiAnYmFyJyB9KTtcblxuICAgICAgZXhwZWN0KGxpc3RlbmVyLmNhbGxlZE9uY2UpLnRvLmJlLnRydWU7XG4gICAgfSk7XG4gIH0pO1xuXG59KTtcbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vU3RvcmUtdGVzdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7b0JBQXFDLFNBQVM7O0lBQXJDLEtBQUssU0FBTCxLQUFLO0lBQUUsSUFBSSxTQUFKLElBQUk7SUFBRSxPQUFPLFNBQVAsT0FBTztJQUN0QixLQUFLLDJCQUFNLE9BQU87O0FBRXpCLFFBQVEsQ0FBQyxPQUFPLEVBQUUsWUFBTTtNQUNoQixZQUFZLGNBQVMsS0FBSztBQUNuQixhQURQLFlBQVk7NEJBQVosWUFBWTs7QUFFZCxpQ0FGRSxZQUFZLDZDQUVOO0FBQ1IsVUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQztLQUM3Qjs7Y0FKRyxZQUFZLEVBQVMsS0FBSzs7V0FBMUIsWUFBWTtLQUFTLEtBQUs7O0FBT2hDLE1BQUksUUFBUSxHQUFHLFVBQVUsQ0FBQzs7QUFFMUIsVUFBUSxDQUFDLGFBQWEsRUFBRSxZQUFNO0FBRTVCLFFBQUksQ0FBQyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7O0FBRTNCLE1BQUUsQ0FBQyxzQkFBc0IsRUFBRSxZQUFNO0FBQy9CLFlBQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0tBQ3BELENBQUMsQ0FBQzs7QUFFSCxNQUFFLENBQUMsb0NBQW9DLEVBQUUsWUFBTTtBQUM3QyxVQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDekIsV0FBSyxDQUFDLEdBQUcsR0FBRyxTQUFTLENBQUM7O0FBRXRCLFlBQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0tBQ3BELENB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QUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7O0FBRTVDLFlBQU0sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsUUFBSyxDQUFDO0FBQ3ZDLFlBQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztLQUNuRCxDQUFDLENBQUM7R0FDSixDQUFDLENBQUM7Q0FFSixDQUFDLENBQUMiLCJmaWxlIjoic3JjL19fdGVzdHNfXy9TdG9yZS10ZXN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3RvcmUsIEZsdXgsIEFjdGlvbnMgfSBmcm9tICcuLi9GbHV4JztcbmltcG9ydCBzaW5vbiBmcm9tICdzaW5vbic7XG5cbmRlc2NyaWJlKCdTdG9yZScsICgpID0+IHtcbiAgY2xhc3MgRXhhbXBsZVN0b3JlIGV4dGVuZHMgU3RvcmUge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgc3VwZXIoKTtcbiAgICAgIHRoaXMuc3RhdGUgPSB7IGZvbzogJ2JhcicgfTtcbiAgICB9XG4gIH1cblxuICBsZXQgYWN0aW9uSWQgPSAnYWN0aW9uSWQnO1xuXG4gIGRlc2NyaWJlKCcjZ2V0U3RhdGUoKScsICgpID0+IHtcblxuICAgIGxldCBzID0gbmV3IEV4YW1wbGVTdG9yZSgpO1xuXG4gICAgaXQoJ3JldHVybnMgc3RhdGUgb2JqZWN0JywgKCkgPT4ge1xuICAgICAgZXhwZWN0KHMuZ2V0U3RhdGUoKSkudG8uZGVlcC5lcXVhbCh7IGZvbzogJ2JhcicgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgncHJldmVudHMgbXV0YXRpb25zIG9mIHN0YXRlIG9iamVjdCcsICgpID0+IHtcbiAgICAgIGxldCBzdGF0ZSA9IHMuZ2V0U3RhdGUoKTtcbiAgICAgIHN0YXRlLmZvbyA9ICdjaGFuZ2VkJztcblxuICAgICAgZXhwZWN0KHMuZ2V0U3RhdGUoKSkudG8uZGVlcC5lcXVhbCh7IGZvbzogJ2JhcicgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCcjcmVnaXN0ZXIoKScsICgpID0+IHtcbiAgICBpdCgnYWRkcyBoYW5kbGVyIHRvIGludGVybmFsIGNvbGxlY3Rpb24gb2YgaGFuZGxlcnMnLCAoKSA9PiB7XG4gICAgICBsZXQgc3RvcmUgPSBuZXcgRXhhbXBsZVN0b3JlKCk7XG4gICAgICBsZXQgaGFuZGxlciA9IHNpbm9uLnNweSgpO1xuICAgICAgc3RvcmUucmVnaXN0ZXIoYWN0aW9uSWQsIGhhbmRsZXIpO1xuXG4gICAgICBsZXQgbW9ja0FyZ3MgPSBbJ2ZvbycsICdiYXInXTtcbiAgICAgIHN0b3JlLl9oYW5kbGVyc1thY3Rpb25JZF0oLi4ubW9ja0FyZ3MpO1xuXG4gICAgICBleHBlY3QoaGFuZGxlci5jYWxsZWRXaXRoKC4uLm1vY2tBcmdzKSkudG8uYmUudHJ1ZTtcbiAgICB9KTtcblxuICAgIGl0KCdiaW5kcyBoYW5kbGVyIHRvIHN0b3JlJywgKCkgPT4ge1xuICAgICAgbGV0IHN0b3JlID0gbmV3IEV4YW1wbGVTdG9yZSgpO1xuICAgICAgc3RvcmUuZm9vID0gJ2Jhcic7XG5cbiAgICAgIGZ1bmN0aW9uIGhhbmRsZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvbztcbiAgICAgIH1cblxuICAgICAgc3RvcmUucmVnaXN0ZXIoYWN0aW9uSWQsIGhhbmRsZXIpO1xuXG4gICAgICBleHBlY3Qoc3RvcmUuX2hhbmRsZXJzW2FjdGlvbklkXSgpKS50by5lcXVhbCgnYmFyJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnYWNjZXB0cyBhY3Rpb25zIGluc3RlYWQgb2YgYWN0aW9uIGlkcycsICgpID0+IHtcbiAgICAgIGNsYXNzIEV4YW1wbGVBY3Rpb25zIGV4dGVuZHMgQWN0aW9ucyB7XG4gICAgICAgIGdldEZvbygpIHtcbiAgICAgICAgICByZXR1cm4gJ2Zvbyc7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgbGV0IGFjdGlvbnMgPSBuZXcgRXhhbXBsZUFjdGlvbnMoKTtcbiAgICAgIGxldCBzdG9yZSA9IG5ldyBFeGFtcGxlU3RvcmUoKTtcbiAgICAgIGxldCBoYW5kbGVyID0gc2lub24uc3B5KCk7XG4gICAgICBzdG9yZS5yZWdpc3RlcihhY3Rpb25zLmdldEZvbywgaGFuZGxlcik7XG5cbiAgICAgIGxldCBtb2NrQXJncyA9IFsnZm9vJywgJ2JhciddO1xuICAgICAgc3RvcmUuX2hhbmRsZXJzW2FjdGlvbnMuZ2V0Rm9vLl9pZF0oLi4ubW9ja0FyZ3MpO1xuXG4gICAgICBleHBlY3QoaGFuZGxlci5jYWxsZWRXaXRoKC4uLm1vY2tBcmdzKSkudG8uYmUudHJ1ZTtcbiAgICB9KTtcblxuICAgIGl0KCdpZ25vcmVzIG5vbi1mdW5jdGlvbiBoYW5kbGVycycsICgpID0+IHtcbiAgICAgIGxldCBzdG9yZSA9IG5ldyBFeGFtcGxlU3RvcmUoKTtcbiAgICAgIGV4cGVjdChzdG9yZS5yZWdpc3Rlci5iaW5kKHN0b3JlLCBudWxsKSkubm90LnRvLnRocm93KCk7XG4gICAgfSk7XG5cbiAgfSk7XG5cbiAgZGVzY3JpYmUoJyNyZWdpc3RlckFzeW5jKCknLCAoKSA9PiB7XG4gICAgaXQoJ3JlZ2lzdGVycyBoYW5kbGVycyBmb3IgYmVnaW4sIHN1Y2Nlc3MsIGFuZCBmYWlsdXJlIG9mIGFzeW5jIGFjdGlvbicsIGFzeW5jIGZ1bmN0aW9uKCkge1xuICAgICAgbGV0IGVycm9yID0gbmV3IEVycm9yKCk7XG5cbiAgICAgIGNsYXNzIEV4YW1wbGVBY3Rpb25zIGV4dGVuZHMgQWN0aW9ucyB7XG4gICAgICAgIGFzeW5jIGdldEZvbyhtZXNzYWdlLCBfc3VjY2VzcyA9IHRydWUpIHtcbiAgICAgICAgICBpZiAoIV9zdWNjZXNzKSB0aHJvdyBlcnJvcjtcblxuICAgICAgICAgIHJldHVybiBtZXNzYWdlICsgJyBzdWNjZXNzJztcbiAgICAgICAgfVxuXG4gICAgICAgIGFzeW5jIGdldEJhcihtZXNzYWdlKSB7XG4gICAgICAgICAgcmV0dXJuIG1lc3NhZ2U7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY2xhc3MgRXhhbXBsZUZsdXggZXh0ZW5kcyBGbHV4IHtcbiAgICAgICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgICB0aGlzLmNyZWF0ZUFjdGlvbnMoJ2V4YW1wbGUnLCBFeGFtcGxlQWN0aW9ucyk7XG4gICAgICAgICAgdGhpcy5jcmVhdGVTdG9yZSgnZXhhbXBsZScsIEV4YW1wbGVTdG9yZSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgbGV0IGZsdXggPSBuZXcgRXhhbXBsZUZsdXgoKTtcbiAgICAgIGxldCBhY3Rpb25zID0gZmx1eC5nZXRBY3Rpb25zKCdleGFtcGxlJyk7XG4gICAgICBsZXQgc3RvcmUgPSBmbHV4LmdldFN0b3JlKCdleGFtcGxlJyk7XG5cbiAgICAgIGxldCBoYW5kbGVyID0gc2lub24uc3B5KCk7XG4gICAgICBzdG9yZS5yZWdpc3RlcihhY3Rpb25zLmdldEJhciwgaGFuZGxlcik7XG5cbiAgICAgIGF3YWl0IGFjdGlvbnMuZ2V0QmFyKCdiYXInKTtcbiAgICAgIGV4cGVjdChoYW5kbGVyLmNhbGxlZE9uY2UpLnRvLmJlLnRydWU7XG4gICAgICBleHBlY3QoaGFuZGxlci5maXJzdENhbGwuYXJncykudG8uZGVlcC5lcXVhbChbJ2JhciddKTtcblxuICAgICAgbGV0IGJlZ2luID0gc2lub24uc3B5KCk7XG4gICAgICBsZXQgc3VjY2VzcyA9IHNpbm9uLnNweSgpO1xuICAgICAgbGV0IGZhaWx1cmUgPSBzaW5vbi5zcHkoKTtcbiAgICAgIHN0b3JlLnJlZ2lzdGVyQXN5bmMoYWN0aW9ucy5nZXRGb28sIGJlZ2luLCBzdWNjZXNzLCBmYWlsdXJlKTtcblxuICAgICAgYXdhaXQgYWN0aW9ucy5nZXRGb28oJ2ZvbycsIHRydWUpO1xuICAgICAgZXhwZWN0KGJlZ2luLmNhbGxlZE9uY2UpLnRvLmJlLnRydWU7XG4gICAgICBleHBlY3QoYmVnaW4uZmlyc3RDYWxsLmFyZ3MpLnRvLmRlZXAuZXF1YWwoWydmb28nLCB0cnVlXSk7XG4gICAgICBleHBlY3Qoc3VjY2Vzcy5jYWxsZWRPbmNlKS50by5iZS50cnVlO1xuICAgICAgZXhwZWN0KHN1Y2Nlc3MuZmlyc3RDYWxsLmFyZ3NbMF0pLnRvLmVxdWFsKCdmb28gc3VjY2VzcycpO1xuICAgICAgZXhwZWN0KGZhaWx1cmUuY2FsbGVkKS50by5iZS5mYWxzZTtcblxuICAgICAgYXdhaXQgZXhwZWN0KGFjdGlvbnMuZ2V0Rm9vKCdiYXInLCBmYWxzZSkpLnRvLmJlLnJlamVjdGVkO1xuXG4gICAgICBleHBlY3QoYmVnaW4uY2FsbGVkVHdpY2UpLnRvLmJlLnRydWU7XG4gICAgICBleHBlY3Qoc3VjY2Vzcy5jYWxsZWRPbmNlKS50by5iZS50cnVlO1xuICAgICAgZXhwZWN0KGZhaWx1cmUuY2FsbGVkT25jZSkudG8uYmUudHJ1ZTtcbiAgICAgIGV4cGVjdChmYWlsdXJlLmZpcnN0Q2FsbC5hcmdzWzBdKS50by5lcXVhbChlcnJvcik7XG4gICAgfSk7XG5cbiAgICBpdCgnaWdub3JlcyBub24tZnVuY3Rpb24gaGFuZGxlcnMnLCAoKSA9PiB7XG4gICAgICBsZXQgc3RvcmUgPSBuZXcgRXhhbXBsZVN0b3JlKCk7XG4gICAgICBleHBlY3Qoc3RvcmUucmVnaXN0ZXJBc3luYy5iaW5kKHN0b3JlLCBudWxsKSkubm90LnRvLnRocm93KCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCcjaGFuZGxlcigpJywgKCkgPT4ge1xuICAgIGl0KCdkZWxlZ2F0ZXMgZGlzcGF0Y2hlcyB0byByZWdpc3RlcmVkIGhhbmRsZXJzJywgKCkgPT4ge1xuICAgICAgbGV0IHN0b3JlID0gbmV3IEV4YW1wbGVTdG9yZSgpO1xuICAgICAgbGV0IGhhbmRsZXIgPSBzaW5vbi5zcHkoKTtcbiAgICAgIHN0b3JlLnJlZ2lzdGVyKGFjdGlvbklkLCBoYW5kbGVyKTtcblxuICAgICAgLy8gU2ltdWxhdGUgZGlzcGF0Y2hcbiAgICAgIGxldCBib2R5ID0geyBmb286ICdiYXInIH07XG4gICAgICBzdG9yZS5oYW5kbGVyKHsgYm9keSwgYWN0aW9uSWQgfSk7XG5cbiAgICAgIGV4cGVjdChoYW5kbGVyLmNhbGxlZFdpdGgoYm9keSkpLnRvLmJlLnRydWU7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCcjd2FpdEZvcigpJywgKCkgPT4ge1xuICAgIGl0KCd3YWl0cyBmb3Igb3RoZXIgc3RvcmVzJywgKCkgPT4ge1xuICAgICAgbGV0IGZsdXggPSBuZXcgRmx1eCgpO1xuICAgICAgbGV0IHJlc3VsdCA9IFtdO1xuXG4gICAgICBsZXQgc3RvcmUyO1xuXG4gICAgICBjbGFzcyBTdG9yZTEgZXh0ZW5kcyBTdG9yZSB7XG4gICAgICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICAgIHN1cGVyKCk7XG5cbiAgICAgICAgICB0aGlzLnJlZ2lzdGVyKGFjdGlvbklkLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHRoaXMud2FpdEZvcihzdG9yZTIpO1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goMSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY2xhc3MgU3RvcmUyIGV4dGVuZHMgU3RvcmUge1xuICAgICAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgICBzdXBlcigpO1xuXG4gICAgICAgICAgdGhpcy5yZWdpc3RlcihhY3Rpb25JZCwgKCkgPT4ge1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goMik7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZmx1eC5jcmVhdGVTdG9yZSgnc3RvcmUxJywgU3RvcmUxKTtcbiAgICAgIGZsdXguY3JlYXRlU3RvcmUoJ3N0b3JlMicsIFN0b3JlMik7XG5cbiAgICAgIHN0b3JlMiA9IGZsdXguZ2V0U3RvcmUoJ3N0b3JlMicpO1xuXG4gICAgICBmbHV4LmRpc3BhdGNoKGFjdGlvbklkLCAnZm9vYmFyJyk7XG5cbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvLmRlZXAuZXF1YWwoWzIsIDFdKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJyNzZXRTdGF0ZSgpJywgKCkgPT4ge1xuICAgIGl0KCdzaGFsbG93IG1lcmdlcyBvbGQgc3RhdGUgd2l0aCBuZXcgc3RhdGUnLCAoKSA9PiB7XG4gICAgICBsZXQgc3RvcmUgPSBuZXcgRXhhbXBsZVN0b3JlKCk7XG5cbiAgICAgIHN0b3JlLnNldFN0YXRlKHsgYmFyOiAnYmF6JyB9KTtcblxuICAgICAgZXhwZWN0KHN0b3JlLnN0YXRlKS50by5kZWVwLmVxdWFsKHtcbiAgICAgICAgZm9vOiAnYmFyJyxcbiAgICAgICAgYmFyOiAnYmF6JyxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ2VtaXRzIGNoYW5nZSBldmVudCcsICgpID0+IHtcbiAgICAgIGxldCBzdG9yZSA9IG5ldyBFeGFtcGxlU3RvcmUoKTtcbiAgICAgIGxldCBsaXN0ZW5lciA9IHNpbm9uLnNweSgpO1xuICAgICAgc3RvcmUuYWRkTGlzdGVuZXIoJ2NoYW5nZScsIGxpc3RlbmVyKTtcblxuICAgICAgc3RvcmUuc2V0U3RhdGUoeyBmb286ICdiYXInIH0pO1xuXG4gICAgICBleHBlY3QobGlzdGVuZXIuY2FsbGVkT25jZSkudG8uYmUudHJ1ZTtcbiAgICB9KTtcblxuICAgIGl0KCdiYXRjaGVzIG11bHRpcGxlIHN0YXRlIHVwZGF0ZXMgd2l0aGluIGFjdGlvbiBoYW5kbGVyJywgKCkgPT4ge1xuICAgICAgbGV0IHN0b3JlID0gbmV3IEV4YW1wbGVTdG9yZSgpO1xuICAgICAgbGV0IGxpc3RlbmVyID0gc2lub24uc3B5KCk7XG4gICAgICBzdG9yZS5hZGRMaXN0ZW5lcignY2hhbmdlJywgbGlzdGVuZXIpO1xuXG4gICAgICBzdG9yZS5yZWdpc3RlcihhY3Rpb25JZCwgZnVuY3Rpb24oKSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBiYXI6ICdiYXonIH0pO1xuXG4gICAgICAgIGV4cGVjdCh0aGlzLnN0YXRlKS50by5kZWVwLmVxdWFsKHsgZm9vOiAnYmFyJyB9KTtcbiAgICAgICAgZXhwZWN0KGxpc3RlbmVyLmNhbGxlZCkudG8uYmUuZmFsc2U7XG5cbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGJhejogJ2ZvbycgfSk7XG4gICAgICB9KTtcblxuICAgICAgLy8gU2ltdWxhdGUgZGlzcGF0Y2hcbiAgICAgIHN0b3JlLmhhbmRsZXIoeyBhY3Rpb25JZCwgYm9keTogJ2Zvb2JhcicgfSk7XG5cbiAgICAgIGV4cGVjdChsaXN0ZW5lci5jYWxsZWRPbmNlKS50by5iZS50cnVlO1xuICAgICAgZXhwZWN0KHN0b3JlLnN0YXRlKS50by5kZWVwLmVxdWFsKHsgZm9vOiAnYmFyJywgYmFyOiAnYmF6JywgYmF6OiAnZm9vJyB9KTtcbiAgICB9KTtcblxuICAgIGl0KCd3YXJucyBpZiBjYWxsZWQgZnJvbSBvdXRzaWRlIGFuIGFjdGlvbiBoYW5kbGVyJywgKCkgPT4ge1xuICAgICAgbGV0IHN0b3JlID0gbmV3IEV4YW1wbGVTdG9yZSgpO1xuICAgICAgbGV0IHdhcm4gPSBzaW5vbi5zcHkoY29uc29sZSwgJ3dhcm4nKTtcblxuICAgICAgc3RvcmUuc2V0U3RhdGUoeyBmb286ICdiYXInIH0pO1xuXG4gICAgICBleHBlY3Qod2Fybi5maXJzdENhbGwuYXJnc1swXSkudG8uZXF1YWwoXG4gICAgICAgICdTdG9yZSNzZXRTdGF0ZSgpIGNhbGxlZCBmcm9tIG91dHNpZGUgYW4gYWN0aW9uIGhhbmRsZXIuIFRoaXMgaXMgJ1xuICAgICAgKyAnbGlrZWx5IGEgbWlzdGFrZS4gRmx1eCBzdG9yZXMgc2hvdWxkIG1hbmFnZSB0aGVpciBvd24gc3RhdGUuJ1xuICAgICAgKTtcblxuICAgICAgY29uc29sZS53YXJuLnJlc3RvcmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJyNyZXBsYWNlU3RhdGUoKScsICgpID0+IHtcbiAgICBpdCgncmVwbGFjZXMgb2xkIHN0YXRlIHdpdGggbmV3IHN0YXRlJywgKCkgPT4ge1xuICAgICAgbGV0IHN0b3JlID0gbmV3IEV4YW1wbGVTdG9yZSgpO1xuXG4gICAgICBzdG9yZS5yZXBsYWNlU3RhdGUoeyBiYXI6ICdiYXonIH0pO1xuXG4gICAgICBleHBlY3Qoc3RvcmUuc3RhdGUpLnRvLmRlZXAuZXF1YWwoe1xuICAgICAgICBiYXI6ICdiYXonLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnYmF0Y2hlcyBtdWx0aXBsZSBzdGF0ZSB1cGRhdGVzIHdpdGhpbiBhY3Rpb24gaGFuZGxlcicsICgpID0+IHtcbiAgICAgIGxldCBzdG9yZSA9IG5ldyBFeGFtcGxlU3RvcmUoKTtcbiAgICAgIGxldCBsaXN0ZW5lciA9IHNpbm9uLnNweSgpO1xuICAgICAgc3RvcmUuYWRkTGlzdGVuZXIoJ2NoYW5nZScsIGxpc3RlbmVyKTtcblxuICAgICAgc3RvcmUucmVnaXN0ZXIoYWN0aW9uSWQsIGZ1bmN0aW9uKCkge1xuICAgICAgICB0aGlzLnJlcGxhY2VTdGF0ZSh7IGJhcjogJ2JheicgfSk7XG5cbiAgICAgICAgZXhwZWN0KHRoaXMuc3RhdGUpLnRvLmRlZXAuZXF1YWwoeyBmb286ICdiYXInIH0pO1xuICAgICAgICBleHBlY3QobGlzdGVuZXIuY2FsbGVkKS50by5iZS5mYWxzZTtcblxuICAgICAgICB0aGlzLnNldFN0YXRlKHsgZm9vOiAnYmFyJyB9KTtcbiAgICAgICAgdGhpcy5yZXBsYWNlU3RhdGUoeyBiYXo6ICdmb28nIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIC8vIFNpbXVsYXRlIGRpc3BhdGNoXG4gICAgICBzdG9yZS5oYW5kbGVyKHsgYWN0aW9uSWQsIGJvZHk6ICdmb29iYXInIH0pO1xuXG4gICAgICBleHBlY3QobGlzdGVuZXIuY2FsbGVkT25jZSkudG8uYmUudHJ1ZTtcbiAgICAgIGV4cGVjdChzdG9yZS5zdGF0ZSkudG8uZGVlcC5lcXVhbCh7IGJhejogJ2ZvbycgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnZW1pdHMgY2hhbmdlIGV2ZW50JywgKCkgPT4ge1xuICAgICAgbGV0IHN0b3JlID0gbmV3IEV4YW1wbGVTdG9yZSgpO1xuICAgICAgbGV0IGxpc3RlbmVyID0gc2lub24uc3B5KCk7XG4gICAgICBzdG9yZS5hZGRMaXN0ZW5lcignY2hhbmdlJywgbGlzdGVuZXIpO1xuXG4gICAgICBzdG9yZS5yZXBsYWNlU3RhdGUoeyBmb286ICdiYXInIH0pO1xuXG4gICAgICBleHBlY3QobGlzdGVuZXIuY2FsbGVkT25jZSkudG8uYmUudHJ1ZTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJyNmb3JjZVVwZGF0ZSgpJywgKCkgPT4ge1xuICAgIGl0KCdlbWl0cyBjaGFuZ2UgZXZlbnQnLCAoKSA9PiB7XG4gICAgICBsZXQgc3RvcmUgPSBuZXcgRXhhbXBsZVN0b3JlKCk7XG4gICAgICBsZXQgbGlzdGVuZXIgPSBzaW5vbi5zcHkoKTtcbiAgICAgIHN0b3JlLmFkZExpc3RlbmVyKCdjaGFuZ2UnLCBsaXN0ZW5lcik7XG5cbiAgICAgIHN0b3JlLmZvcmNlVXBkYXRlKCk7XG5cbiAgICAgIGV4cGVjdChsaXN0ZW5lci5jYWxsZWRPbmNlKS50by5iZS50cnVlO1xuICAgIH0pO1xuXG4gICAgaXQoJ2RvZXNuXFwndCBtb2RpZnkgZXhpc3Rpbmcgc3RhdGUnLCAoKSA9PiB7XG4gICAgICBsZXQgc3RvcmUgPSBuZXcgRXhhbXBsZVN0b3JlKCk7XG4gICAgICBsZXQgbGlzdGVuZXIgPSBzaW5vbi5zcHkoKTtcbiAgICAgIHN0b3JlLmFkZExpc3RlbmVyKCdjaGFuZ2UnLCBsaXN0ZW5lcik7XG5cbiAgICAgIHN0b3JlLnJlZ2lzdGVyKGFjdGlvbklkLCBmdW5jdGlvbigpIHtcbiAgICAgICAgdGhpcy5yZXBsYWNlU3RhdGUoeyBiYXI6ICdiYXonIH0pO1xuICAgICAgICB0aGlzLmZvcmNlVXBkYXRlKCk7XG5cbiAgICAgICAgZXhwZWN0KHRoaXMuc3RhdGUpLnRvLmRlZXAuZXF1YWwoeyBmb286ICdiYXInIH0pO1xuICAgICAgICBleHBlY3QobGlzdGVuZXIuY2FsbGVkKS50by5iZS5mYWxzZTtcblxuICAgICAgICB0aGlzLnNldFN0YXRlKHsgZm9vOiAnYmFyJyB9KTtcbiAgICAgICAgdGhpcy5mb3JjZVVwZGF0ZSgpO1xuICAgICAgICB0aGlzLnJlcGxhY2VTdGF0ZSh7IGJhejogJ2ZvbycgfSk7XG4gICAgICB9KTtcblxuICAgICAgLy8gU2ltdWxhdGUgZGlzcGF0Y2hcbiAgICAgIHN0b3JlLmhhbmRsZXIoeyBhY3Rpb25JZCwgYm9keTogJ2Zvb2JhcicgfSk7XG5cbiAgICAgIGV4cGVjdChsaXN0ZW5lci5jYWxsZWRPbmNlKS50by5iZS50cnVlO1xuICAgICAgZXhwZWN0KHN0b3JlLnN0YXRlKS50by5kZWVwLmVxdWFsKHsgYmF6OiAnZm9vJyB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbn0pO1xuIl19

@@ -88,2 +88,13 @@ "use strict";

},
forceUpdate: {
value: function forceUpdate() {
if (this._isHandlingDispatch) {
this._emitChangeAfterHandlingDispatch = true;
} else {
this.emit("change");
}
},
writable: true,
configurable: true
},
register: {

@@ -211,2 +222,2 @@ value: function register(actionId, handler) {

}
//# sourceMappingURL=data:application/json;base64,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QztPQUNGOzs7Ozs7U0FsSmtCLEtBQUs7R0FBUyxZQUFZOztpQkFBMUIsS0FBSzs7O0FBcUoxQixTQUFTLGNBQWMsQ0FBQyxnQkFBZ0IsRUFBRTtBQUN4QyxTQUFPLE9BQU8sZ0JBQWdCLEtBQUssVUFBVSxHQUN6QyxnQkFBZ0IsQ0FBQyxHQUFHLEdBQ3BCLGdCQUFnQixDQUFDO0NBQ3RCIiwiZmlsZSI6InNyYy9TdG9yZS5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU3RvcmVcbiAqXG4gKiBTdG9yZXMgaG9sZCBhcHBsaWNhdGlvbiBzdGF0ZS4gVGhleSByZXNwb25kIHRvIGFjdGlvbnMgc2VudCBieSB0aGUgZGlzcGF0Y2hlclxuICogYW5kIGJyb2FkY2FzdCBjaGFuZ2UgZXZlbnRzIHRvIGxpc3RlbmVycywgc28gdGhleSBjYW4gZ3JhYiB0aGUgbGF0ZXN0IGRhdGEuXG4gKiBUaGUga2V5IHRoaW5nIHRvIHJlbWVtYmVyIGlzIHRoYXQgdGhlIG9ubHkgd2F5IHN0b3JlcyByZWNlaXZlIGluZm9ybWF0aW9uXG4gKiBmcm9tIHRoZSBvdXRzaWRlIHdvcmxkIGlzIHZpYSB0aGUgZGlzcGF0Y2hlci5cbiAqL1xuXG5pbXBvcnQgRXZlbnRFbWl0dGVyIGZyb20gJ2V2ZW50ZW1pdHRlcjMnO1xuaW1wb3J0IGFzc2lnbiBmcm9tICdvYmplY3QtYXNzaWduJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3RvcmUgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuXG4gIC8qKlxuICAgKiBTdG9yZXMgYXJlIGluaXRpYWxpemVkIHdpdGggYSByZWZlcmVuY2VcbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuc3RhdGUgPSB1bmRlZmluZWQ7XG5cbiAgICB0aGlzLl9oYW5kbGVycyA9IHt9O1xuICAgIHRoaXMuX2FzeW5jSGFuZGxlcnMgPSB7fTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSAoc2hhbGxvdykgY29weSBvZiB0aGUgc3RvcmUncyBpbnRlcm5hbCBzdGF0ZSwgc28gdGhhdCBpdCBpc1xuICAgKiBwcm90ZWN0ZWQgZnJvbSBtdXRhdGlvbiBieSB0aGUgY29uc3VtZXIuXG4gICAqIEByZXR1cm5zIHtvYmplY3R9XG4gICAqL1xuICBnZXRTdGF0ZSgpIHtcbiAgICByZXR1cm4gYXNzaWduKHt9LCB0aGlzLnN0YXRlKTtcbiAgfVxuXG4gIHNldFN0YXRlKG5ld1N0YXRlKSB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLnN0YXRlID09PSAndW5kZWZpbmVkJykgdGhpcy5zdGF0ZSA9IHt9O1xuXG4gICAgaWYgKHRoaXMuX2lzSGFuZGxpbmdEaXNwYXRjaCkge1xuICAgICAgdGhpcy5fcGVuZGluZ1N0YXRlID0gYXNzaWduKHRoaXMuX3BlbmRpbmdTdGF0ZSwgbmV3U3RhdGUpO1xuICAgICAgdGhpcy5fZW1pdENoYW5nZUFmdGVySGFuZGxpbmdEaXNwYXRjaCA9IHRydWU7XG4gICAgfSBlbHNlIHtcblxuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICdTdG9yZSNzZXRTdGF0ZSgpIGNhbGxlZCBmcm9tIG91dHNpZGUgYW4gYWN0aW9uIGhhbmRsZXIuIFRoaXMgaXMgbGlrZWx5ICdcbiAgICAgICAgKyAnYSBtaXN0YWtlLiBGbHV4IHN0b3JlcyBzaG91bGQgbWFuYWdlIHRoZWlyIG93biBzdGF0ZS4nXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc3RhdGUgPSBhc3NpZ24oe30sIHRoaXMuc3RhdGUsIG5ld1N0YXRlKTtcbiAgICAgIHRoaXMuZW1pdCgnY2hhbmdlJyk7XG4gICAgfVxuICB9XG5cbiAgcmVwbGFjZVN0YXRlKG5ld1N0YXRlKSB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLnN0YXRlID09PSAndW5kZWZpbmVkJykgdGhpcy5zdGF0ZSA9IHt9O1xuXG4gICAgaWYgKHRoaXMuX2lzSGFuZGxpbmdEaXNwYXRjaCkge1xuICAgICAgdGhpcy5fcGVuZGluZ1N0YXRlID0gYXNzaWduKHt9LCBuZXdTdGF0ZSk7XG4gICAgICB0aGlzLl9lbWl0Q2hhbmdlQWZ0ZXJIYW5kbGluZ0Rpc3BhdGNoID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zdGF0ZSA9IGFzc2lnbih7fSwgbmV3U3RhdGUpO1xuICAgICAgdGhpcy5lbWl0KCdjaGFuZ2UnKTtcbiAgICB9XG4gIH1cblxuICByZWdpc3RlcihhY3Rpb25JZCwgaGFuZGxlcikge1xuICAgIGFjdGlvbklkID0gZW5zdXJlQWN0aW9uSWQoYWN0aW9uSWQpO1xuXG4gICAgaWYgKHR5cGVvZiBoYW5kbGVyICE9PSAnZnVuY3Rpb24nKSByZXR1cm47XG5cbiAgICB0aGlzLl9oYW5kbGVyc1thY3Rpb25JZF0gPSBoYW5kbGVyLmJpbmQodGhpcyk7XG4gIH1cblxuICByZWdpc3RlckFzeW5jKGFjdGlvbklkLCBiZWdpbkhhbmRsZXIsIHN1Y2Nlc3NIYW5kbGVyLCBmYWlsdXJlSGFuZGxlcikge1xuICAgIGFjdGlvbklkID0gZW5zdXJlQWN0aW9uSWQoYWN0aW9uSWQpO1xuXG4gICAgbGV0IGFzeW5jSGFuZGxlcnMgPSB7XG4gICAgICBiZWdpbjogYmVnaW5IYW5kbGVyLFxuICAgICAgc3VjY2Vzczogc3VjY2Vzc0hhbmRsZXIsXG4gICAgICBmYWlsdXJlOiBmYWlsdXJlSGFuZGxlcixcbiAgICB9O1xuXG4gICAgZm9yIChsZXQga2V5IGluIGFzeW5jSGFuZGxlcnMpIHtcbiAgICAgIGlmICghYXN5bmNIYW5kbGVycy5oYXNPd25Qcm9wZXJ0eShrZXkpKSBjb250aW51ZTtcblxuICAgICAgbGV0IGhhbmRsZXIgPSBhc3luY0hhbmRsZXJzW2tleV07XG5cbiAgICAgIGlmICh0eXBlb2YgaGFuZGxlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBhc3luY0hhbmRsZXJzW2tleV0gPSBoYW5kbGVyLmJpbmQodGhpcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZWxldGUgYXN5bmNIYW5kbGVyc1trZXldO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX2FzeW5jSGFuZGxlcnNbYWN0aW9uSWRdID0gYXN5bmNIYW5kbGVycztcbiAgfVxuXG4gIHdhaXRGb3IodG9rZW5zT3JTdG9yZXMpIHtcbiAgICB0aGlzLl93YWl0Rm9yKHRva2Vuc09yU3RvcmVzKTtcbiAgfVxuXG4gIGhhbmRsZXIocGF5bG9hZCkge1xuICAgIGxldCB7XG4gICAgICBib2R5LFxuICAgICAgYWN0aW9uSWQsXG4gICAgICBhc3luYzogX2FzeW5jLFxuICAgICAgYWN0aW9uQXJncyxcbiAgICAgIGVycm9yXG4gICAgfSA9IHBheWxvYWQ7XG5cbiAgICBsZXQgX2hhbmRsZXIgPSB0aGlzLl9oYW5kbGVyc1thY3Rpb25JZF07XG4gICAgbGV0IF9hc3luY0hhbmRsZXIgPSB0aGlzLl9hc3luY0hhbmRsZXJzW2FjdGlvbklkXVxuICAgICAgJiYgdGhpcy5fYXN5bmNIYW5kbGVyc1thY3Rpb25JZF1bX2FzeW5jXTtcblxuICAgIGlmIChfYXN5bmMpIHtcbiAgICAgIHN3aXRjaCAoX2FzeW5jKSB7XG4gICAgICAgIGNhc2UgJ2JlZ2luJzpcbiAgICAgICAgICBpZiAodHlwZW9mIF9hc3luY0hhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHRoaXMuX3BlcmZvcm1IYW5kbGVyLmFwcGx5KHRoaXMsIFtfYXN5bmNIYW5kbGVyXS5jb25jYXQoYWN0aW9uQXJncykpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNhc2UgJ2ZhaWx1cmUnOlxuICAgICAgICAgIGlmICh0eXBlb2YgX2FzeW5jSGFuZGxlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdGhpcy5fcGVyZm9ybUhhbmRsZXIoX2FzeW5jSGFuZGxlciwgZXJyb3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNhc2UgJ3N1Y2Nlc3MnOlxuICAgICAgICAgIGlmICh0eXBlb2YgX2FzeW5jSGFuZGxlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgX2hhbmRsZXIgPSBfYXN5bmNIYW5kbGVyO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBfaGFuZGxlciAhPT0gJ2Z1bmN0aW9uJykgcmV0dXJuO1xuICAgIHRoaXMuX3BlcmZvcm1IYW5kbGVyKF9oYW5kbGVyLCBib2R5KTtcbiAgfVxuXG4gIF9wZXJmb3JtSGFuZGxlcihfaGFuZGxlciwgLi4uYXJncykge1xuICAgIHRoaXMuX2lzSGFuZGxpbmdEaXNwYXRjaCA9IHRydWU7XG4gICAgdGhpcy5fcGVuZGluZ1N0YXRlID0gYXNzaWduKHt9LCB0aGlzLnN0YXRlKTtcbiAgICB0aGlzLl9lbWl0Q2hhbmdlQWZ0ZXJIYW5kbGluZ0Rpc3BhdGNoID0gZmFsc2U7XG5cbiAgICB0cnkge1xuICAgICAgX2hhbmRsZXIuYXBwbHkodGhpcywgYXJncyk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmICh0aGlzLl9lbWl0Q2hhbmdlQWZ0ZXJIYW5kbGluZ0Rpc3BhdGNoKSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSB0aGlzLl9wZW5kaW5nU3RhdGU7XG4gICAgICAgIHRoaXMuZW1pdCgnY2hhbmdlJyk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2lzSGFuZGxpbmdEaXNwYXRjaCA9IGZhbHNlO1xuICAgICAgdGhpcy5fcGVuZGluZ1N0YXRlID0ge307XG4gICAgICB0aGlzLl9lbWl0Q2hhbmdlQWZ0ZXJIYW5kbGluZ0Rpc3BhdGNoID0gZmFsc2U7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGVuc3VyZUFjdGlvbklkKGFjdGlvbk9yQWN0aW9uSWQpIHtcbiAgcmV0dXJuIHR5cGVvZiBhY3Rpb25PckFjdGlvbklkID09PSAnZnVuY3Rpb24nXG4gICAgPyBhY3Rpb25PckFjdGlvbklkLl9pZFxuICAgIDogYWN0aW9uT3JBY3Rpb25JZDtcbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,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QUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1dBQ3JCOztBQUVELGNBQUksQ0FBQyxtQkFBbUIsR0FBRyxLQUFLLENBQUM7QUFDakMsY0FBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7QUFDeEIsY0FBSSxDQUFDLGdDQUFnQyxHQUFHLEtBQUssQ0FBQztTQUMvQztPQUNGOzs7Ozs7U0ExSmtCLEtBQUs7R0FBUyxZQUFZOztpQkFBMUIsS0FBSzs7O0FBNkoxQixTQUFTLGNBQWMsQ0FBQyxnQkFBZ0IsRUFBRTtBQUN4QyxTQUFPLE9BQU8sZ0JBQWdCLEtBQUssVUFBVSxHQUN6QyxnQkFBZ0IsQ0FBQyxHQUFHLEdBQ3BCLGdCQUFnQixDQUFDO0NBQ3RCIiwiZmlsZSI6InNyYy9TdG9yZS5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU3RvcmVcbiAqXG4gKiBTdG9yZXMgaG9sZCBhcHBsaWNhdGlvbiBzdGF0ZS4gVGhleSByZXNwb25kIHRvIGFjdGlvbnMgc2VudCBieSB0aGUgZGlzcGF0Y2hlclxuICogYW5kIGJyb2FkY2FzdCBjaGFuZ2UgZXZlbnRzIHRvIGxpc3RlbmVycywgc28gdGhleSBjYW4gZ3JhYiB0aGUgbGF0ZXN0IGRhdGEuXG4gKiBUaGUga2V5IHRoaW5nIHRvIHJlbWVtYmVyIGlzIHRoYXQgdGhlIG9ubHkgd2F5IHN0b3JlcyByZWNlaXZlIGluZm9ybWF0aW9uXG4gKiBmcm9tIHRoZSBvdXRzaWRlIHdvcmxkIGlzIHZpYSB0aGUgZGlzcGF0Y2hlci5cbiAqL1xuXG5pbXBvcnQgRXZlbnRFbWl0dGVyIGZyb20gJ2V2ZW50ZW1pdHRlcjMnO1xuaW1wb3J0IGFzc2lnbiBmcm9tICdvYmplY3QtYXNzaWduJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3RvcmUgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuXG4gIC8qKlxuICAgKiBTdG9yZXMgYXJlIGluaXRpYWxpemVkIHdpdGggYSByZWZlcmVuY2VcbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuc3RhdGUgPSB1bmRlZmluZWQ7XG5cbiAgICB0aGlzLl9oYW5kbGVycyA9IHt9O1xuICAgIHRoaXMuX2FzeW5jSGFuZGxlcnMgPSB7fTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSAoc2hhbGxvdykgY29weSBvZiB0aGUgc3RvcmUncyBpbnRlcm5hbCBzdGF0ZSwgc28gdGhhdCBpdCBpc1xuICAgKiBwcm90ZWN0ZWQgZnJvbSBtdXRhdGlvbiBieSB0aGUgY29uc3VtZXIuXG4gICAqIEByZXR1cm5zIHtvYmplY3R9XG4gICAqL1xuICBnZXRTdGF0ZSgpIHtcbiAgICByZXR1cm4gYXNzaWduKHt9LCB0aGlzLnN0YXRlKTtcbiAgfVxuXG4gIHNldFN0YXRlKG5ld1N0YXRlKSB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLnN0YXRlID09PSAndW5kZWZpbmVkJykgdGhpcy5zdGF0ZSA9IHt9O1xuXG4gICAgaWYgKHRoaXMuX2lzSGFuZGxpbmdEaXNwYXRjaCkge1xuICAgICAgdGhpcy5fcGVuZGluZ1N0YXRlID0gYXNzaWduKHRoaXMuX3BlbmRpbmdTdGF0ZSwgbmV3U3RhdGUpO1xuICAgICAgdGhpcy5fZW1pdENoYW5nZUFmdGVySGFuZGxpbmdEaXNwYXRjaCA9IHRydWU7XG4gICAgfSBlbHNlIHtcblxuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICdTdG9yZSNzZXRTdGF0ZSgpIGNhbGxlZCBmcm9tIG91dHNpZGUgYW4gYWN0aW9uIGhhbmRsZXIuIFRoaXMgaXMgbGlrZWx5ICdcbiAgICAgICAgKyAnYSBtaXN0YWtlLiBGbHV4IHN0b3JlcyBzaG91bGQgbWFuYWdlIHRoZWlyIG93biBzdGF0ZS4nXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc3RhdGUgPSBhc3NpZ24oe30sIHRoaXMuc3RhdGUsIG5ld1N0YXRlKTtcbiAgICAgIHRoaXMuZW1pdCgnY2hhbmdlJyk7XG4gICAgfVxuICB9XG5cbiAgcmVwbGFjZVN0YXRlKG5ld1N0YXRlKSB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLnN0YXRlID09PSAndW5kZWZpbmVkJykgdGhpcy5zdGF0ZSA9IHt9O1xuXG4gICAgaWYgKHRoaXMuX2lzSGFuZGxpbmdEaXNwYXRjaCkge1xuICAgICAgdGhpcy5fcGVuZGluZ1N0YXRlID0gYXNzaWduKHt9LCBuZXdTdGF0ZSk7XG4gICAgICB0aGlzLl9lbWl0Q2hhbmdlQWZ0ZXJIYW5kbGluZ0Rpc3BhdGNoID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zdGF0ZSA9IGFzc2lnbih7fSwgbmV3U3RhdGUpO1xuICAgICAgdGhpcy5lbWl0KCdjaGFuZ2UnKTtcbiAgICB9XG4gIH1cblxuICBmb3JjZVVwZGF0ZSgpIHtcbiAgICBpZiAodGhpcy5faXNIYW5kbGluZ0Rpc3BhdGNoKSB7XG4gICAgICB0aGlzLl9lbWl0Q2hhbmdlQWZ0ZXJIYW5kbGluZ0Rpc3BhdGNoID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lbWl0KCdjaGFuZ2UnKTtcbiAgICB9XG4gIH1cblxuICByZWdpc3RlcihhY3Rpb25JZCwgaGFuZGxlcikge1xuICAgIGFjdGlvbklkID0gZW5zdXJlQWN0aW9uSWQoYWN0aW9uSWQpO1xuXG4gICAgaWYgKHR5cGVvZiBoYW5kbGVyICE9PSAnZnVuY3Rpb24nKSByZXR1cm47XG5cbiAgICB0aGlzLl9oYW5kbGVyc1thY3Rpb25JZF0gPSBoYW5kbGVyLmJpbmQodGhpcyk7XG4gIH1cblxuICByZWdpc3RlckFzeW5jKGFjdGlvbklkLCBiZWdpbkhhbmRsZXIsIHN1Y2Nlc3NIYW5kbGVyLCBmYWlsdXJlSGFuZGxlcikge1xuICAgIGFjdGlvbklkID0gZW5zdXJlQWN0aW9uSWQoYWN0aW9uSWQpO1xuXG4gICAgbGV0IGFzeW5jSGFuZGxlcnMgPSB7XG4gICAgICBiZWdpbjogYmVnaW5IYW5kbGVyLFxuICAgICAgc3VjY2Vzczogc3VjY2Vzc0hhbmRsZXIsXG4gICAgICBmYWlsdXJlOiBmYWlsdXJlSGFuZGxlcixcbiAgICB9O1xuXG4gICAgZm9yIChsZXQga2V5IGluIGFzeW5jSGFuZGxlcnMpIHtcbiAgICAgIGlmICghYXN5bmNIYW5kbGVycy5oYXNPd25Qcm9wZXJ0eShrZXkpKSBjb250aW51ZTtcblxuICAgICAgbGV0IGhhbmRsZXIgPSBhc3luY0hhbmRsZXJzW2tleV07XG5cbiAgICAgIGlmICh0eXBlb2YgaGFuZGxlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBhc3luY0hhbmRsZXJzW2tleV0gPSBoYW5kbGVyLmJpbmQodGhpcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZWxldGUgYXN5bmNIYW5kbGVyc1trZXldO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX2FzeW5jSGFuZGxlcnNbYWN0aW9uSWRdID0gYXN5bmNIYW5kbGVycztcbiAgfVxuXG4gIHdhaXRGb3IodG9rZW5zT3JTdG9yZXMpIHtcbiAgICB0aGlzLl93YWl0Rm9yKHRva2Vuc09yU3RvcmVzKTtcbiAgfVxuXG4gIGhhbmRsZXIocGF5bG9hZCkge1xuICAgIGxldCB7XG4gICAgICBib2R5LFxuICAgICAgYWN0aW9uSWQsXG4gICAgICBhc3luYzogX2FzeW5jLFxuICAgICAgYWN0aW9uQXJncyxcbiAgICAgIGVycm9yXG4gICAgfSA9IHBheWxvYWQ7XG5cbiAgICBsZXQgX2hhbmRsZXIgPSB0aGlzLl9oYW5kbGVyc1thY3Rpb25JZF07XG4gICAgbGV0IF9hc3luY0hhbmRsZXIgPSB0aGlzLl9hc3luY0hhbmRsZXJzW2FjdGlvbklkXVxuICAgICAgJiYgdGhpcy5fYXN5bmNIYW5kbGVyc1thY3Rpb25JZF1bX2FzeW5jXTtcblxuICAgIGlmIChfYXN5bmMpIHtcbiAgICAgIHN3aXRjaCAoX2FzeW5jKSB7XG4gICAgICAgIGNhc2UgJ2JlZ2luJzpcbiAgICAgICAgICBpZiAodHlwZW9mIF9hc3luY0hhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHRoaXMuX3BlcmZvcm1IYW5kbGVyLmFwcGx5KHRoaXMsIFtfYXN5bmNIYW5kbGVyXS5jb25jYXQoYWN0aW9uQXJncykpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNhc2UgJ2ZhaWx1cmUnOlxuICAgICAgICAgIGlmICh0eXBlb2YgX2FzeW5jSGFuZGxlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdGhpcy5fcGVyZm9ybUhhbmRsZXIoX2FzeW5jSGFuZGxlciwgZXJyb3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNhc2UgJ3N1Y2Nlc3MnOlxuICAgICAgICAgIGlmICh0eXBlb2YgX2FzeW5jSGFuZGxlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgX2hhbmRsZXIgPSBfYXN5bmNIYW5kbGVyO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBfaGFuZGxlciAhPT0gJ2Z1bmN0aW9uJykgcmV0dXJuO1xuICAgIHRoaXMuX3BlcmZvcm1IYW5kbGVyKF9oYW5kbGVyLCBib2R5KTtcbiAgfVxuXG4gIF9wZXJmb3JtSGFuZGxlcihfaGFuZGxlciwgLi4uYXJncykge1xuICAgIHRoaXMuX2lzSGFuZGxpbmdEaXNwYXRjaCA9IHRydWU7XG4gICAgdGhpcy5fcGVuZGluZ1N0YXRlID0gYXNzaWduKHt9LCB0aGlzLnN0YXRlKTtcbiAgICB0aGlzLl9lbWl0Q2hhbmdlQWZ0ZXJIYW5kbGluZ0Rpc3BhdGNoID0gZmFsc2U7XG5cbiAgICB0cnkge1xuICAgICAgX2hhbmRsZXIuYXBwbHkodGhpcywgYXJncyk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmICh0aGlzLl9lbWl0Q2hhbmdlQWZ0ZXJIYW5kbGluZ0Rpc3BhdGNoKSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSB0aGlzLl9wZW5kaW5nU3RhdGU7XG4gICAgICAgIHRoaXMuZW1pdCgnY2hhbmdlJyk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2lzSGFuZGxpbmdEaXNwYXRjaCA9IGZhbHNlO1xuICAgICAgdGhpcy5fcGVuZGluZ1N0YXRlID0ge307XG4gICAgICB0aGlzLl9lbWl0Q2hhbmdlQWZ0ZXJIYW5kbGluZ0Rpc3BhdGNoID0gZmFsc2U7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGVuc3VyZUFjdGlvbklkKGFjdGlvbk9yQWN0aW9uSWQpIHtcbiAgcmV0dXJuIHR5cGVvZiBhY3Rpb25PckFjdGlvbklkID09PSAnZnVuY3Rpb24nXG4gICAgPyBhY3Rpb25PckFjdGlvbklkLl9pZFxuICAgIDogYWN0aW9uT3JBY3Rpb25JZDtcbn1cbiJdfQ==
{
"name": "flummox",
"version": "2.12.5",
"version": "2.13.0",
"description": "Idiomatic, modular, testable, isomorphic Flux. No singletons required.",

@@ -5,0 +5,0 @@ "main": "lib/Flux.js",

@@ -27,2 +27,3 @@ Flummox

- The dispatcher and constants are implementation details — no need to interact with them unless you want to.
- Async actions [made simple with promises](https://github.com/acdlite/flummox/blob/master/docs/api/Actions.md#asynchronous-actions). Pairs well with async-await, or your favorite promise library.
- Easy [integration with React](https://github.com/acdlite/flummox/blob/master/docs/react-integration.md) via fluxMixin and FluxComponent

@@ -29,0 +30,0 @@ - Support for [plain JavaScript class components](http://facebook.github.io/react/blog/2015/01/27/react-v0.13.0-beta-1.html) in React 0.13.*

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc