text: var ReduxWebExt =
  /******/ (function(modules) { // webpackBootstrap
  /******/ 	// The module cache
  /******/ 	var installedModules = {};
  /******/
  /******/ 	// The require function
  /******/ 	function __webpack_require__(moduleId) {
  /******/
  /******/ 		// Check if module is in cache
  /******/ 		if(installedModules[moduleId]) {
  /******/ 			return installedModules[moduleId].exports;
  /******/ 		}
  /******/ 		// Create a new module (and put it into the cache)
  /******/ 		var module = installedModules[moduleId] = {
  /******/ 			i: moduleId,
  /******/ 			l: false,
  /******/ 			exports: {}
  /******/ 		};
  /******/
  /******/ 		// Execute the module function
  /******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
  /******/
  /******/ 		// Flag the module as loaded
  /******/ 		module.l = true;
  /******/
  /******/ 		// Return the exports of the module
  /******/ 		return module.exports;
  /******/ 	}
  /******/
  /******/
  /******/ 	// expose the modules object (__webpack_modules__)
  /******/ 	__webpack_require__.m = modules;
  /******/
  /******/ 	// expose the module cache
  /******/ 	__webpack_require__.c = installedModules;
  /******/
  /******/ 	// define getter function for harmony exports
  /******/ 	__webpack_require__.d = function(exports, name, getter) {
  /******/ 		if(!__webpack_require__.o(exports, name)) {
  /******/ 			Object.defineProperty(exports, name, {
  /******/ 				configurable: false,
  /******/ 				enumerable: true,
  /******/ 				get: getter
  /******/ 			});
  /******/ 		}
  /******/ 	};
  /******/
  /******/ 	// getDefaultExport function for compatibility with non-harmony modules
  /******/ 	__webpack_require__.n = function(module) {
  /******/ 		var getter = module && module.__esModule ?
  /******/ 			function getDefault() { return module['default']; } :
  /******/ 			function getModuleExports() { return module; };
  /******/ 		__webpack_require__.d(getter, 'a', getter);
  /******/ 		return getter;
  /******/ 	};
  /******/
  /******/ 	// Object.prototype.hasOwnProperty.call
  /******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
  /******/
  /******/ 	// __webpack_public_path__
  /******/ 	__webpack_require__.p = "";
  /******/
  /******/ 	// Load entry module and return exports
  /******/ 	return __webpack_require__(__webpack_require__.s = 1);
  /******/ })
  /************************************************************************/
  /******/ ([
  /* 0 */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  
  
  Object.defineProperty(exports, "__esModule", {
    value: true
  });
  var CONNECTION_NAME = exports.CONNECTION_NAME = 'redux-webext';
  var DISPATCH = exports.DISPATCH = '@@STORE_DISPATCH';
  var UPDATE_STATE = exports.UPDATE_STATE = '@@STORE_UPDATE_STATE';
  
  /***/ }),
  /* 1 */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  
  
  Object.defineProperty(exports, "__esModule", {
    value: true
  });
  
  var _backgroundStore = __webpack_require__(2);
  
  Object.defineProperty(exports, 'createBackgroundStore', {
    enumerable: true,
    get: function get() {
      return _interopRequireDefault(_backgroundStore).default;
    }
  });
  
  var _uiStore = __webpack_require__(3);
  
  Object.defineProperty(exports, 'createUIStore', {
    enumerable: true,
    get: function get() {
      return _interopRequireDefault(_uiStore).default;
    }
  });
  
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  
  /***/ }),
  /* 2 */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  
  
  Object.defineProperty(exports, "__esModule", {
      value: true
  });
  
  var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
  
  exports.default = createBackgroundStore;
  
  var _constants = __webpack_require__(0);
  
  function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
  
  var store = void 0,
      actions = void 0,
      onDisconnect = void 0;
  
  // eslint-disable-next-line consistent-return
  function handleMessage(msg, sender, cb) {
      if (msg.type === _constants.DISPATCH) {
          var _msg$action = msg.action,
              type = _msg$action.type,
              actionData = _objectWithoutProperties(_msg$action, ['type']);
  
          var action = actions[type];
          // console.log(msg);
          // console.log(actionData);
          if (action) {
              // if action doesn't have any data we should pass "undefined"
              var {payload = {}} = actionData;
              store.dispatch(action(Object.keys(actionData).length ? payload : undefined));
          } else {
              console.error('Provided in background store "actions" object doesn\'t contain "' + type + '" key.');
          }
      } else if (msg.type === _constants.UPDATE_STATE) {
          cb(store.getState());
  
          // keep channel open, https://developer.chrome.com/extensions/runtime#event-onMessage
          return true;
      }
  }
  
  // allow other parts of the app to reuse the store, e.g. popup
  function handleConnection(connection) {
      if (connection.name !== _constants.CONNECTION_NAME) {
          return;
      }
  
      // send updated state to other parts of the app on every change
      var unsubscribe = store.subscribe(function () {
          connection.postMessage({
              type: _constants.UPDATE_STATE,
              data: store.getState()
          });
      });
  
      // unsubscribe on disconnect
      connection.onDisconnect.addListener(function () {
          unsubscribe();
  
          if (onDisconnect) {
              onDisconnect();
          }
      });
  }
  
  function createBackgroundStore(options) {
      if ((typeof options === 'undefined' ? 'undefined' : _typeof(options)) !== 'object' || _typeof(options.store) !== 'object') {
          throw new Error('Expected the "store" to be an object.');
      }
  
      if (options.hasOwnProperty('actions') && _typeof(options.actions) !== 'object') {
          throw new Error('Expected the "actions" to be an object.');
      }
  
      if (options.hasOwnProperty('onDisconnect') && typeof options.onDisconnect !== 'function') {
          throw new Error('Expected the "onDisconnect" to be a function.');
      }
  
      store = options.store;
      actions = options.actions || {};
      onDisconnect = options.onDisconnect;
  
      chrome.runtime.onConnect.addListener(handleConnection);
      chrome.runtime.onMessage.addListener(handleMessage);
  
      return store;
  }
  
  /***/ }),
  /* 3 */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  
  
  Object.defineProperty(exports, "__esModule", {
      value: true
  });
  
  exports.default = function () {
      // connect to "background" store
      var connection = chrome.runtime.connect({ name: _constants.CONNECTION_NAME });
  
      // listen for changes in the "background" store
      connection.onMessage.addListener(handleMessage);
  
      // return promise to allow getting current state of "background" store
      return new Promise(function (resolve) {
          chrome.runtime.sendMessage({ type: _constants.UPDATE_STATE }, function (res) {
              state = res;
  
              // return an object with equivalent to Redux store interface
              resolve({
                  subscribe: subscribe,
                  dispatch: dispatch,
                  getState: getState
              });
          });
      });
  };
  
  var _constants = __webpack_require__(0);
  
  var listeners = [];
  
  var state = void 0;
  
  function handleMessage(msg) {
      if (msg.type === _constants.UPDATE_STATE) {
          state = msg.data;
  
          listeners.forEach(function (l) {
              return l();
          });
      }
  }
  
  function subscribe(listener) {
      listeners.push(listener);
  
      // return unsubscribe function
      return function () {
          listeners = listeners.filter(function (l) {
              return l !== listener;
          });
      };
  }
  
  function dispatch(action) {
      // perform an action to change state of "background" store
      console.log(action);
      chrome.runtime.sendMessage({
          type: _constants.DISPATCH,
          action: action
      });
  }
  
  function getState() {
      return state;
  }
  
  /***/ })
  /******/ ]);