{"version":3,"file":"static/js/2831.6860d797.chunk.js","mappings":"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","sources":["../../../../../../webpack/universalModuleDefinition","../../../../../../index.js","../../../../../../webpack/bootstrap b385c1e7af92f8852e66","../../../../../../src/request-types.ts","../../../../../../src/endpoints.ts","../../../../../../src/errors.ts","../../../../../../src/response-transformers.ts","../../../../../../~/es6-promise/dist/es6-promise.js","../../../../../../src/wallet.ts","../../../../../../external {\"root\":\"whatwg-fetch\",\"commonjs2\":\"whatwg-fetch\",\"commonjs\":\"whatwg-fetch\",\"amd\":\"whatwg-fetch\"}","../../../../../../~/eventemitter3/index.js","../../../../../../~/process/browser.js","../../../../../../~/querystringify/index.js","../../../../../../src/clients/index.ts","../../../../../../src/clients/masterpass.ts","../../../../../../src/clients/mobilepay.ts","../../../../../../src/clients/test.ts","../../../../../../src/clients/vipps.ts","../../../../../../src/wallet-service.ts","../../../../../../(webpack)/buildin/global.js","../../../../../../package.json","../../../../../../src/index.ts","../node_modules/qrcode.react/lib/esm/index.js","../node_modules/react-truncate/lib/Truncate.js","../node_modules/smoothscroll-polyfill/dist/smoothscroll.js","../node_modules/whatwg-fetch/fetch.js","../node_modules/@bambora/checkout-sdk-web/dist/checkout-sdk-web.mjs"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"whatwg-fetch\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"wallet\", [\"whatwg-fetch\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"wallet\"] = factory(require(\"whatwg-fetch\"));\n\telse\n\t\troot[\"wallet\"] = factory(root[\"whatwg-fetch\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_6__) {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"whatwg-fetch\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"wallet\", [\"whatwg-fetch\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"wallet\"] = factory(require(\"whatwg-fetch\"));\n\telse\n\t\troot[\"wallet\"] = factory(root[\"whatwg-fetch\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_6__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 19);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.walletRequestTypes = {};\nfunction getWalletRequestType(walletName) {\n    if (typeof walletName !== \"string\" || !walletName.length)\n        throw new TypeError(\"A wallet name must be supplied!\");\n    walletName = walletName.toLowerCase();\n    if (exports.walletRequestTypes[walletName])\n        return exports.walletRequestTypes[walletName];\n    throw new ReferenceError(\"The wallet type \\\"\" + walletName + \"\\\" could not be found.\");\n}\nexports.default = getWalletRequestType;\nfunction WalletRequestType(walletName) {\n    if (typeof walletName !== \"string\" || !walletName.length)\n        throw new TypeError(\"A wallet name must be supplied!\");\n    walletName = walletName.toLowerCase();\n    return function (walletRequestConstructable) {\n        exports.walletRequestTypes[walletName] = walletRequestConstructable;\n    };\n}\nexports.WalletRequestType = WalletRequestType;\nvar clients = __webpack_require__(10);\nclients;\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.masterPass = {\n    productionClientApi: \"https://static.masterpass.com/dyn/js/switch/integration/MasterPass.client.js\",\n    sandboxClientApi: \"https://sandbox.static.masterpass.com/dyn/js/switch/integration/MasterPass.client.js\",\n};\nexports.mobilePay = {\n    productionClient: \"https://public.mobilepay.dk/p2o/router/address/router.aspx\",\n};\nexports.epayZero = {\n    testClient: \"http://localhost:1337\",\n    walletApi: \"https://wallet-v1.api-eu.bambora.com\",\n};\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nObject.setPrototypeOf = Object.setPrototypeOf || (function (obj, proto) {\n    obj.__proto__ = proto;\n    return obj;\n});\nvar ConnectionError = (function (_super) {\n    __extends(ConnectionError, _super);\n    function ConnectionError(message) {\n        var _newTarget = this.constructor;\n        var _this = _super.call(this, message) || this;\n        Object.setPrototypeOf(_this, _newTarget.prototype);\n        return _this;\n    }\n    return ConnectionError;\n}(Error));\nexports.ConnectionError = ConnectionError;\n;\nvar NoResponseError = (function (_super) {\n    __extends(NoResponseError, _super);\n    function NoResponseError(message) {\n        var _newTarget = this.constructor;\n        var _this = _super.call(this, message) || this;\n        Object.setPrototypeOf(_this, _newTarget.prototype);\n        return _this;\n    }\n    return NoResponseError;\n}(Error));\nexports.NoResponseError = NoResponseError;\n;\nvar AuthorizationError = (function (_super) {\n    __extends(AuthorizationError, _super);\n    function AuthorizationError(message) {\n        var _newTarget = this.constructor;\n        var _this = _super.call(this, message) || this;\n        Object.setPrototypeOf(_this, _newTarget.prototype);\n        return _this;\n    }\n    return AuthorizationError;\n}(Error));\nexports.AuthorizationError = AuthorizationError;\n;\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.walletResponseTransformers = {};\nfunction getWalletResponseTransformer(walletName) {\n    if (typeof walletName !== \"string\" || !walletName.length)\n        throw new TypeError(\"A wallet name must be supplied!\");\n    walletName = walletName.toLowerCase();\n    if (exports.walletResponseTransformers[walletName])\n        return new exports.walletResponseTransformers[walletName]();\n    return null;\n}\nexports.default = getWalletResponseTransformer;\nfunction WalletResponseTransformer(walletName) {\n    if (typeof walletName !== \"string\" || !walletName.length)\n        throw new TypeError(\"A wallet name must be supplied!\");\n    walletName = walletName.toLowerCase();\n    return function (walletTransformerConstructable) {\n        exports.walletResponseTransformers[walletName] = walletTransformerConstructable;\n    };\n}\nexports.WalletResponseTransformer = WalletResponseTransformer;\n;\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(process, global) {var require;/*!\n * @overview es6-promise - a tiny implementation of Promises/A+.\n * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)\n * @license   Licensed under MIT license\n *            See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE\n * @version   4.0.5\n */\n\n(function (global, factory) {\n     true ? module.exports = factory() :\n    typeof define === 'function' && define.amd ? define(factory) :\n    (global.ES6Promise = factory());\n}(this, (function () { 'use strict';\n\nfunction objectOrFunction(x) {\n  return typeof x === 'function' || typeof x === 'object' && x !== null;\n}\n\nfunction isFunction(x) {\n  return typeof x === 'function';\n}\n\nvar _isArray = undefined;\nif (!Array.isArray) {\n  _isArray = function (x) {\n    return Object.prototype.toString.call(x) === '[object Array]';\n  };\n} else {\n  _isArray = Array.isArray;\n}\n\nvar isArray = _isArray;\n\nvar len = 0;\nvar vertxNext = undefined;\nvar customSchedulerFn = undefined;\n\nvar asap = function asap(callback, arg) {\n  queue[len] = callback;\n  queue[len + 1] = arg;\n  len += 2;\n  if (len === 2) {\n    // If len is 2, that means that we need to schedule an async flush.\n    // If additional callbacks are queued before the queue is flushed, they\n    // will be processed by this flush that we are scheduling.\n    if (customSchedulerFn) {\n      customSchedulerFn(flush);\n    } else {\n      scheduleFlush();\n    }\n  }\n};\n\nfunction setScheduler(scheduleFn) {\n  customSchedulerFn = scheduleFn;\n}\n\nfunction setAsap(asapFn) {\n  asap = asapFn;\n}\n\nvar browserWindow = typeof window !== 'undefined' ? window : undefined;\nvar browserGlobal = browserWindow || {};\nvar BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;\nvar isNode = typeof self === 'undefined' && typeof process !== 'undefined' && ({}).toString.call(process) === '[object process]';\n\n// test for web worker but not in IE10\nvar isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';\n\n// node\nfunction useNextTick() {\n  // node version 0.10.x displays a deprecation warning when nextTick is used recursively\n  // see https://github.com/cujojs/when/issues/410 for details\n  return function () {\n    return process.nextTick(flush);\n  };\n}\n\n// vertx\nfunction useVertxTimer() {\n  if (typeof vertxNext !== 'undefined') {\n    return function () {\n      vertxNext(flush);\n    };\n  }\n\n  return useSetTimeout();\n}\n\nfunction useMutationObserver() {\n  var iterations = 0;\n  var observer = new BrowserMutationObserver(flush);\n  var node = document.createTextNode('');\n  observer.observe(node, { characterData: true });\n\n  return function () {\n    node.data = iterations = ++iterations % 2;\n  };\n}\n\n// web worker\nfunction useMessageChannel() {\n  var channel = new MessageChannel();\n  channel.port1.onmessage = flush;\n  return function () {\n    return channel.port2.postMessage(0);\n  };\n}\n\nfunction useSetTimeout() {\n  // Store setTimeout reference so es6-promise will be unaffected by\n  // other code modifying setTimeout (like sinon.useFakeTimers())\n  var globalSetTimeout = setTimeout;\n  return function () {\n    return globalSetTimeout(flush, 1);\n  };\n}\n\nvar queue = new Array(1000);\nfunction flush() {\n  for (var i = 0; i < len; i += 2) {\n    var callback = queue[i];\n    var arg = queue[i + 1];\n\n    callback(arg);\n\n    queue[i] = undefined;\n    queue[i + 1] = undefined;\n  }\n\n  len = 0;\n}\n\nfunction attemptVertx() {\n  try {\n    var r = require;\n    var vertx = __webpack_require__(18);\n    vertxNext = vertx.runOnLoop || vertx.runOnContext;\n    return useVertxTimer();\n  } catch (e) {\n    return useSetTimeout();\n  }\n}\n\nvar scheduleFlush = undefined;\n// Decide what async method to use to triggering processing of queued callbacks:\nif (isNode) {\n  scheduleFlush = useNextTick();\n} else if (BrowserMutationObserver) {\n  scheduleFlush = useMutationObserver();\n} else if (isWorker) {\n  scheduleFlush = useMessageChannel();\n} else if (browserWindow === undefined && \"function\" === 'function') {\n  scheduleFlush = attemptVertx();\n} else {\n  scheduleFlush = useSetTimeout();\n}\n\nfunction then(onFulfillment, onRejection) {\n  var _arguments = arguments;\n\n  var parent = this;\n\n  var child = new this.constructor(noop);\n\n  if (child[PROMISE_ID] === undefined) {\n    makePromise(child);\n  }\n\n  var _state = parent._state;\n\n  if (_state) {\n    (function () {\n      var callback = _arguments[_state - 1];\n      asap(function () {\n        return invokeCallback(_state, child, callback, parent._result);\n      });\n    })();\n  } else {\n    subscribe(parent, child, onFulfillment, onRejection);\n  }\n\n  return child;\n}\n\n/**\n  `Promise.resolve` returns a promise that will become resolved with the\n  passed `value`. It is shorthand for the following:\n\n  ```javascript\n  let promise = new Promise(function(resolve, reject){\n    resolve(1);\n  });\n\n  promise.then(function(value){\n    // value === 1\n  });\n  ```\n\n  Instead of writing the above, your code now simply becomes the following:\n\n  ```javascript\n  let promise = Promise.resolve(1);\n\n  promise.then(function(value){\n    // value === 1\n  });\n  ```\n\n  @method resolve\n  @static\n  @param {Any} value value that the returned promise will be resolved with\n  Useful for tooling.\n  @return {Promise} a promise that will become fulfilled with the given\n  `value`\n*/\nfunction resolve(object) {\n  /*jshint validthis:true */\n  var Constructor = this;\n\n  if (object && typeof object === 'object' && object.constructor === Constructor) {\n    return object;\n  }\n\n  var promise = new Constructor(noop);\n  _resolve(promise, object);\n  return promise;\n}\n\nvar PROMISE_ID = Math.random().toString(36).substring(16);\n\nfunction noop() {}\n\nvar PENDING = void 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\n\nvar GET_THEN_ERROR = new ErrorObject();\n\nfunction selfFulfillment() {\n  return new TypeError(\"You cannot resolve a promise with itself\");\n}\n\nfunction cannotReturnOwn() {\n  return new TypeError('A promises callback cannot return that same promise.');\n}\n\nfunction getThen(promise) {\n  try {\n    return promise.then;\n  } catch (error) {\n    GET_THEN_ERROR.error = error;\n    return GET_THEN_ERROR;\n  }\n}\n\nfunction tryThen(then, value, fulfillmentHandler, rejectionHandler) {\n  try {\n    then.call(value, fulfillmentHandler, rejectionHandler);\n  } catch (e) {\n    return e;\n  }\n}\n\nfunction handleForeignThenable(promise, thenable, then) {\n  asap(function (promise) {\n    var sealed = false;\n    var error = tryThen(then, thenable, function (value) {\n      if (sealed) {\n        return;\n      }\n      sealed = true;\n      if (thenable !== value) {\n        _resolve(promise, value);\n      } else {\n        fulfill(promise, value);\n      }\n    }, function (reason) {\n      if (sealed) {\n        return;\n      }\n      sealed = true;\n\n      _reject(promise, reason);\n    }, 'Settle: ' + (promise._label || ' unknown promise'));\n\n    if (!sealed && error) {\n      sealed = true;\n      _reject(promise, error);\n    }\n  }, promise);\n}\n\nfunction handleOwnThenable(promise, thenable) {\n  if (thenable._state === FULFILLED) {\n    fulfill(promise, thenable._result);\n  } else if (thenable._state === REJECTED) {\n    _reject(promise, thenable._result);\n  } else {\n    subscribe(thenable, undefined, function (value) {\n      return _resolve(promise, value);\n    }, function (reason) {\n      return _reject(promise, reason);\n    });\n  }\n}\n\nfunction handleMaybeThenable(promise, maybeThenable, then$$) {\n  if (maybeThenable.constructor === promise.constructor && then$$ === then && maybeThenable.constructor.resolve === resolve) {\n    handleOwnThenable(promise, maybeThenable);\n  } else {\n    if (then$$ === GET_THEN_ERROR) {\n      _reject(promise, GET_THEN_ERROR.error);\n    } else if (then$$ === undefined) {\n      fulfill(promise, maybeThenable);\n    } else if (isFunction(then$$)) {\n      handleForeignThenable(promise, maybeThenable, then$$);\n    } else {\n      fulfill(promise, maybeThenable);\n    }\n  }\n}\n\nfunction _resolve(promise, value) {\n  if (promise === value) {\n    _reject(promise, selfFulfillment());\n  } else if (objectOrFunction(value)) {\n    handleMaybeThenable(promise, value, getThen(value));\n  } else {\n    fulfill(promise, value);\n  }\n}\n\nfunction publishRejection(promise) {\n  if (promise._onerror) {\n    promise._onerror(promise._result);\n  }\n\n  publish(promise);\n}\n\nfunction fulfill(promise, value) {\n  if (promise._state !== PENDING) {\n    return;\n  }\n\n  promise._result = value;\n  promise._state = FULFILLED;\n\n  if (promise._subscribers.length !== 0) {\n    asap(publish, promise);\n  }\n}\n\nfunction _reject(promise, reason) {\n  if (promise._state !== PENDING) {\n    return;\n  }\n  promise._state = REJECTED;\n  promise._result = reason;\n\n  asap(publishRejection, promise);\n}\n\nfunction subscribe(parent, child, onFulfillment, onRejection) {\n  var _subscribers = parent._subscribers;\n  var length = _subscribers.length;\n\n  parent._onerror = null;\n\n  _subscribers[length] = child;\n  _subscribers[length + FULFILLED] = onFulfillment;\n  _subscribers[length + REJECTED] = onRejection;\n\n  if (length === 0 && parent._state) {\n    asap(publish, parent);\n  }\n}\n\nfunction publish(promise) {\n  var subscribers = promise._subscribers;\n  var settled = promise._state;\n\n  if (subscribers.length === 0) {\n    return;\n  }\n\n  var child = undefined,\n      callback = undefined,\n      detail = promise._result;\n\n  for (var i = 0; i < subscribers.length; i += 3) {\n    child = subscribers[i];\n    callback = subscribers[i + settled];\n\n    if (child) {\n      invokeCallback(settled, child, callback, detail);\n    } else {\n      callback(detail);\n    }\n  }\n\n  promise._subscribers.length = 0;\n}\n\nfunction ErrorObject() {\n  this.error = null;\n}\n\nvar TRY_CATCH_ERROR = new ErrorObject();\n\nfunction tryCatch(callback, detail) {\n  try {\n    return callback(detail);\n  } catch (e) {\n    TRY_CATCH_ERROR.error = e;\n    return TRY_CATCH_ERROR;\n  }\n}\n\nfunction invokeCallback(settled, promise, callback, detail) {\n  var hasCallback = isFunction(callback),\n      value = undefined,\n      error = undefined,\n      succeeded = undefined,\n      failed = undefined;\n\n  if (hasCallback) {\n    value = tryCatch(callback, detail);\n\n    if (value === TRY_CATCH_ERROR) {\n      failed = true;\n      error = value.error;\n      value = null;\n    } else {\n      succeeded = true;\n    }\n\n    if (promise === value) {\n      _reject(promise, cannotReturnOwn());\n      return;\n    }\n  } else {\n    value = detail;\n    succeeded = true;\n  }\n\n  if (promise._state !== PENDING) {\n    // noop\n  } else if (hasCallback && succeeded) {\n      _resolve(promise, value);\n    } else if (failed) {\n      _reject(promise, error);\n    } else if (settled === FULFILLED) {\n      fulfill(promise, value);\n    } else if (settled === REJECTED) {\n      _reject(promise, value);\n    }\n}\n\nfunction initializePromise(promise, resolver) {\n  try {\n    resolver(function resolvePromise(value) {\n      _resolve(promise, value);\n    }, function rejectPromise(reason) {\n      _reject(promise, reason);\n    });\n  } catch (e) {\n    _reject(promise, e);\n  }\n}\n\nvar id = 0;\nfunction nextId() {\n  return id++;\n}\n\nfunction makePromise(promise) {\n  promise[PROMISE_ID] = id++;\n  promise._state = undefined;\n  promise._result = undefined;\n  promise._subscribers = [];\n}\n\nfunction Enumerator(Constructor, input) {\n  this._instanceConstructor = Constructor;\n  this.promise = new Constructor(noop);\n\n  if (!this.promise[PROMISE_ID]) {\n    makePromise(this.promise);\n  }\n\n  if (isArray(input)) {\n    this._input = input;\n    this.length = input.length;\n    this._remaining = input.length;\n\n    this._result = new Array(this.length);\n\n    if (this.length === 0) {\n      fulfill(this.promise, this._result);\n    } else {\n      this.length = this.length || 0;\n      this._enumerate();\n      if (this._remaining === 0) {\n        fulfill(this.promise, this._result);\n      }\n    }\n  } else {\n    _reject(this.promise, validationError());\n  }\n}\n\nfunction validationError() {\n  return new Error('Array Methods must be provided an Array');\n};\n\nEnumerator.prototype._enumerate = function () {\n  var length = this.length;\n  var _input = this._input;\n\n  for (var i = 0; this._state === PENDING && i < length; i++) {\n    this._eachEntry(_input[i], i);\n  }\n};\n\nEnumerator.prototype._eachEntry = function (entry, i) {\n  var c = this._instanceConstructor;\n  var resolve$$ = c.resolve;\n\n  if (resolve$$ === resolve) {\n    var _then = getThen(entry);\n\n    if (_then === then && entry._state !== PENDING) {\n      this._settledAt(entry._state, i, entry._result);\n    } else if (typeof _then !== 'function') {\n      this._remaining--;\n      this._result[i] = entry;\n    } else if (c === Promise) {\n      var promise = new c(noop);\n      handleMaybeThenable(promise, entry, _then);\n      this._willSettleAt(promise, i);\n    } else {\n      this._willSettleAt(new c(function (resolve$$) {\n        return resolve$$(entry);\n      }), i);\n    }\n  } else {\n    this._willSettleAt(resolve$$(entry), i);\n  }\n};\n\nEnumerator.prototype._settledAt = function (state, i, value) {\n  var promise = this.promise;\n\n  if (promise._state === PENDING) {\n    this._remaining--;\n\n    if (state === REJECTED) {\n      _reject(promise, value);\n    } else {\n      this._result[i] = value;\n    }\n  }\n\n  if (this._remaining === 0) {\n    fulfill(promise, this._result);\n  }\n};\n\nEnumerator.prototype._willSettleAt = function (promise, i) {\n  var enumerator = this;\n\n  subscribe(promise, undefined, function (value) {\n    return enumerator._settledAt(FULFILLED, i, value);\n  }, function (reason) {\n    return enumerator._settledAt(REJECTED, i, reason);\n  });\n};\n\n/**\n  `Promise.all` accepts an array of promises, and returns a new promise which\n  is fulfilled with an array of fulfillment values for the passed promises, or\n  rejected with the reason of the first passed promise to be rejected. It casts all\n  elements of the passed iterable to promises as it runs this algorithm.\n\n  Example:\n\n  ```javascript\n  let promise1 = resolve(1);\n  let promise2 = resolve(2);\n  let promise3 = resolve(3);\n  let promises = [ promise1, promise2, promise3 ];\n\n  Promise.all(promises).then(function(array){\n    // The array here would be [ 1, 2, 3 ];\n  });\n  ```\n\n  If any of the `promises` given to `all` are rejected, the first promise\n  that is rejected will be given as an argument to the returned promises's\n  rejection handler. For example:\n\n  Example:\n\n  ```javascript\n  let promise1 = resolve(1);\n  let promise2 = reject(new Error(\"2\"));\n  let promise3 = reject(new Error(\"3\"));\n  let promises = [ promise1, promise2, promise3 ];\n\n  Promise.all(promises).then(function(array){\n    // Code here never runs because there are rejected promises!\n  }, function(error) {\n    // error.message === \"2\"\n  });\n  ```\n\n  @method all\n  @static\n  @param {Array} entries array of promises\n  @param {String} label optional string for labeling the promise.\n  Useful for tooling.\n  @return {Promise} promise that is fulfilled when all `promises` have been\n  fulfilled, or rejected if any of them become rejected.\n  @static\n*/\nfunction all(entries) {\n  return new Enumerator(this, entries).promise;\n}\n\n/**\n  `Promise.race` returns a new promise which is settled in the same way as the\n  first passed promise to settle.\n\n  Example:\n\n  ```javascript\n  let promise1 = new Promise(function(resolve, reject){\n    setTimeout(function(){\n      resolve('promise 1');\n    }, 200);\n  });\n\n  let promise2 = new Promise(function(resolve, reject){\n    setTimeout(function(){\n      resolve('promise 2');\n    }, 100);\n  });\n\n  Promise.race([promise1, promise2]).then(function(result){\n    // result === 'promise 2' because it was resolved before promise1\n    // was resolved.\n  });\n  ```\n\n  `Promise.race` is deterministic in that only the state of the first\n  settled promise matters. For example, even if other promises given to the\n  `promises` array argument are resolved, but the first settled promise has\n  become rejected before the other promises became fulfilled, the returned\n  promise will become rejected:\n\n  ```javascript\n  let promise1 = new Promise(function(resolve, reject){\n    setTimeout(function(){\n      resolve('promise 1');\n    }, 200);\n  });\n\n  let promise2 = new Promise(function(resolve, reject){\n    setTimeout(function(){\n      reject(new Error('promise 2'));\n    }, 100);\n  });\n\n  Promise.race([promise1, promise2]).then(function(result){\n    // Code here never runs\n  }, function(reason){\n    // reason.message === 'promise 2' because promise 2 became rejected before\n    // promise 1 became fulfilled\n  });\n  ```\n\n  An example real-world use case is implementing timeouts:\n\n  ```javascript\n  Promise.race([ajax('foo.json'), timeout(5000)])\n  ```\n\n  @method race\n  @static\n  @param {Array} promises array of promises to observe\n  Useful for tooling.\n  @return {Promise} a promise which settles in the same way as the first passed\n  promise to settle.\n*/\nfunction race(entries) {\n  /*jshint validthis:true */\n  var Constructor = this;\n\n  if (!isArray(entries)) {\n    return new Constructor(function (_, reject) {\n      return reject(new TypeError('You must pass an array to race.'));\n    });\n  } else {\n    return new Constructor(function (resolve, reject) {\n      var length = entries.length;\n      for (var i = 0; i < length; i++) {\n        Constructor.resolve(entries[i]).then(resolve, reject);\n      }\n    });\n  }\n}\n\n/**\n  `Promise.reject` returns a promise rejected with the passed `reason`.\n  It is shorthand for the following:\n\n  ```javascript\n  let promise = new Promise(function(resolve, reject){\n    reject(new Error('WHOOPS'));\n  });\n\n  promise.then(function(value){\n    // Code here doesn't run because the promise is rejected!\n  }, function(reason){\n    // reason.message === 'WHOOPS'\n  });\n  ```\n\n  Instead of writing the above, your code now simply becomes the following:\n\n  ```javascript\n  let promise = Promise.reject(new Error('WHOOPS'));\n\n  promise.then(function(value){\n    // Code here doesn't run because the promise is rejected!\n  }, function(reason){\n    // reason.message === 'WHOOPS'\n  });\n  ```\n\n  @method reject\n  @static\n  @param {Any} reason value that the returned promise will be rejected with.\n  Useful for tooling.\n  @return {Promise} a promise rejected with the given `reason`.\n*/\nfunction reject(reason) {\n  /*jshint validthis:true */\n  var Constructor = this;\n  var promise = new Constructor(noop);\n  _reject(promise, reason);\n  return promise;\n}\n\nfunction needsResolver() {\n  throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\n}\n\nfunction needsNew() {\n  throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\");\n}\n\n/**\n  Promise objects represent the eventual result of an asynchronous operation. The\n  primary way of interacting with a promise is through its `then` method, which\n  registers callbacks to receive either a promise's eventual value or the reason\n  why the promise cannot be fulfilled.\n\n  Terminology\n  -----------\n\n  - `promise` is an object or function with a `then` method whose behavior conforms to this specification.\n  - `thenable` is an object or function that defines a `then` method.\n  - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).\n  - `exception` is a value that is thrown using the throw statement.\n  - `reason` is a value that indicates why a promise was rejected.\n  - `settled` the final resting state of a promise, fulfilled or rejected.\n\n  A promise can be in one of three states: pending, fulfilled, or rejected.\n\n  Promises that are fulfilled have a fulfillment value and are in the fulfilled\n  state.  Promises that are rejected have a rejection reason and are in the\n  rejected state.  A fulfillment value is never a thenable.\n\n  Promises can also be said to *resolve* a value.  If this value is also a\n  promise, then the original promise's settled state will match the value's\n  settled state.  So a promise that *resolves* a promise that rejects will\n  itself reject, and a promise that *resolves* a promise that fulfills will\n  itself fulfill.\n\n\n  Basic Usage:\n  ------------\n\n  ```js\n  let promise = new Promise(function(resolve, reject) {\n    // on success\n    resolve(value);\n\n    // on failure\n    reject(reason);\n  });\n\n  promise.then(function(value) {\n    // on fulfillment\n  }, function(reason) {\n    // on rejection\n  });\n  ```\n\n  Advanced Usage:\n  ---------------\n\n  Promises shine when abstracting away asynchronous interactions such as\n  `XMLHttpRequest`s.\n\n  ```js\n  function getJSON(url) {\n    return new Promise(function(resolve, reject){\n      let xhr = new XMLHttpRequest();\n\n      xhr.open('GET', url);\n      xhr.onreadystatechange = handler;\n      xhr.responseType = 'json';\n      xhr.setRequestHeader('Accept', 'application/json');\n      xhr.send();\n\n      function handler() {\n        if (this.readyState === this.DONE) {\n          if (this.status === 200) {\n            resolve(this.response);\n          } else {\n            reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));\n          }\n        }\n      };\n    });\n  }\n\n  getJSON('/posts.json').then(function(json) {\n    // on fulfillment\n  }, function(reason) {\n    // on rejection\n  });\n  ```\n\n  Unlike callbacks, promises are great composable primitives.\n\n  ```js\n  Promise.all([\n    getJSON('/posts'),\n    getJSON('/comments')\n  ]).then(function(values){\n    values[0] // => postsJSON\n    values[1] // => commentsJSON\n\n    return values;\n  });\n  ```\n\n  @class Promise\n  @param {function} resolver\n  Useful for tooling.\n  @constructor\n*/\nfunction Promise(resolver) {\n  this[PROMISE_ID] = nextId();\n  this._result = this._state = undefined;\n  this._subscribers = [];\n\n  if (noop !== resolver) {\n    typeof resolver !== 'function' && needsResolver();\n    this instanceof Promise ? initializePromise(this, resolver) : needsNew();\n  }\n}\n\nPromise.all = all;\nPromise.race = race;\nPromise.resolve = resolve;\nPromise.reject = reject;\nPromise._setScheduler = setScheduler;\nPromise._setAsap = setAsap;\nPromise._asap = asap;\n\nPromise.prototype = {\n  constructor: Promise,\n\n  /**\n    The primary way of interacting with a promise is through its `then` method,\n    which registers callbacks to receive either a promise's eventual value or the\n    reason why the promise cannot be fulfilled.\n  \n    ```js\n    findUser().then(function(user){\n      // user is available\n    }, function(reason){\n      // user is unavailable, and you are given the reason why\n    });\n    ```\n  \n    Chaining\n    --------\n  \n    The return value of `then` is itself a promise.  This second, 'downstream'\n    promise is resolved with the return value of the first promise's fulfillment\n    or rejection handler, or rejected if the handler throws an exception.\n  \n    ```js\n    findUser().then(function (user) {\n      return user.name;\n    }, function (reason) {\n      return 'default name';\n    }).then(function (userName) {\n      // If `findUser` fulfilled, `userName` will be the user's name, otherwise it\n      // will be `'default name'`\n    });\n  \n    findUser().then(function (user) {\n      throw new Error('Found user, but still unhappy');\n    }, function (reason) {\n      throw new Error('`findUser` rejected and we're unhappy');\n    }).then(function (value) {\n      // never reached\n    }, function (reason) {\n      // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.\n      // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.\n    });\n    ```\n    If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.\n  \n    ```js\n    findUser().then(function (user) {\n      throw new PedagogicalException('Upstream error');\n    }).then(function (value) {\n      // never reached\n    }).then(function (value) {\n      // never reached\n    }, function (reason) {\n      // The `PedgagocialException` is propagated all the way down to here\n    });\n    ```\n  \n    Assimilation\n    ------------\n  \n    Sometimes the value you want to propagate to a downstream promise can only be\n    retrieved asynchronously. This can be achieved by returning a promise in the\n    fulfillment or rejection handler. The downstream promise will then be pending\n    until the returned promise is settled. This is called *assimilation*.\n  \n    ```js\n    findUser().then(function (user) {\n      return findCommentsByAuthor(user);\n    }).then(function (comments) {\n      // The user's comments are now available\n    });\n    ```\n  \n    If the assimliated promise rejects, then the downstream promise will also reject.\n  \n    ```js\n    findUser().then(function (user) {\n      return findCommentsByAuthor(user);\n    }).then(function (comments) {\n      // If `findCommentsByAuthor` fulfills, we'll have the value here\n    }, function (reason) {\n      // If `findCommentsByAuthor` rejects, we'll have the reason here\n    });\n    ```\n  \n    Simple Example\n    --------------\n  \n    Synchronous Example\n  \n    ```javascript\n    let result;\n  \n    try {\n      result = findResult();\n      // success\n    } catch(reason) {\n      // failure\n    }\n    ```\n  \n    Errback Example\n  \n    ```js\n    findResult(function(result, err){\n      if (err) {\n        // failure\n      } else {\n        // success\n      }\n    });\n    ```\n  \n    Promise Example;\n  \n    ```javascript\n    findResult().then(function(result){\n      // success\n    }, function(reason){\n      // failure\n    });\n    ```\n  \n    Advanced Example\n    --------------\n  \n    Synchronous Example\n  \n    ```javascript\n    let author, books;\n  \n    try {\n      author = findAuthor();\n      books  = findBooksByAuthor(author);\n      // success\n    } catch(reason) {\n      // failure\n    }\n    ```\n  \n    Errback Example\n  \n    ```js\n  \n    function foundBooks(books) {\n  \n    }\n  \n    function failure(reason) {\n  \n    }\n  \n    findAuthor(function(author, err){\n      if (err) {\n        failure(err);\n        // failure\n      } else {\n        try {\n          findBoooksByAuthor(author, function(books, err) {\n            if (err) {\n              failure(err);\n            } else {\n              try {\n                foundBooks(books);\n              } catch(reason) {\n                failure(reason);\n              }\n            }\n          });\n        } catch(error) {\n          failure(err);\n        }\n        // success\n      }\n    });\n    ```\n  \n    Promise Example;\n  \n    ```javascript\n    findAuthor().\n      then(findBooksByAuthor).\n      then(function(books){\n        // found books\n    }).catch(function(reason){\n      // something went wrong\n    });\n    ```\n  \n    @method then\n    @param {Function} onFulfilled\n    @param {Function} onRejected\n    Useful for tooling.\n    @return {Promise}\n  */\n  then: then,\n\n  /**\n    `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same\n    as the catch block of a try/catch statement.\n  \n    ```js\n    function findAuthor(){\n      throw new Error('couldn't find that author');\n    }\n  \n    // synchronous\n    try {\n      findAuthor();\n    } catch(reason) {\n      // something went wrong\n    }\n  \n    // async with promises\n    findAuthor().catch(function(reason){\n      // something went wrong\n    });\n    ```\n  \n    @method catch\n    @param {Function} onRejection\n    Useful for tooling.\n    @return {Promise}\n  */\n  'catch': function _catch(onRejection) {\n    return this.then(null, onRejection);\n  }\n};\n\nfunction polyfill() {\n    var local = undefined;\n\n    if (typeof global !== 'undefined') {\n        local = global;\n    } else if (typeof self !== 'undefined') {\n        local = self;\n    } else {\n        try {\n            local = Function('return this')();\n        } catch (e) {\n            throw new Error('polyfill failed because global object is unavailable in this environment');\n        }\n    }\n\n    var P = local.Promise;\n\n    if (P) {\n        var promiseToString = null;\n        try {\n            promiseToString = Object.prototype.toString.call(P.resolve());\n        } catch (e) {\n            // silently ignored\n        }\n\n        if (promiseToString === '[object Promise]' && !P.cast) {\n            return;\n        }\n    }\n\n    local.Promise = Promise;\n}\n\n// Strange compat..\nPromise.polyfill = polyfill;\nPromise.Promise = Promise;\n\nreturn Promise;\n\n})));\n//# sourceMappingURL=es6-promise.map\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(8), __webpack_require__(16)))\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar eventemitter3_1 = __webpack_require__(7);\nvar request_types_1 = __webpack_require__(0);\nvar wallet_service_1 = __webpack_require__(15);\nvar Wallet = (function () {\n    function Wallet(walletServiceConstructable, getWalletRequestTypeFn) {\n        this.events = new eventemitter3_1.EventEmitter();\n        this._walletService = null;\n        this._getWalletRequestType = null;\n        this._walletService = walletServiceConstructable || wallet_service_1.default;\n        this._getWalletRequestType = getWalletRequestTypeFn || request_types_1.default;\n    }\n    Wallet.getWalletOptions = function (responseData) {\n        var walletOptions = responseData.reduce(function (previous, current) {\n            previous[current.key] = current.value;\n            return previous;\n        }, {});\n        return walletOptions;\n    };\n    Wallet.prototype.open = function (sessionId, options) {\n        if (options === void 0) { options = {}; }\n        options.preferredWindowState = options.preferredWindowState || \"overlay\";\n        options.events = this.events;\n        var walletService = new this._walletService(options);\n        var getWalletRequestType = this._getWalletRequestType;\n        var sessionPromise = walletService.getSession(sessionId)\n            .then(function onGetSessionFulfilled(response) {\n            var walletRequestConstructable = getWalletRequestType(response.session.walletname);\n            var walletOptions = Wallet.getWalletOptions(response.session.data);\n            var walletRequest = new walletRequestConstructable(walletOptions, options);\n            return walletRequest.initiate();\n        });\n        return sessionPromise;\n    };\n    return Wallet;\n}());\nexports.default = Wallet;\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_6__;\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar has = Object.prototype.hasOwnProperty\n  , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @api private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n  Events.prototype = Object.create(null);\n\n  //\n  // This hack is needed because the `__proto__` property is still inherited in\n  // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n  //\n  if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {Mixed} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @api private\n */\nfunction EE(fn, context, once) {\n  this.fn = fn;\n  this.context = context;\n  this.once = once || false;\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @api public\n */\nfunction EventEmitter() {\n  this._events = new Events();\n  this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @api public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n  var names = []\n    , events\n    , name;\n\n  if (this._eventsCount === 0) return names;\n\n  for (name in (events = this._events)) {\n    if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n  }\n\n  if (Object.getOwnPropertySymbols) {\n    return names.concat(Object.getOwnPropertySymbols(events));\n  }\n\n  return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Boolean} exists Only check if there are listeners.\n * @returns {Array|Boolean}\n * @api public\n */\nEventEmitter.prototype.listeners = function listeners(event, exists) {\n  var evt = prefix ? prefix + event : event\n    , available = this._events[evt];\n\n  if (exists) return !!available;\n  if (!available) return [];\n  if (available.fn) return [available.fn];\n\n  for (var i = 0, l = available.length, ee = new Array(l); i < l; i++) {\n    ee[i] = available[i].fn;\n  }\n\n  return ee;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @api public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n  var evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) return false;\n\n  var listeners = this._events[evt]\n    , len = arguments.length\n    , args\n    , i;\n\n  if (listeners.fn) {\n    if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n    switch (len) {\n      case 1: return listeners.fn.call(listeners.context), true;\n      case 2: return listeners.fn.call(listeners.context, a1), true;\n      case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n      case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n      case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n      case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n    }\n\n    for (i = 1, args = new Array(len -1); i < len; i++) {\n      args[i - 1] = arguments[i];\n    }\n\n    listeners.fn.apply(listeners.context, args);\n  } else {\n    var length = listeners.length\n      , j;\n\n    for (i = 0; i < length; i++) {\n      if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n      switch (len) {\n        case 1: listeners[i].fn.call(listeners[i].context); break;\n        case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n        case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n        case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n        default:\n          if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n            args[j - 1] = arguments[j];\n          }\n\n          listeners[i].fn.apply(listeners[i].context, args);\n      }\n    }\n  }\n\n  return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn The listener function.\n * @param {Mixed} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n  var listener = new EE(fn, context || this)\n    , evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n  else if (!this._events[evt].fn) this._events[evt].push(listener);\n  else this._events[evt] = [this._events[evt], listener];\n\n  return this;\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn The listener function.\n * @param {Mixed} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n  var listener = new EE(fn, context || this, true)\n    , evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n  else if (!this._events[evt].fn) this._events[evt].push(listener);\n  else this._events[evt] = [this._events[evt], listener];\n\n  return this;\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {Mixed} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n  var evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) return this;\n  if (!fn) {\n    if (--this._eventsCount === 0) this._events = new Events();\n    else delete this._events[evt];\n    return this;\n  }\n\n  var listeners = this._events[evt];\n\n  if (listeners.fn) {\n    if (\n         listeners.fn === fn\n      && (!once || listeners.once)\n      && (!context || listeners.context === context)\n    ) {\n      if (--this._eventsCount === 0) this._events = new Events();\n      else delete this._events[evt];\n    }\n  } else {\n    for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n      if (\n           listeners[i].fn !== fn\n        || (once && !listeners[i].once)\n        || (context && listeners[i].context !== context)\n      ) {\n        events.push(listeners[i]);\n      }\n    }\n\n    //\n    // Reset the array, or remove it completely if we have no more listeners.\n    //\n    if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n    else if (--this._eventsCount === 0) this._events = new Events();\n    else delete this._events[evt];\n  }\n\n  return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {String|Symbol} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n  var evt;\n\n  if (event) {\n    evt = prefix ? prefix + event : event;\n    if (this._events[evt]) {\n      if (--this._eventsCount === 0) this._events = new Events();\n      else delete this._events[evt];\n    }\n  } else {\n    this._events = new Events();\n    this._eventsCount = 0;\n  }\n\n  return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// This function doesn't apply anymore.\n//\nEventEmitter.prototype.setMaxListeners = function setMaxListeners() {\n  return this;\n};\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif (true) {\n  module.exports = EventEmitter;\n}\n\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports) {\n\n// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things.  But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals.  It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n    throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n    throw new Error('clearTimeout has not been defined');\n}\n(function () {\n    try {\n        if (typeof setTimeout === 'function') {\n            cachedSetTimeout = setTimeout;\n        } else {\n            cachedSetTimeout = defaultSetTimout;\n        }\n    } catch (e) {\n        cachedSetTimeout = defaultSetTimout;\n    }\n    try {\n        if (typeof clearTimeout === 'function') {\n            cachedClearTimeout = clearTimeout;\n        } else {\n            cachedClearTimeout = defaultClearTimeout;\n        }\n    } catch (e) {\n        cachedClearTimeout = defaultClearTimeout;\n    }\n} ())\nfunction runTimeout(fun) {\n    if (cachedSetTimeout === setTimeout) {\n        //normal enviroments in sane situations\n        return setTimeout(fun, 0);\n    }\n    // if setTimeout wasn't available but was latter defined\n    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n        cachedSetTimeout = setTimeout;\n        return setTimeout(fun, 0);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedSetTimeout(fun, 0);\n    } catch(e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n            return cachedSetTimeout.call(null, fun, 0);\n        } catch(e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n            return cachedSetTimeout.call(this, fun, 0);\n        }\n    }\n\n\n}\nfunction runClearTimeout(marker) {\n    if (cachedClearTimeout === clearTimeout) {\n        //normal enviroments in sane situations\n        return clearTimeout(marker);\n    }\n    // if clearTimeout wasn't available but was latter defined\n    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n        cachedClearTimeout = clearTimeout;\n        return clearTimeout(marker);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedClearTimeout(marker);\n    } catch (e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally\n            return cachedClearTimeout.call(null, marker);\n        } catch (e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n            // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n            return cachedClearTimeout.call(this, marker);\n        }\n    }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n    if (!draining || !currentQueue) {\n        return;\n    }\n    draining = false;\n    if (currentQueue.length) {\n        queue = currentQueue.concat(queue);\n    } else {\n        queueIndex = -1;\n    }\n    if (queue.length) {\n        drainQueue();\n    }\n}\n\nfunction drainQueue() {\n    if (draining) {\n        return;\n    }\n    var timeout = runTimeout(cleanUpNextTick);\n    draining = true;\n\n    var len = queue.length;\n    while(len) {\n        currentQueue = queue;\n        queue = [];\n        while (++queueIndex < len) {\n            if (currentQueue) {\n                currentQueue[queueIndex].run();\n            }\n        }\n        queueIndex = -1;\n        len = queue.length;\n    }\n    currentQueue = null;\n    draining = false;\n    runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n    var args = new Array(arguments.length - 1);\n    if (arguments.length > 1) {\n        for (var i = 1; i < arguments.length; i++) {\n            args[i - 1] = arguments[i];\n        }\n    }\n    queue.push(new Item(fun, args));\n    if (queue.length === 1 && !draining) {\n        runTimeout(drainQueue);\n    }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n    this.fun = fun;\n    this.array = array;\n}\nItem.prototype.run = function () {\n    this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n    throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n    throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar has = Object.prototype.hasOwnProperty\n  , undef;\n\n/**\n * Decode a URI encoded string.\n *\n * @param {String} input The URI encoded string.\n * @returns {String|Null} The decoded string.\n * @api private\n */\nfunction decode(input) {\n  try {\n    return decodeURIComponent(input.replace(/\\+/g, ' '));\n  } catch (e) {\n    return null;\n  }\n}\n\n/**\n * Attempts to encode a given input.\n *\n * @param {String} input The string that needs to be encoded.\n * @returns {String|Null} The encoded string.\n * @api private\n */\nfunction encode(input) {\n  try {\n    return encodeURIComponent(input);\n  } catch (e) {\n    return null;\n  }\n}\n\n/**\n * Simple query string parser.\n *\n * @param {String} query The query string that needs to be parsed.\n * @returns {Object}\n * @api public\n */\nfunction querystring(query) {\n  var parser = /([^=?&]+)=?([^&]*)/g\n    , result = {}\n    , part;\n\n  while (part = parser.exec(query)) {\n    var key = decode(part[1])\n      , value = decode(part[2]);\n\n    //\n    // Prevent overriding of existing properties. This ensures that build-in\n    // methods like `toString` or __proto__ are not overriden by malicious\n    // querystrings.\n    //\n    // In the case if failed decoding, we want to omit the key/value pairs\n    // from the result.\n    //\n    if (key === null || value === null || key in result) continue;\n    result[key] = value;\n  }\n\n  return result;\n}\n\n/**\n * Transform a query string to an object.\n *\n * @param {Object} obj Object that should be transformed.\n * @param {String} prefix Optional prefix.\n * @returns {String}\n * @api public\n */\nfunction querystringify(obj, prefix) {\n  prefix = prefix || '';\n\n  var pairs = []\n    , value\n    , key;\n\n  //\n  // Optionally prefix with a '?' if needed\n  //\n  if ('string' !== typeof prefix) prefix = '?';\n\n  for (key in obj) {\n    if (has.call(obj, key)) {\n      value = obj[key];\n\n      //\n      // Edge cases where we actually want to encode the value to an empty\n      // string instead of the stringified value.\n      //\n      if (!value && (value === null || value === undef || isNaN(value))) {\n        value = '';\n      }\n\n      key = encodeURIComponent(key);\n      value = encodeURIComponent(value);\n\n      //\n      // If we failed to encode the strings, we should bail out as we don't\n      // want to add invalid strings to the query.\n      //\n      if (key === null || value === null) continue;\n      pairs.push(key +'='+ value);\n    }\n  }\n\n  return pairs.length ? prefix + pairs.join('&') : '';\n}\n\n//\n// Expose the module.\n//\nexports.stringify = querystringify;\nexports.parse = querystring;\n\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nfunction __export(m) {\n    for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(__webpack_require__(11));\n__export(__webpack_require__(12));\n__export(__webpack_require__(13));\n__export(__webpack_require__(14));\n\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar endpoints = __webpack_require__(1);\nvar request_types_1 = __webpack_require__(0);\nvar response_transformers_1 = __webpack_require__(3);\nvar MasterPassRequest = (function () {\n    function MasterPassRequest(data, options) {\n        this.data = data;\n        if (options) {\n            if (options.preferredWindowState) {\n                this._preferredWindowState = options.preferredWindowState;\n            }\n            if (options.walletEndpoint) {\n                this._walletEndpoint = options.walletEndpoint;\n            }\n        }\n    }\n    MasterPassRequest.prototype.initiate = function () {\n        var _this = this;\n        var promise = this.loadScriptIfNotAlreadyLoaded()\n            .then(function () { return _this.sendRequest(); });\n        return promise;\n    };\n    MasterPassRequest.prototype.sendRequest = function () {\n        var _this = this;\n        var promise = new Promise(function (resolve, reject) {\n            MasterPass.client.checkout({\n                allowedCardTypes: _this.data.allowedCardTypes,\n                callbackUrl: _this.data.callbackUrl,\n                cancelCallback: function (mpLightboxResponse) { return reject(mpLightboxResponse); },\n                failureCallback: function (mpLightboxResponse) { return reject(mpLightboxResponse); },\n                merchantCheckoutId: _this.data.merchantCheckoutId,\n                requestToken: _this.data.requestToken,\n                successCallback: function (mpLightboxResponse) { return resolve({\n                    data: mpLightboxResponse,\n                    walletName: \"MasterPass\",\n                }); },\n                suppressShippingAddressEnable: _this.data.suppressShippingAddressEnable === \"true\",\n                version: \"v6\",\n            });\n        });\n        return promise;\n    };\n    MasterPassRequest.prototype.loadScriptIfNotAlreadyLoaded = function () {\n        var _this = this;\n        var promise = new Promise(function (resolve, reject) {\n            if (_this._script) {\n                resolve();\n            }\n            else {\n                _this._script = _this._script || document.createElement(\"script\");\n                _this._script.async = false;\n                _this._script.src = _this._walletEndpoint || endpoints.masterPass.productionClientApi;\n                _this._script.onload = function (event) { return resolve(event); };\n                _this._script.onerror = function (event) { return reject(event); };\n                document.head.appendChild(_this._script);\n            }\n        });\n        return promise;\n    };\n    MasterPassRequest = __decorate([\n        request_types_1.WalletRequestType(\"MasterPass\"),\n        __metadata(\"design:paramtypes\", [Object, Object])\n    ], MasterPassRequest);\n    return MasterPassRequest;\n}());\nexports.MasterPassRequest = MasterPassRequest;\nvar MasterPassResponseTransformer = (function () {\n    function MasterPassResponseTransformer() {\n    }\n    MasterPassResponseTransformer.prototype.transform = function (response) {\n        var validData = response.session.data.map(function (data) {\n            if (data.type === \"array\") {\n                return {\n                    key: data.key,\n                    type: data.type,\n                    value: data.value.split(\",\"),\n                };\n            }\n            return data;\n        });\n        var validResponse = {\n            session: {\n                data: validData,\n                walletname: response.session.walletname,\n            },\n        };\n        return validResponse;\n    };\n    MasterPassResponseTransformer = __decorate([\n        response_transformers_1.WalletResponseTransformer(\"masterpass\")\n    ], MasterPassResponseTransformer);\n    return MasterPassResponseTransformer;\n}());\nexports.MasterPassResponseTransformer = MasterPassResponseTransformer;\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar endpoints = __webpack_require__(1);\nvar request_types_1 = __webpack_require__(0);\nvar MobilePayRequest = (function () {\n    function MobilePayRequest(data, options) {\n        this.data = data;\n        this._target = \"_self\";\n        if (options) {\n            if (options.preferredWindowState) {\n                this._preferredWindowState = options.preferredWindowState;\n            }\n            if (options.walletEndpoint) {\n                this._walletEndpoint = options.walletEndpoint;\n            }\n            if (options.target) {\n                this._target = options.target;\n            }\n        }\n    }\n    MobilePayRequest.prototype.initiate = function () {\n        if (this.data.Url) {\n            window.location.href = this.data.Url;\n        }\n        else {\n            if (!this.data.Version)\n                this.data.Version = \"1\";\n            var form = document.createElement(\"form\");\n            form.action = this._walletEndpoint || endpoints.mobilePay.productionClient;\n            form.method = \"POST\";\n            form.target = this._target;\n            for (var key in this.data) {\n                if (this.data.hasOwnProperty(key)) {\n                    var input = document.createElement(\"input\");\n                    input.type = \"hidden\";\n                    input.name = key;\n                    input.value = this.data[key];\n                    form.appendChild(input);\n                }\n            }\n            document.body.appendChild(form);\n            form.submit();\n        }\n        return new Promise(function (resolve, reject) {\n        });\n    };\n    MobilePayRequest = __decorate([\n        request_types_1.WalletRequestType(\"MobilePay\"),\n        __metadata(\"design:paramtypes\", [Object, Object])\n    ], MobilePayRequest);\n    return MobilePayRequest;\n}());\nexports.MobilePayRequest = MobilePayRequest;\n\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar qs = __webpack_require__(9);\nvar endpoints = __webpack_require__(1);\nvar request_types_1 = __webpack_require__(0);\nvar TestRequest = (function () {\n    function TestRequest(data, options) {\n        this.data = data;\n        if (options) {\n            if (options.preferredWindowState) {\n                this._preferredWindowState = options.preferredWindowState;\n            }\n            if (options.walletEndpoint) {\n                this._walletEndpoint = options.walletEndpoint;\n            }\n        }\n    }\n    TestRequest.prototype.initiate = function () {\n        if (this._preferredWindowState === \"overlay\") {\n            var iframe = document.createElement(\"iframe\");\n            var url = (this._walletEndpoint || endpoints.epayZero.testClient) + \"/?\" + qs.stringify(this.data);\n            iframe.setAttribute(\"src\", url);\n            iframe.style.width = \"100%\";\n            iframe.style.height = \"100%\";\n            iframe.style.border = \"0 none\";\n            iframe.style.bottom = \"0\";\n            iframe.style.top = \"0\";\n            iframe.style.left = \"0\";\n            iframe.style.right = \"0\";\n            iframe.style.position = \"fixed\";\n            iframe.style.zIndex = \"10000\";\n            document.body.appendChild(iframe);\n            this.showBackdrop();\n            return new Promise(function (resolve, reject) {\n                window.addEventListener(\"message\", onMessageReceived);\n                function onMessageReceived(event) {\n                    if (event.origin !== \"https://wallet-v1.api-epay.eu\")\n                        return;\n                    var message = event.data;\n                    var result = {\n                        data: event.data,\n                        walletName: \"Test\",\n                    };\n                    if (result.data && result.data.status) {\n                        switch (result.data.status) {\n                            case \"success\": {\n                                resolve(result);\n                                break;\n                            }\n                            case \"cancel\": {\n                                reject(result);\n                                break;\n                            }\n                            default:\n                            case \"error\": {\n                                reject(result);\n                                break;\n                            }\n                        }\n                    }\n                    window.removeEventListener(\"message\", onMessageReceived);\n                }\n            });\n        }\n        var form = document.createElement(\"form\");\n        form.action = this._walletEndpoint || endpoints.epayZero.testClient;\n        form.method = \"GET\";\n        form.target = \"_self\";\n        for (var key in this.data) {\n            if (this.data.hasOwnProperty(key)) {\n                var input = document.createElement(\"input\");\n                input.type = \"hidden\";\n                input.name = key;\n                input.value = this.data[key];\n                form.appendChild(input);\n            }\n        }\n        document.body.appendChild(form);\n        form.submit();\n        return new Promise(function (resolve, reject) { return null; });\n    };\n    TestRequest.prototype.showBackdrop = function () {\n        var _this = this;\n        if (!this._backdrop) {\n            this._backdrop = document.createElement(\"div\");\n            this._backdrop.style.position = \"fixed\";\n            this._backdrop.style.zIndex = \"9999\";\n            this._backdrop.style.background = \"rgba(0, 0, 0, 0.48)\";\n            this._backdrop.style.width = \"100%\";\n            this._backdrop.style.height = \"100%\";\n            this._backdrop.style.top = \"0\";\n            this._backdrop.style.left = \"0\";\n            this._backdrop.style.right = \"0\";\n            this._backdrop.style.bottom = \"0\";\n            this._backdrop.style.display = \"none\";\n            this._backdrop.style.opacity = \"0\";\n            this._backdrop.style.transition = \"all 500ms ease-in-out\";\n            document.body.appendChild(this._backdrop);\n        }\n        this._backdrop.style.display = \"block\";\n        setTimeout(function () { return _this._backdrop.style.opacity = \"1\"; }, 1);\n    };\n    TestRequest.prototype.hideBackdrop = function () {\n        var _this = this;\n        if (!this._backdrop)\n            return;\n        this._backdrop.style.opacity = \"0\";\n        setTimeout(function () { return _this._backdrop.style.display = \"none\"; }, 500);\n    };\n    TestRequest = __decorate([\n        request_types_1.WalletRequestType(\"Test\"),\n        __metadata(\"design:paramtypes\", [Object, Object])\n    ], TestRequest);\n    return TestRequest;\n}());\nexports.TestRequest = TestRequest;\n\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar request_types_1 = __webpack_require__(0);\nvar errors_1 = __webpack_require__(2);\nvar VippsRequest = (function () {\n    function VippsRequest(data, options, fetchFn) {\n        this.data = data;\n        this._fetch = fetchFn || fetch.bind(window);\n        if (options) {\n            if (options.preferredWindowState) {\n                this._preferredWindowState = options.preferredWindowState;\n            }\n            if (options.walletEndpoint) {\n                this._walletEndpoint = options.walletEndpoint;\n            }\n            if (options.events) {\n                this._events = options.events;\n            }\n        }\n    }\n    VippsRequest.prototype.initiate = function () {\n        var _a = this.data, url = _a.url, method = _a.method;\n        var events = this._events;\n        var fetch = this._fetch;\n        if (method === \"Redirect\")\n            window.top.location.href = url;\n        function poll(retries) {\n            if (retries === void 0) { retries = 0; }\n            var maximumRetries = 15;\n            if (events)\n                events.emit(\"pollRequestInitiated\", { retries: retries, maximumRetries: maximumRetries });\n            function onPollRequestRejected(error) {\n                if (retries >= maximumRetries)\n                    throw new errors_1.ConnectionError(\"The maximum number of retries has been exceeded.\");\n                return new Promise(function (resolve) {\n                    setTimeout(function () { return resolve(poll(retries + 1)); }, Math.pow(retries, 2) * 100);\n                });\n            }\n            return fetch(url, { headers: { Accept: \"application/json\" } })\n                .then(function (response) { return response.json(); }, function (reason) { return Promise.reject(reason); })\n                .then(function onPollParseFulfilled(response) {\n                if (events)\n                    events.emit(\"pollRequestFulfilled\", response);\n                if (!response || !response.meta)\n                    throw new errors_1.NoResponseError(\"The response was empty.\");\n                if (!response.meta.result)\n                    return onPollRequestRejected();\n                if (response.wait)\n                    return poll();\n                if (!response.authorizeresult) {\n                    var message = response.meta.message.merchant || \"The authorization was declined.\";\n                    throw new errors_1.AuthorizationError(message);\n                }\n                return Promise.resolve({\n                    data: {\n                        authorizeResult: response.authorizeresult,\n                        parameters: response.parameters,\n                        redirectUrl: response.redirecturl,\n                    },\n                    walletName: \"Vipps\",\n                });\n            }, onPollRequestRejected);\n        }\n        return poll();\n    };\n    VippsRequest = __decorate([\n        request_types_1.WalletRequestType(\"Vipps\"),\n        __metadata(\"design:paramtypes\", [Object, Object, Object])\n    ], VippsRequest);\n    return VippsRequest;\n}());\nexports.VippsRequest = VippsRequest;\n\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar endpoints = __webpack_require__(1);\nvar response_transformers_1 = __webpack_require__(3);\nvar WalletService = (function () {\n    function WalletService(options, fetchFn, getWalletResponseTransformerFn) {\n        this._endpoint = endpoints.epayZero.walletApi;\n        this._defaultHeaders = {\n            Accept: \"application/json, text/plain, */*\",\n            \"X-EPay-System\": this.xEpaySystemHeader()\n        };\n        this._fetch = null;\n        this._getWalletResponseTransformer = null;\n        this._fetch = fetchFn || fetch.bind(window);\n        this._getWalletResponseTransformer = getWalletResponseTransformerFn || response_transformers_1.default;\n        if (options) {\n            if (options.endpoint)\n                this._endpoint = options.endpoint;\n            if (options.defaultHeaders)\n                this._defaultHeaders = options.defaultHeaders;\n        }\n    }\n    WalletService.prototype.getSession = function (sessionId) {\n        var _this = this;\n        var promise = this._fetch(this._endpoint + \"/sessions/\" + sessionId, {\n            headers: this._defaultHeaders,\n        })\n            .then(function (response) { return response.json(); })\n            .then(function (jsonResponse) {\n            var transformer = _this._getWalletResponseTransformer(jsonResponse.session.walletname);\n            if (transformer) {\n                return transformer.transform(jsonResponse);\n            }\n            return jsonResponse;\n        });\n        return promise;\n    };\n    WalletService.prototype.xEpaySystemHeader = function () {\n        var packageJson = __webpack_require__(17);\n        return \"WalletSDK/\" + packageJson.version;\n    };\n    return WalletService;\n}());\nexports.default = WalletService;\n\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports) {\n\nvar g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports) {\n\nmodule.exports = {\"name\":\"@bambora/wallet\",\"version\":\"1.3.1\",\"description\":\"Bambora Online JavaScript API for Wallet transactions\",\"main\":\"dist/index.js\",\"types\":\"dist/src/index.d.ts\",\"scripts\":{\"test\":\"mocha --require ts-node/register ./test/**/*.ts\",\"clean\":\"rimraf ./dist\",\"start\":\"npm run clean && webpack-dev-server --hot\",\"dev-build\":\"npm run clean && webpack -d\",\"build\":\"npm run clean && npm install && webpack -p\"},\"repository\":{\"type\":\"git\",\"url\":\"git+https://github.com/bambora/wallet.git\"},\"author\":\"Bambora Online A/S <integrationonline@bambora.com> (https://bambora.com)\",\"license\":\"MIT\",\"bugs\":{\"url\":\"https://github.com/bambora/wallet/issues\"},\"homepage\":\"https://github.com/bambora/wallet#readme\",\"dependencies\":{\"es6-promise\":\"4.0.5\",\"eventemitter3\":\"2.0.2\",\"querystringify\":\"2.1.1\",\"whatwg-fetch\":\"2.0.3\"},\"devDependencies\":{\"@types/chai\":\"3.4.35\",\"@types/chai-as-promised\":\"0.0.30\",\"@types/fetch-mock\":\"5.8.1\",\"@types/mocha\":\"2.2.40\",\"@types/query-string\":\"3.0.31\",\"@types/sinon\":\"1.16.36\",\"@types/tapable\":\"1.0.4\",\"@types/webpack\":\"4.4.13\",\"babel\":\"6.5.2\",\"chai\":\"3.5.0\",\"chai-as-promised\":\"6.0.0\",\"fetch-mock\":\"5.9.4\",\"mocha\":\"6.2.0\",\"rimraf\":\"2.5.4\",\"sinon\":\"2.0.0\",\"ts-loader\":\"2.3.7\",\"ts-node\":\"3.3.0\",\"tslint\":\"4.5.1\",\"typescript\":\"2.5.3\",\"webpack\":\"2.2.1\",\"webpack-dev-server\":\"2.2.1\"}}\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports) {\n\n/* (ignored) */\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar promise = __webpack_require__(4);\npromise.polyfill();\n__webpack_require__(6);\nvar wallet_1 = __webpack_require__(5);\nvar errors = __webpack_require__(2);\nexports.errors = errors;\nif (window) {\n    window.Bambora = window.Bambora || {};\n    window.Bambora.Wallet = window.Bambora.Wallet || wallet_1.default;\n    window.Bambora.WalletErrors = window.Bambora.WalletErrors || errors;\n}\nexports.default = wallet_1.default;\n\n\n/***/ })\n/******/ ]);\n});\n\n\n// WEBPACK FOOTER //\n// index.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// identity function for calling harmony imports with the correct context\n \t__webpack_require__.i = function(value) { return value; };\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 19);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap b385c1e7af92f8852e66","import { IWalletRequestData, IGenericWalletOptions, IWalletRequest } from \"./wallet\";\r\n\r\nexport interface IWalletRequestConstructable {\r\n    new(data: IWalletRequestData, options?: IGenericWalletOptions): IWalletRequest;\r\n}\r\n\r\nexport const walletRequestTypes = {};\r\n\r\nexport default function getWalletRequestType(walletName: string): IWalletRequestConstructable {\r\n    if (typeof walletName !== \"string\" || !walletName.length)\r\n        throw new TypeError(\"A wallet name must be supplied!\");\r\n\r\n    walletName = walletName.toLowerCase();\r\n\r\n    if (walletRequestTypes[walletName])\r\n        return walletRequestTypes[walletName];\r\n\r\n    throw new ReferenceError(`The wallet type \"${walletName}\" could not be found.`);\r\n}\r\n\r\n// Decorator\r\nexport function WalletRequestType(walletName: string) {\r\n    if (typeof walletName !== \"string\" || !walletName.length)\r\n        throw new TypeError(\"A wallet name must be supplied!\");\r\n\r\n    walletName = walletName.toLowerCase();\r\n\r\n    return (walletRequestConstructable: IWalletRequestConstructable) => {\r\n        walletRequestTypes[walletName] = walletRequestConstructable;\r\n    };\r\n}\r\n\r\n// Get the clients\r\nimport * as clients from \"./clients\";\r\nclients; // tslint:disable-line\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/request-types.ts","export const masterPass = {\r\n    productionClientApi : \"https://static.masterpass.com/dyn/js/switch/integration/MasterPass.client.js\",\r\n    sandboxClientApi    : \"https://sandbox.static.masterpass.com/dyn/js/switch/integration/MasterPass.client.js\",\r\n};\r\n\r\nexport const mobilePay = {\r\n    productionClient: \"https://public.mobilepay.dk/p2o/router/address/router.aspx\",\r\n};\r\n\r\nexport const epayZero = {\r\n    testClient : \"http://localhost:1337\", // TODO: get it hosted\r\n    walletApi  : \"https://wallet-v1.api-eu.bambora.com\",\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/endpoints.ts","// polyfill for setPrototypeOf\r\nObject.setPrototypeOf = Object.setPrototypeOf || ((obj, proto) => {\r\n  obj.__proto__ = proto;\r\n  return obj;\r\n});\r\n\r\nexport class ConnectionError extends Error {\r\n    constructor(message?: string) {\r\n        super(message); // 'Error' breaks prototype chain here\r\n        Object.setPrototypeOf(this, new.target.prototype); /* tslint:disable-line */// restore prototype chain\r\n    }\r\n};\r\n\r\nexport class NoResponseError extends Error {\r\n    constructor(message?: string) {\r\n        super(message);\r\n        Object.setPrototypeOf(this, new.target.prototype); // tslint:disable-line\r\n    }\r\n};\r\n\r\nexport class AuthorizationError extends Error {\r\n    constructor(message?: string) {\r\n        super(message);\r\n        Object.setPrototypeOf(this, new.target.prototype); // tslint:disable-line\r\n    }\r\n};\r\n\r\n// tslint:disable\r\ndeclare global {\r\n    interface ObjectConstructor {\r\n        setPrototypeOf: any;\r\n    }\r\n}\r\n// tslint:enable\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/errors.ts","import { IWalletSessionResponse, IValidWalletSessionResponse } from \"./wallet-service\";\r\n\r\nexport interface IWalletResponseTransformerConstructable {\r\n    new(): IWalletResponseTransformer;\r\n}\r\n\r\nexport interface IWalletResponseTransformer {\r\n    transform(response: IWalletSessionResponse): IValidWalletSessionResponse;\r\n}\r\n\r\nexport const walletResponseTransformers = {};\r\n\r\nexport default function getWalletResponseTransformer(walletName: string): IWalletResponseTransformer {\r\n    if (typeof walletName !== \"string\" || !walletName.length)\r\n        throw new TypeError(\"A wallet name must be supplied!\");\r\n\r\n    walletName = walletName.toLowerCase();\r\n\r\n    if (walletResponseTransformers[walletName])\r\n        return new walletResponseTransformers[walletName]();\r\n\r\n    // Otherwise just do nothing\r\n    return null;\r\n}\r\n\r\n// Decorator\r\nexport function WalletResponseTransformer(walletName: string) {\r\n    if (typeof walletName !== \"string\" || !walletName.length)\r\n        throw new TypeError(\"A wallet name must be supplied!\");\r\n\r\n    walletName = walletName.toLowerCase();\r\n\r\n    return (walletTransformerConstructable: IWalletResponseTransformerConstructable) => {\r\n        walletResponseTransformers[walletName] = walletTransformerConstructable;\r\n    };\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/response-transformers.ts","/*!\n * @overview es6-promise - a tiny implementation of Promises/A+.\n * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)\n * @license   Licensed under MIT license\n *            See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE\n * @version   4.0.5\n */\n\n(function (global, factory) {\n    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n    typeof define === 'function' && define.amd ? define(factory) :\n    (global.ES6Promise = factory());\n}(this, (function () { 'use strict';\n\nfunction objectOrFunction(x) {\n  return typeof x === 'function' || typeof x === 'object' && x !== null;\n}\n\nfunction isFunction(x) {\n  return typeof x === 'function';\n}\n\nvar _isArray = undefined;\nif (!Array.isArray) {\n  _isArray = function (x) {\n    return Object.prototype.toString.call(x) === '[object Array]';\n  };\n} else {\n  _isArray = Array.isArray;\n}\n\nvar isArray = _isArray;\n\nvar len = 0;\nvar vertxNext = undefined;\nvar customSchedulerFn = undefined;\n\nvar asap = function asap(callback, arg) {\n  queue[len] = callback;\n  queue[len + 1] = arg;\n  len += 2;\n  if (len === 2) {\n    // If len is 2, that means that we need to schedule an async flush.\n    // If additional callbacks are queued before the queue is flushed, they\n    // will be processed by this flush that we are scheduling.\n    if (customSchedulerFn) {\n      customSchedulerFn(flush);\n    } else {\n      scheduleFlush();\n    }\n  }\n};\n\nfunction setScheduler(scheduleFn) {\n  customSchedulerFn = scheduleFn;\n}\n\nfunction setAsap(asapFn) {\n  asap = asapFn;\n}\n\nvar browserWindow = typeof window !== 'undefined' ? window : undefined;\nvar browserGlobal = browserWindow || {};\nvar BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;\nvar isNode = typeof self === 'undefined' && typeof process !== 'undefined' && ({}).toString.call(process) === '[object process]';\n\n// test for web worker but not in IE10\nvar isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';\n\n// node\nfunction useNextTick() {\n  // node version 0.10.x displays a deprecation warning when nextTick is used recursively\n  // see https://github.com/cujojs/when/issues/410 for details\n  return function () {\n    return process.nextTick(flush);\n  };\n}\n\n// vertx\nfunction useVertxTimer() {\n  if (typeof vertxNext !== 'undefined') {\n    return function () {\n      vertxNext(flush);\n    };\n  }\n\n  return useSetTimeout();\n}\n\nfunction useMutationObserver() {\n  var iterations = 0;\n  var observer = new BrowserMutationObserver(flush);\n  var node = document.createTextNode('');\n  observer.observe(node, { characterData: true });\n\n  return function () {\n    node.data = iterations = ++iterations % 2;\n  };\n}\n\n// web worker\nfunction useMessageChannel() {\n  var channel = new MessageChannel();\n  channel.port1.onmessage = flush;\n  return function () {\n    return channel.port2.postMessage(0);\n  };\n}\n\nfunction useSetTimeout() {\n  // Store setTimeout reference so es6-promise will be unaffected by\n  // other code modifying setTimeout (like sinon.useFakeTimers())\n  var globalSetTimeout = setTimeout;\n  return function () {\n    return globalSetTimeout(flush, 1);\n  };\n}\n\nvar queue = new Array(1000);\nfunction flush() {\n  for (var i = 0; i < len; i += 2) {\n    var callback = queue[i];\n    var arg = queue[i + 1];\n\n    callback(arg);\n\n    queue[i] = undefined;\n    queue[i + 1] = undefined;\n  }\n\n  len = 0;\n}\n\nfunction attemptVertx() {\n  try {\n    var r = require;\n    var vertx = r('vertx');\n    vertxNext = vertx.runOnLoop || vertx.runOnContext;\n    return useVertxTimer();\n  } catch (e) {\n    return useSetTimeout();\n  }\n}\n\nvar scheduleFlush = undefined;\n// Decide what async method to use to triggering processing of queued callbacks:\nif (isNode) {\n  scheduleFlush = useNextTick();\n} else if (BrowserMutationObserver) {\n  scheduleFlush = useMutationObserver();\n} else if (isWorker) {\n  scheduleFlush = useMessageChannel();\n} else if (browserWindow === undefined && typeof require === 'function') {\n  scheduleFlush = attemptVertx();\n} else {\n  scheduleFlush = useSetTimeout();\n}\n\nfunction then(onFulfillment, onRejection) {\n  var _arguments = arguments;\n\n  var parent = this;\n\n  var child = new this.constructor(noop);\n\n  if (child[PROMISE_ID] === undefined) {\n    makePromise(child);\n  }\n\n  var _state = parent._state;\n\n  if (_state) {\n    (function () {\n      var callback = _arguments[_state - 1];\n      asap(function () {\n        return invokeCallback(_state, child, callback, parent._result);\n      });\n    })();\n  } else {\n    subscribe(parent, child, onFulfillment, onRejection);\n  }\n\n  return child;\n}\n\n/**\n  `Promise.resolve` returns a promise that will become resolved with the\n  passed `value`. It is shorthand for the following:\n\n  ```javascript\n  let promise = new Promise(function(resolve, reject){\n    resolve(1);\n  });\n\n  promise.then(function(value){\n    // value === 1\n  });\n  ```\n\n  Instead of writing the above, your code now simply becomes the following:\n\n  ```javascript\n  let promise = Promise.resolve(1);\n\n  promise.then(function(value){\n    // value === 1\n  });\n  ```\n\n  @method resolve\n  @static\n  @param {Any} value value that the returned promise will be resolved with\n  Useful for tooling.\n  @return {Promise} a promise that will become fulfilled with the given\n  `value`\n*/\nfunction resolve(object) {\n  /*jshint validthis:true */\n  var Constructor = this;\n\n  if (object && typeof object === 'object' && object.constructor === Constructor) {\n    return object;\n  }\n\n  var promise = new Constructor(noop);\n  _resolve(promise, object);\n  return promise;\n}\n\nvar PROMISE_ID = Math.random().toString(36).substring(16);\n\nfunction noop() {}\n\nvar PENDING = void 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\n\nvar GET_THEN_ERROR = new ErrorObject();\n\nfunction selfFulfillment() {\n  return new TypeError(\"You cannot resolve a promise with itself\");\n}\n\nfunction cannotReturnOwn() {\n  return new TypeError('A promises callback cannot return that same promise.');\n}\n\nfunction getThen(promise) {\n  try {\n    return promise.then;\n  } catch (error) {\n    GET_THEN_ERROR.error = error;\n    return GET_THEN_ERROR;\n  }\n}\n\nfunction tryThen(then, value, fulfillmentHandler, rejectionHandler) {\n  try {\n    then.call(value, fulfillmentHandler, rejectionHandler);\n  } catch (e) {\n    return e;\n  }\n}\n\nfunction handleForeignThenable(promise, thenable, then) {\n  asap(function (promise) {\n    var sealed = false;\n    var error = tryThen(then, thenable, function (value) {\n      if (sealed) {\n        return;\n      }\n      sealed = true;\n      if (thenable !== value) {\n        _resolve(promise, value);\n      } else {\n        fulfill(promise, value);\n      }\n    }, function (reason) {\n      if (sealed) {\n        return;\n      }\n      sealed = true;\n\n      _reject(promise, reason);\n    }, 'Settle: ' + (promise._label || ' unknown promise'));\n\n    if (!sealed && error) {\n      sealed = true;\n      _reject(promise, error);\n    }\n  }, promise);\n}\n\nfunction handleOwnThenable(promise, thenable) {\n  if (thenable._state === FULFILLED) {\n    fulfill(promise, thenable._result);\n  } else if (thenable._state === REJECTED) {\n    _reject(promise, thenable._result);\n  } else {\n    subscribe(thenable, undefined, function (value) {\n      return _resolve(promise, value);\n    }, function (reason) {\n      return _reject(promise, reason);\n    });\n  }\n}\n\nfunction handleMaybeThenable(promise, maybeThenable, then$$) {\n  if (maybeThenable.constructor === promise.constructor && then$$ === then && maybeThenable.constructor.resolve === resolve) {\n    handleOwnThenable(promise, maybeThenable);\n  } else {\n    if (then$$ === GET_THEN_ERROR) {\n      _reject(promise, GET_THEN_ERROR.error);\n    } else if (then$$ === undefined) {\n      fulfill(promise, maybeThenable);\n    } else if (isFunction(then$$)) {\n      handleForeignThenable(promise, maybeThenable, then$$);\n    } else {\n      fulfill(promise, maybeThenable);\n    }\n  }\n}\n\nfunction _resolve(promise, value) {\n  if (promise === value) {\n    _reject(promise, selfFulfillment());\n  } else if (objectOrFunction(value)) {\n    handleMaybeThenable(promise, value, getThen(value));\n  } else {\n    fulfill(promise, value);\n  }\n}\n\nfunction publishRejection(promise) {\n  if (promise._onerror) {\n    promise._onerror(promise._result);\n  }\n\n  publish(promise);\n}\n\nfunction fulfill(promise, value) {\n  if (promise._state !== PENDING) {\n    return;\n  }\n\n  promise._result = value;\n  promise._state = FULFILLED;\n\n  if (promise._subscribers.length !== 0) {\n    asap(publish, promise);\n  }\n}\n\nfunction _reject(promise, reason) {\n  if (promise._state !== PENDING) {\n    return;\n  }\n  promise._state = REJECTED;\n  promise._result = reason;\n\n  asap(publishRejection, promise);\n}\n\nfunction subscribe(parent, child, onFulfillment, onRejection) {\n  var _subscribers = parent._subscribers;\n  var length = _subscribers.length;\n\n  parent._onerror = null;\n\n  _subscribers[length] = child;\n  _subscribers[length + FULFILLED] = onFulfillment;\n  _subscribers[length + REJECTED] = onRejection;\n\n  if (length === 0 && parent._state) {\n    asap(publish, parent);\n  }\n}\n\nfunction publish(promise) {\n  var subscribers = promise._subscribers;\n  var settled = promise._state;\n\n  if (subscribers.length === 0) {\n    return;\n  }\n\n  var child = undefined,\n      callback = undefined,\n      detail = promise._result;\n\n  for (var i = 0; i < subscribers.length; i += 3) {\n    child = subscribers[i];\n    callback = subscribers[i + settled];\n\n    if (child) {\n      invokeCallback(settled, child, callback, detail);\n    } else {\n      callback(detail);\n    }\n  }\n\n  promise._subscribers.length = 0;\n}\n\nfunction ErrorObject() {\n  this.error = null;\n}\n\nvar TRY_CATCH_ERROR = new ErrorObject();\n\nfunction tryCatch(callback, detail) {\n  try {\n    return callback(detail);\n  } catch (e) {\n    TRY_CATCH_ERROR.error = e;\n    return TRY_CATCH_ERROR;\n  }\n}\n\nfunction invokeCallback(settled, promise, callback, detail) {\n  var hasCallback = isFunction(callback),\n      value = undefined,\n      error = undefined,\n      succeeded = undefined,\n      failed = undefined;\n\n  if (hasCallback) {\n    value = tryCatch(callback, detail);\n\n    if (value === TRY_CATCH_ERROR) {\n      failed = true;\n      error = value.error;\n      value = null;\n    } else {\n      succeeded = true;\n    }\n\n    if (promise === value) {\n      _reject(promise, cannotReturnOwn());\n      return;\n    }\n  } else {\n    value = detail;\n    succeeded = true;\n  }\n\n  if (promise._state !== PENDING) {\n    // noop\n  } else if (hasCallback && succeeded) {\n      _resolve(promise, value);\n    } else if (failed) {\n      _reject(promise, error);\n    } else if (settled === FULFILLED) {\n      fulfill(promise, value);\n    } else if (settled === REJECTED) {\n      _reject(promise, value);\n    }\n}\n\nfunction initializePromise(promise, resolver) {\n  try {\n    resolver(function resolvePromise(value) {\n      _resolve(promise, value);\n    }, function rejectPromise(reason) {\n      _reject(promise, reason);\n    });\n  } catch (e) {\n    _reject(promise, e);\n  }\n}\n\nvar id = 0;\nfunction nextId() {\n  return id++;\n}\n\nfunction makePromise(promise) {\n  promise[PROMISE_ID] = id++;\n  promise._state = undefined;\n  promise._result = undefined;\n  promise._subscribers = [];\n}\n\nfunction Enumerator(Constructor, input) {\n  this._instanceConstructor = Constructor;\n  this.promise = new Constructor(noop);\n\n  if (!this.promise[PROMISE_ID]) {\n    makePromise(this.promise);\n  }\n\n  if (isArray(input)) {\n    this._input = input;\n    this.length = input.length;\n    this._remaining = input.length;\n\n    this._result = new Array(this.length);\n\n    if (this.length === 0) {\n      fulfill(this.promise, this._result);\n    } else {\n      this.length = this.length || 0;\n      this._enumerate();\n      if (this._remaining === 0) {\n        fulfill(this.promise, this._result);\n      }\n    }\n  } else {\n    _reject(this.promise, validationError());\n  }\n}\n\nfunction validationError() {\n  return new Error('Array Methods must be provided an Array');\n};\n\nEnumerator.prototype._enumerate = function () {\n  var length = this.length;\n  var _input = this._input;\n\n  for (var i = 0; this._state === PENDING && i < length; i++) {\n    this._eachEntry(_input[i], i);\n  }\n};\n\nEnumerator.prototype._eachEntry = function (entry, i) {\n  var c = this._instanceConstructor;\n  var resolve$$ = c.resolve;\n\n  if (resolve$$ === resolve) {\n    var _then = getThen(entry);\n\n    if (_then === then && entry._state !== PENDING) {\n      this._settledAt(entry._state, i, entry._result);\n    } else if (typeof _then !== 'function') {\n      this._remaining--;\n      this._result[i] = entry;\n    } else if (c === Promise) {\n      var promise = new c(noop);\n      handleMaybeThenable(promise, entry, _then);\n      this._willSettleAt(promise, i);\n    } else {\n      this._willSettleAt(new c(function (resolve$$) {\n        return resolve$$(entry);\n      }), i);\n    }\n  } else {\n    this._willSettleAt(resolve$$(entry), i);\n  }\n};\n\nEnumerator.prototype._settledAt = function (state, i, value) {\n  var promise = this.promise;\n\n  if (promise._state === PENDING) {\n    this._remaining--;\n\n    if (state === REJECTED) {\n      _reject(promise, value);\n    } else {\n      this._result[i] = value;\n    }\n  }\n\n  if (this._remaining === 0) {\n    fulfill(promise, this._result);\n  }\n};\n\nEnumerator.prototype._willSettleAt = function (promise, i) {\n  var enumerator = this;\n\n  subscribe(promise, undefined, function (value) {\n    return enumerator._settledAt(FULFILLED, i, value);\n  }, function (reason) {\n    return enumerator._settledAt(REJECTED, i, reason);\n  });\n};\n\n/**\n  `Promise.all` accepts an array of promises, and returns a new promise which\n  is fulfilled with an array of fulfillment values for the passed promises, or\n  rejected with the reason of the first passed promise to be rejected. It casts all\n  elements of the passed iterable to promises as it runs this algorithm.\n\n  Example:\n\n  ```javascript\n  let promise1 = resolve(1);\n  let promise2 = resolve(2);\n  let promise3 = resolve(3);\n  let promises = [ promise1, promise2, promise3 ];\n\n  Promise.all(promises).then(function(array){\n    // The array here would be [ 1, 2, 3 ];\n  });\n  ```\n\n  If any of the `promises` given to `all` are rejected, the first promise\n  that is rejected will be given as an argument to the returned promises's\n  rejection handler. For example:\n\n  Example:\n\n  ```javascript\n  let promise1 = resolve(1);\n  let promise2 = reject(new Error(\"2\"));\n  let promise3 = reject(new Error(\"3\"));\n  let promises = [ promise1, promise2, promise3 ];\n\n  Promise.all(promises).then(function(array){\n    // Code here never runs because there are rejected promises!\n  }, function(error) {\n    // error.message === \"2\"\n  });\n  ```\n\n  @method all\n  @static\n  @param {Array} entries array of promises\n  @param {String} label optional string for labeling the promise.\n  Useful for tooling.\n  @return {Promise} promise that is fulfilled when all `promises` have been\n  fulfilled, or rejected if any of them become rejected.\n  @static\n*/\nfunction all(entries) {\n  return new Enumerator(this, entries).promise;\n}\n\n/**\n  `Promise.race` returns a new promise which is settled in the same way as the\n  first passed promise to settle.\n\n  Example:\n\n  ```javascript\n  let promise1 = new Promise(function(resolve, reject){\n    setTimeout(function(){\n      resolve('promise 1');\n    }, 200);\n  });\n\n  let promise2 = new Promise(function(resolve, reject){\n    setTimeout(function(){\n      resolve('promise 2');\n    }, 100);\n  });\n\n  Promise.race([promise1, promise2]).then(function(result){\n    // result === 'promise 2' because it was resolved before promise1\n    // was resolved.\n  });\n  ```\n\n  `Promise.race` is deterministic in that only the state of the first\n  settled promise matters. For example, even if other promises given to the\n  `promises` array argument are resolved, but the first settled promise has\n  become rejected before the other promises became fulfilled, the returned\n  promise will become rejected:\n\n  ```javascript\n  let promise1 = new Promise(function(resolve, reject){\n    setTimeout(function(){\n      resolve('promise 1');\n    }, 200);\n  });\n\n  let promise2 = new Promise(function(resolve, reject){\n    setTimeout(function(){\n      reject(new Error('promise 2'));\n    }, 100);\n  });\n\n  Promise.race([promise1, promise2]).then(function(result){\n    // Code here never runs\n  }, function(reason){\n    // reason.message === 'promise 2' because promise 2 became rejected before\n    // promise 1 became fulfilled\n  });\n  ```\n\n  An example real-world use case is implementing timeouts:\n\n  ```javascript\n  Promise.race([ajax('foo.json'), timeout(5000)])\n  ```\n\n  @method race\n  @static\n  @param {Array} promises array of promises to observe\n  Useful for tooling.\n  @return {Promise} a promise which settles in the same way as the first passed\n  promise to settle.\n*/\nfunction race(entries) {\n  /*jshint validthis:true */\n  var Constructor = this;\n\n  if (!isArray(entries)) {\n    return new Constructor(function (_, reject) {\n      return reject(new TypeError('You must pass an array to race.'));\n    });\n  } else {\n    return new Constructor(function (resolve, reject) {\n      var length = entries.length;\n      for (var i = 0; i < length; i++) {\n        Constructor.resolve(entries[i]).then(resolve, reject);\n      }\n    });\n  }\n}\n\n/**\n  `Promise.reject` returns a promise rejected with the passed `reason`.\n  It is shorthand for the following:\n\n  ```javascript\n  let promise = new Promise(function(resolve, reject){\n    reject(new Error('WHOOPS'));\n  });\n\n  promise.then(function(value){\n    // Code here doesn't run because the promise is rejected!\n  }, function(reason){\n    // reason.message === 'WHOOPS'\n  });\n  ```\n\n  Instead of writing the above, your code now simply becomes the following:\n\n  ```javascript\n  let promise = Promise.reject(new Error('WHOOPS'));\n\n  promise.then(function(value){\n    // Code here doesn't run because the promise is rejected!\n  }, function(reason){\n    // reason.message === 'WHOOPS'\n  });\n  ```\n\n  @method reject\n  @static\n  @param {Any} reason value that the returned promise will be rejected with.\n  Useful for tooling.\n  @return {Promise} a promise rejected with the given `reason`.\n*/\nfunction reject(reason) {\n  /*jshint validthis:true */\n  var Constructor = this;\n  var promise = new Constructor(noop);\n  _reject(promise, reason);\n  return promise;\n}\n\nfunction needsResolver() {\n  throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\n}\n\nfunction needsNew() {\n  throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\");\n}\n\n/**\n  Promise objects represent the eventual result of an asynchronous operation. The\n  primary way of interacting with a promise is through its `then` method, which\n  registers callbacks to receive either a promise's eventual value or the reason\n  why the promise cannot be fulfilled.\n\n  Terminology\n  -----------\n\n  - `promise` is an object or function with a `then` method whose behavior conforms to this specification.\n  - `thenable` is an object or function that defines a `then` method.\n  - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).\n  - `exception` is a value that is thrown using the throw statement.\n  - `reason` is a value that indicates why a promise was rejected.\n  - `settled` the final resting state of a promise, fulfilled or rejected.\n\n  A promise can be in one of three states: pending, fulfilled, or rejected.\n\n  Promises that are fulfilled have a fulfillment value and are in the fulfilled\n  state.  Promises that are rejected have a rejection reason and are in the\n  rejected state.  A fulfillment value is never a thenable.\n\n  Promises can also be said to *resolve* a value.  If this value is also a\n  promise, then the original promise's settled state will match the value's\n  settled state.  So a promise that *resolves* a promise that rejects will\n  itself reject, and a promise that *resolves* a promise that fulfills will\n  itself fulfill.\n\n\n  Basic Usage:\n  ------------\n\n  ```js\n  let promise = new Promise(function(resolve, reject) {\n    // on success\n    resolve(value);\n\n    // on failure\n    reject(reason);\n  });\n\n  promise.then(function(value) {\n    // on fulfillment\n  }, function(reason) {\n    // on rejection\n  });\n  ```\n\n  Advanced Usage:\n  ---------------\n\n  Promises shine when abstracting away asynchronous interactions such as\n  `XMLHttpRequest`s.\n\n  ```js\n  function getJSON(url) {\n    return new Promise(function(resolve, reject){\n      let xhr = new XMLHttpRequest();\n\n      xhr.open('GET', url);\n      xhr.onreadystatechange = handler;\n      xhr.responseType = 'json';\n      xhr.setRequestHeader('Accept', 'application/json');\n      xhr.send();\n\n      function handler() {\n        if (this.readyState === this.DONE) {\n          if (this.status === 200) {\n            resolve(this.response);\n          } else {\n            reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));\n          }\n        }\n      };\n    });\n  }\n\n  getJSON('/posts.json').then(function(json) {\n    // on fulfillment\n  }, function(reason) {\n    // on rejection\n  });\n  ```\n\n  Unlike callbacks, promises are great composable primitives.\n\n  ```js\n  Promise.all([\n    getJSON('/posts'),\n    getJSON('/comments')\n  ]).then(function(values){\n    values[0] // => postsJSON\n    values[1] // => commentsJSON\n\n    return values;\n  });\n  ```\n\n  @class Promise\n  @param {function} resolver\n  Useful for tooling.\n  @constructor\n*/\nfunction Promise(resolver) {\n  this[PROMISE_ID] = nextId();\n  this._result = this._state = undefined;\n  this._subscribers = [];\n\n  if (noop !== resolver) {\n    typeof resolver !== 'function' && needsResolver();\n    this instanceof Promise ? initializePromise(this, resolver) : needsNew();\n  }\n}\n\nPromise.all = all;\nPromise.race = race;\nPromise.resolve = resolve;\nPromise.reject = reject;\nPromise._setScheduler = setScheduler;\nPromise._setAsap = setAsap;\nPromise._asap = asap;\n\nPromise.prototype = {\n  constructor: Promise,\n\n  /**\n    The primary way of interacting with a promise is through its `then` method,\n    which registers callbacks to receive either a promise's eventual value or the\n    reason why the promise cannot be fulfilled.\n  \n    ```js\n    findUser().then(function(user){\n      // user is available\n    }, function(reason){\n      // user is unavailable, and you are given the reason why\n    });\n    ```\n  \n    Chaining\n    --------\n  \n    The return value of `then` is itself a promise.  This second, 'downstream'\n    promise is resolved with the return value of the first promise's fulfillment\n    or rejection handler, or rejected if the handler throws an exception.\n  \n    ```js\n    findUser().then(function (user) {\n      return user.name;\n    }, function (reason) {\n      return 'default name';\n    }).then(function (userName) {\n      // If `findUser` fulfilled, `userName` will be the user's name, otherwise it\n      // will be `'default name'`\n    });\n  \n    findUser().then(function (user) {\n      throw new Error('Found user, but still unhappy');\n    }, function (reason) {\n      throw new Error('`findUser` rejected and we're unhappy');\n    }).then(function (value) {\n      // never reached\n    }, function (reason) {\n      // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.\n      // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.\n    });\n    ```\n    If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.\n  \n    ```js\n    findUser().then(function (user) {\n      throw new PedagogicalException('Upstream error');\n    }).then(function (value) {\n      // never reached\n    }).then(function (value) {\n      // never reached\n    }, function (reason) {\n      // The `PedgagocialException` is propagated all the way down to here\n    });\n    ```\n  \n    Assimilation\n    ------------\n  \n    Sometimes the value you want to propagate to a downstream promise can only be\n    retrieved asynchronously. This can be achieved by returning a promise in the\n    fulfillment or rejection handler. The downstream promise will then be pending\n    until the returned promise is settled. This is called *assimilation*.\n  \n    ```js\n    findUser().then(function (user) {\n      return findCommentsByAuthor(user);\n    }).then(function (comments) {\n      // The user's comments are now available\n    });\n    ```\n  \n    If the assimliated promise rejects, then the downstream promise will also reject.\n  \n    ```js\n    findUser().then(function (user) {\n      return findCommentsByAuthor(user);\n    }).then(function (comments) {\n      // If `findCommentsByAuthor` fulfills, we'll have the value here\n    }, function (reason) {\n      // If `findCommentsByAuthor` rejects, we'll have the reason here\n    });\n    ```\n  \n    Simple Example\n    --------------\n  \n    Synchronous Example\n  \n    ```javascript\n    let result;\n  \n    try {\n      result = findResult();\n      // success\n    } catch(reason) {\n      // failure\n    }\n    ```\n  \n    Errback Example\n  \n    ```js\n    findResult(function(result, err){\n      if (err) {\n        // failure\n      } else {\n        // success\n      }\n    });\n    ```\n  \n    Promise Example;\n  \n    ```javascript\n    findResult().then(function(result){\n      // success\n    }, function(reason){\n      // failure\n    });\n    ```\n  \n    Advanced Example\n    --------------\n  \n    Synchronous Example\n  \n    ```javascript\n    let author, books;\n  \n    try {\n      author = findAuthor();\n      books  = findBooksByAuthor(author);\n      // success\n    } catch(reason) {\n      // failure\n    }\n    ```\n  \n    Errback Example\n  \n    ```js\n  \n    function foundBooks(books) {\n  \n    }\n  \n    function failure(reason) {\n  \n    }\n  \n    findAuthor(function(author, err){\n      if (err) {\n        failure(err);\n        // failure\n      } else {\n        try {\n          findBoooksByAuthor(author, function(books, err) {\n            if (err) {\n              failure(err);\n            } else {\n              try {\n                foundBooks(books);\n              } catch(reason) {\n                failure(reason);\n              }\n            }\n          });\n        } catch(error) {\n          failure(err);\n        }\n        // success\n      }\n    });\n    ```\n  \n    Promise Example;\n  \n    ```javascript\n    findAuthor().\n      then(findBooksByAuthor).\n      then(function(books){\n        // found books\n    }).catch(function(reason){\n      // something went wrong\n    });\n    ```\n  \n    @method then\n    @param {Function} onFulfilled\n    @param {Function} onRejected\n    Useful for tooling.\n    @return {Promise}\n  */\n  then: then,\n\n  /**\n    `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same\n    as the catch block of a try/catch statement.\n  \n    ```js\n    function findAuthor(){\n      throw new Error('couldn't find that author');\n    }\n  \n    // synchronous\n    try {\n      findAuthor();\n    } catch(reason) {\n      // something went wrong\n    }\n  \n    // async with promises\n    findAuthor().catch(function(reason){\n      // something went wrong\n    });\n    ```\n  \n    @method catch\n    @param {Function} onRejection\n    Useful for tooling.\n    @return {Promise}\n  */\n  'catch': function _catch(onRejection) {\n    return this.then(null, onRejection);\n  }\n};\n\nfunction polyfill() {\n    var local = undefined;\n\n    if (typeof global !== 'undefined') {\n        local = global;\n    } else if (typeof self !== 'undefined') {\n        local = self;\n    } else {\n        try {\n            local = Function('return this')();\n        } catch (e) {\n            throw new Error('polyfill failed because global object is unavailable in this environment');\n        }\n    }\n\n    var P = local.Promise;\n\n    if (P) {\n        var promiseToString = null;\n        try {\n            promiseToString = Object.prototype.toString.call(P.resolve());\n        } catch (e) {\n            // silently ignored\n        }\n\n        if (promiseToString === '[object Promise]' && !P.cast) {\n            return;\n        }\n    }\n\n    local.Promise = Promise;\n}\n\n// Strange compat..\nPromise.polyfill = polyfill;\nPromise.Promise = Promise;\n\nreturn Promise;\n\n})));\n//# sourceMappingURL=es6-promise.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/es6-promise/dist/es6-promise.js\n// module id = 4\n// module chunks = 0","import { EventEmitter }      from \"eventemitter3\";\r\nimport getWalletRequestType  from \"./request-types\";\r\nimport WalletService, {\r\n    IWalletService,\r\n    IWalletServiceConstructable,\r\n}                            from \"./wallet-service\";\r\n\r\nexport default class Wallet {\r\n    private static getWalletOptions(responseData: Array<IKeyValueType<any>>): IWalletRequestData {\r\n        const walletOptions = responseData.reduce(\r\n            (previous, current) => {\r\n                previous[current.key] = current.value;\r\n                return previous;\r\n            },\r\n            {} as IWalletRequestData,\r\n        );\r\n\r\n        return walletOptions;\r\n    }\r\n\r\n    public events = new EventEmitter();\r\n\r\n    private _walletService        : IWalletServiceConstructable = null;\r\n    private _getWalletRequestType : typeof getWalletRequestType = null;\r\n\r\n    constructor(\r\n        walletServiceConstructable? : IWalletServiceConstructable,\r\n        getWalletRequestTypeFn?     : typeof getWalletRequestType,\r\n    ) {\r\n        this._walletService        = walletServiceConstructable || WalletService;\r\n        this._getWalletRequestType = getWalletRequestTypeFn || getWalletRequestType;\r\n    }\r\n\r\n    public open(sessionId: string, options: IGenericWalletOptions = {}): Promise<IWalletResult> {\r\n        options.preferredWindowState = options.preferredWindowState || \"overlay\";\r\n        options.events               = this.events;\r\n\r\n        const walletService        = new this._walletService(options);\r\n        const getWalletRequestType = this._getWalletRequestType;\r\n\r\n        const sessionPromise = walletService.getSession(sessionId)\r\n            .then(\r\n                function onGetSessionFulfilled(response) {\r\n                    const walletRequestConstructable = getWalletRequestType(response.session.walletname);\r\n                    const walletOptions              = Wallet.getWalletOptions(response.session.data);\r\n                    const walletRequest              = new walletRequestConstructable(walletOptions, options);\r\n\r\n                    return walletRequest.initiate();\r\n                },\r\n            );\r\n\r\n        return sessionPromise;\r\n    }\r\n}\r\n\r\n// Generic wallet\r\nexport type IWalletName = \"MasterPass\" | \"MobilePay\" | \"Test\" | \"Vipps\";\r\n\r\nexport type IPreferredWindowState = \"fullscreen\" | \"overlay\";\r\n\r\nexport interface IGenericWalletOptions {\r\n    preferredWindowState? : IPreferredWindowState; // default : \"overlay\"\r\n    endpoint?             : string;\t\t\t       // default : bambora default API endpoint\r\n    defaultHeaders?       : any;                   // default : undefined\r\n    events?               : EventEmitter;          // default : undefined\r\n    pollTimeout?          : number;                // default : 120 (seconds)\r\n    walletEndpoint?       : string;                // default : wallet endpoint default\r\n    target?               : string;                // default : \"_self\"\r\n}\r\n\r\nexport interface IKeyValueType<T> {\r\n    key   : string;\r\n    value : T;\r\n    type? : \"string\" | \"array\";\r\n}\r\n\r\n// Request\r\nexport interface IWalletRequestData { }\r\n\r\nexport interface IWalletRequest {\r\n    /** Initiates the wallet request */\r\n    initiate(): Promise<IWalletResult>;\r\n}\r\n\r\nexport interface IWalletResult {\r\n    walletName : IWalletName;\r\n    data       : any;\r\n}\r\n\r\nexport interface IMetaResponse {\r\n    meta: {\r\n        result: boolean;\r\n        message: {\r\n            enduser  : string;\r\n            merchant : string;\r\n        };\r\n        action: {\r\n            source : string;\r\n            code   : string;\r\n            type   : string;\r\n        };\r\n        paging: {\r\n            lastevaluatedkey : string;\r\n            itemsreturned    : number;\r\n        };\r\n    };\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/wallet.ts","module.exports = __WEBPACK_EXTERNAL_MODULE_6__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external {\"root\":\"whatwg-fetch\",\"commonjs2\":\"whatwg-fetch\",\"commonjs\":\"whatwg-fetch\",\"amd\":\"whatwg-fetch\"}\n// module id = 6\n// module chunks = 0","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n  , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @api private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n  Events.prototype = Object.create(null);\n\n  //\n  // This hack is needed because the `__proto__` property is still inherited in\n  // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n  //\n  if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {Mixed} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @api private\n */\nfunction EE(fn, context, once) {\n  this.fn = fn;\n  this.context = context;\n  this.once = once || false;\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @api public\n */\nfunction EventEmitter() {\n  this._events = new Events();\n  this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @api public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n  var names = []\n    , events\n    , name;\n\n  if (this._eventsCount === 0) return names;\n\n  for (name in (events = this._events)) {\n    if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n  }\n\n  if (Object.getOwnPropertySymbols) {\n    return names.concat(Object.getOwnPropertySymbols(events));\n  }\n\n  return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Boolean} exists Only check if there are listeners.\n * @returns {Array|Boolean}\n * @api public\n */\nEventEmitter.prototype.listeners = function listeners(event, exists) {\n  var evt = prefix ? prefix + event : event\n    , available = this._events[evt];\n\n  if (exists) return !!available;\n  if (!available) return [];\n  if (available.fn) return [available.fn];\n\n  for (var i = 0, l = available.length, ee = new Array(l); i < l; i++) {\n    ee[i] = available[i].fn;\n  }\n\n  return ee;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @api public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n  var evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) return false;\n\n  var listeners = this._events[evt]\n    , len = arguments.length\n    , args\n    , i;\n\n  if (listeners.fn) {\n    if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n    switch (len) {\n      case 1: return listeners.fn.call(listeners.context), true;\n      case 2: return listeners.fn.call(listeners.context, a1), true;\n      case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n      case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n      case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n      case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n    }\n\n    for (i = 1, args = new Array(len -1); i < len; i++) {\n      args[i - 1] = arguments[i];\n    }\n\n    listeners.fn.apply(listeners.context, args);\n  } else {\n    var length = listeners.length\n      , j;\n\n    for (i = 0; i < length; i++) {\n      if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n      switch (len) {\n        case 1: listeners[i].fn.call(listeners[i].context); break;\n        case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n        case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n        case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n        default:\n          if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n            args[j - 1] = arguments[j];\n          }\n\n          listeners[i].fn.apply(listeners[i].context, args);\n      }\n    }\n  }\n\n  return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn The listener function.\n * @param {Mixed} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n  var listener = new EE(fn, context || this)\n    , evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n  else if (!this._events[evt].fn) this._events[evt].push(listener);\n  else this._events[evt] = [this._events[evt], listener];\n\n  return this;\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn The listener function.\n * @param {Mixed} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n  var listener = new EE(fn, context || this, true)\n    , evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n  else if (!this._events[evt].fn) this._events[evt].push(listener);\n  else this._events[evt] = [this._events[evt], listener];\n\n  return this;\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {Mixed} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n  var evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) return this;\n  if (!fn) {\n    if (--this._eventsCount === 0) this._events = new Events();\n    else delete this._events[evt];\n    return this;\n  }\n\n  var listeners = this._events[evt];\n\n  if (listeners.fn) {\n    if (\n         listeners.fn === fn\n      && (!once || listeners.once)\n      && (!context || listeners.context === context)\n    ) {\n      if (--this._eventsCount === 0) this._events = new Events();\n      else delete this._events[evt];\n    }\n  } else {\n    for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n      if (\n           listeners[i].fn !== fn\n        || (once && !listeners[i].once)\n        || (context && listeners[i].context !== context)\n      ) {\n        events.push(listeners[i]);\n      }\n    }\n\n    //\n    // Reset the array, or remove it completely if we have no more listeners.\n    //\n    if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n    else if (--this._eventsCount === 0) this._events = new Events();\n    else delete this._events[evt];\n  }\n\n  return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {String|Symbol} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n  var evt;\n\n  if (event) {\n    evt = prefix ? prefix + event : event;\n    if (this._events[evt]) {\n      if (--this._eventsCount === 0) this._events = new Events();\n      else delete this._events[evt];\n    }\n  } else {\n    this._events = new Events();\n    this._eventsCount = 0;\n  }\n\n  return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// This function doesn't apply anymore.\n//\nEventEmitter.prototype.setMaxListeners = function setMaxListeners() {\n  return this;\n};\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n  module.exports = EventEmitter;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/eventemitter3/index.js\n// module id = 7\n// module chunks = 0","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things.  But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals.  It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n    throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n    throw new Error('clearTimeout has not been defined');\n}\n(function () {\n    try {\n        if (typeof setTimeout === 'function') {\n            cachedSetTimeout = setTimeout;\n        } else {\n            cachedSetTimeout = defaultSetTimout;\n        }\n    } catch (e) {\n        cachedSetTimeout = defaultSetTimout;\n    }\n    try {\n        if (typeof clearTimeout === 'function') {\n            cachedClearTimeout = clearTimeout;\n        } else {\n            cachedClearTimeout = defaultClearTimeout;\n        }\n    } catch (e) {\n        cachedClearTimeout = defaultClearTimeout;\n    }\n} ())\nfunction runTimeout(fun) {\n    if (cachedSetTimeout === setTimeout) {\n        //normal enviroments in sane situations\n        return setTimeout(fun, 0);\n    }\n    // if setTimeout wasn't available but was latter defined\n    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n        cachedSetTimeout = setTimeout;\n        return setTimeout(fun, 0);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedSetTimeout(fun, 0);\n    } catch(e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n            return cachedSetTimeout.call(null, fun, 0);\n        } catch(e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n            return cachedSetTimeout.call(this, fun, 0);\n        }\n    }\n\n\n}\nfunction runClearTimeout(marker) {\n    if (cachedClearTimeout === clearTimeout) {\n        //normal enviroments in sane situations\n        return clearTimeout(marker);\n    }\n    // if clearTimeout wasn't available but was latter defined\n    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n        cachedClearTimeout = clearTimeout;\n        return clearTimeout(marker);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedClearTimeout(marker);\n    } catch (e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally\n            return cachedClearTimeout.call(null, marker);\n        } catch (e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n            // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n            return cachedClearTimeout.call(this, marker);\n        }\n    }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n    if (!draining || !currentQueue) {\n        return;\n    }\n    draining = false;\n    if (currentQueue.length) {\n        queue = currentQueue.concat(queue);\n    } else {\n        queueIndex = -1;\n    }\n    if (queue.length) {\n        drainQueue();\n    }\n}\n\nfunction drainQueue() {\n    if (draining) {\n        return;\n    }\n    var timeout = runTimeout(cleanUpNextTick);\n    draining = true;\n\n    var len = queue.length;\n    while(len) {\n        currentQueue = queue;\n        queue = [];\n        while (++queueIndex < len) {\n            if (currentQueue) {\n                currentQueue[queueIndex].run();\n            }\n        }\n        queueIndex = -1;\n        len = queue.length;\n    }\n    currentQueue = null;\n    draining = false;\n    runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n    var args = new Array(arguments.length - 1);\n    if (arguments.length > 1) {\n        for (var i = 1; i < arguments.length; i++) {\n            args[i - 1] = arguments[i];\n        }\n    }\n    queue.push(new Item(fun, args));\n    if (queue.length === 1 && !draining) {\n        runTimeout(drainQueue);\n    }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n    this.fun = fun;\n    this.array = array;\n}\nItem.prototype.run = function () {\n    this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n    throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n    throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/process/browser.js\n// module id = 8\n// module chunks = 0","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n  , undef;\n\n/**\n * Decode a URI encoded string.\n *\n * @param {String} input The URI encoded string.\n * @returns {String|Null} The decoded string.\n * @api private\n */\nfunction decode(input) {\n  try {\n    return decodeURIComponent(input.replace(/\\+/g, ' '));\n  } catch (e) {\n    return null;\n  }\n}\n\n/**\n * Attempts to encode a given input.\n *\n * @param {String} input The string that needs to be encoded.\n * @returns {String|Null} The encoded string.\n * @api private\n */\nfunction encode(input) {\n  try {\n    return encodeURIComponent(input);\n  } catch (e) {\n    return null;\n  }\n}\n\n/**\n * Simple query string parser.\n *\n * @param {String} query The query string that needs to be parsed.\n * @returns {Object}\n * @api public\n */\nfunction querystring(query) {\n  var parser = /([^=?&]+)=?([^&]*)/g\n    , result = {}\n    , part;\n\n  while (part = parser.exec(query)) {\n    var key = decode(part[1])\n      , value = decode(part[2]);\n\n    //\n    // Prevent overriding of existing properties. This ensures that build-in\n    // methods like `toString` or __proto__ are not overriden by malicious\n    // querystrings.\n    //\n    // In the case if failed decoding, we want to omit the key/value pairs\n    // from the result.\n    //\n    if (key === null || value === null || key in result) continue;\n    result[key] = value;\n  }\n\n  return result;\n}\n\n/**\n * Transform a query string to an object.\n *\n * @param {Object} obj Object that should be transformed.\n * @param {String} prefix Optional prefix.\n * @returns {String}\n * @api public\n */\nfunction querystringify(obj, prefix) {\n  prefix = prefix || '';\n\n  var pairs = []\n    , value\n    , key;\n\n  //\n  // Optionally prefix with a '?' if needed\n  //\n  if ('string' !== typeof prefix) prefix = '?';\n\n  for (key in obj) {\n    if (has.call(obj, key)) {\n      value = obj[key];\n\n      //\n      // Edge cases where we actually want to encode the value to an empty\n      // string instead of the stringified value.\n      //\n      if (!value && (value === null || value === undef || isNaN(value))) {\n        value = '';\n      }\n\n      key = encodeURIComponent(key);\n      value = encodeURIComponent(value);\n\n      //\n      // If we failed to encode the strings, we should bail out as we don't\n      // want to add invalid strings to the query.\n      //\n      if (key === null || value === null) continue;\n      pairs.push(key +'='+ value);\n    }\n  }\n\n  return pairs.length ? prefix + pairs.join('&') : '';\n}\n\n//\n// Expose the module.\n//\nexports.stringify = querystringify;\nexports.parse = querystring;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/querystringify/index.js\n// module id = 9\n// module chunks = 0","export * from \"./masterpass\";\r\nexport * from \"./mobilepay\";\r\nexport * from \"./test\";\r\nexport * from \"./vipps\";\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/clients/index.ts","import * as endpoints                from \"../endpoints\";\r\nimport { WalletRequestType }         from \"../request-types\";\r\nimport { WalletResponseTransformer } from \"../response-transformers\";\r\nimport {\r\n    IWalletRequest,\r\n    IPreferredWindowState,\r\n    IGenericWalletOptions,\r\n    IWalletRequestData,\r\n    IWalletResult,\r\n}                                    from \"../wallet\";\r\nimport {\r\n    IWalletSessionResponse,\r\n    IValidWalletSessionResponse,\r\n}                                    from \"../wallet-service\";\r\n\r\n@WalletRequestType(\"MasterPass\")\r\nexport class MasterPassRequest implements IWalletRequest {\r\n    private _script               : HTMLScriptElement;\r\n    private _preferredWindowState : IPreferredWindowState;\r\n    private _walletEndpoint       : string;\r\n\r\n    constructor(\r\n        private data : IMasterPassRequestData,\r\n        options?     : IGenericWalletOptions,\r\n    ) {\r\n        if (options) {\r\n            if (options.preferredWindowState) {\r\n                this._preferredWindowState = options.preferredWindowState;\r\n            }\r\n\r\n            if (options.walletEndpoint) {\r\n                this._walletEndpoint = options.walletEndpoint;\r\n            }\r\n        }\r\n    }\r\n\r\n    public initiate(): Promise<IWalletResult> {\r\n        const promise = this.loadScriptIfNotAlreadyLoaded()\r\n            .then(() => this.sendRequest());\r\n\r\n        return promise;\r\n    }\r\n\r\n    private sendRequest(): Promise<IWalletResult> {\r\n        const promise = new Promise<IWalletResult>((resolve, reject) => {\r\n            MasterPass.client.checkout({\r\n                allowedCardTypes              : this.data.allowedCardTypes,\r\n                callbackUrl                   : this.data.callbackUrl,\r\n                cancelCallback                : mpLightboxResponse => reject(mpLightboxResponse),\r\n                failureCallback               : mpLightboxResponse => reject(mpLightboxResponse),\r\n                merchantCheckoutId            : this.data.merchantCheckoutId,\r\n                requestToken                  : this.data.requestToken,\r\n                successCallback               : mpLightboxResponse => resolve({\r\n                                                    data: mpLightboxResponse,\r\n                                                    walletName: \"MasterPass\",\r\n                                                }),\r\n                suppressShippingAddressEnable : this.data.suppressShippingAddressEnable as any === \"true\",\r\n                version                       : \"v6\",\r\n            });\r\n        });\r\n\r\n        return promise;\r\n    }\r\n\r\n    private loadScriptIfNotAlreadyLoaded(): Promise<Event> {\r\n        const promise = new Promise<Event>((resolve, reject) => {\r\n            if (this._script) {\r\n                resolve();\r\n            } else {\r\n                this._script = this._script || document.createElement(\"script\");\r\n\r\n                this._script.async = false;\r\n                this._script.src   = this._walletEndpoint || endpoints.masterPass.productionClientApi;\r\n\r\n                this._script.onload  = event => resolve(event);\r\n                this._script.onerror = event => reject(event);\r\n\r\n                document.head.appendChild(this._script);\r\n            }\r\n        });\r\n\r\n        return promise;\r\n    }\r\n}\r\n\r\n@WalletResponseTransformer(\"masterpass\")\r\nexport class MasterPassResponseTransformer {\r\n    public transform(response: IWalletSessionResponse): IValidWalletSessionResponse {\r\n        const validData = response.session.data.map(data => {\r\n            if (data.type === \"array\") {\r\n                return {\r\n                    key: data.key,\r\n                    type: data.type,\r\n                    value: data.value.split(\",\"),\r\n                };\r\n            }\r\n\r\n            return data;\r\n        });\r\n\r\n        const validResponse: IValidWalletSessionResponse = {\r\n            session: {\r\n                data: validData,\r\n                walletname: response.session.walletname,\r\n            },\r\n        };\r\n\r\n        return validResponse;\r\n    }\r\n}\r\n\r\nexport type MasterPassRequestedDataTypes = \"REWARD_PROGRAM\" | \"ADDRESS\" | \"PROFILE\" | \"CARD\";\r\n\r\nexport type MasterPassAllowedCardTypes = \"master\" | \"amex\" | \"diners\" | \"discover\" | \"maestro\" | \"visa\";\r\n\r\nexport interface IMasterPassRequestData extends IWalletRequestData {\r\n    requestPairing?               : boolean;\r\n    requestToken                  : string;\r\n    pairingRequestToken?          : string;\r\n    callbackUrl                   : string;\r\n    failureCallback               : Function;\r\n    cancelCallback                : Function;\r\n    successCallback               : Function;\r\n    merchantCheckoutId            : string;\r\n    requestedDataTypes?           : Array<MasterPassRequestedDataTypes>;\r\n    allowedCardTypes              : Array<MasterPassAllowedCardTypes>;\r\n    version?                      : string;\r\n    suppressShippingAddressEnable : boolean;\r\n}\r\n\r\nexport interface IMasterPassClient {\r\n    addPaymentMethod(options: any)            : void;\r\n    addShippingAddress(options: any)          : void;\r\n    cardSecurity(options: any)                : void;\r\n    checkout(request: IMasterPassRequestData) : void;\r\n    checkoutButton(options: any)              : void;\r\n    connect(options: any)                     : void;\r\n    connectButton(options: any)               : void;\r\n    manage(options: any)                      : void;\r\n    register(options: any)                    : void;\r\n    viewWallets(options: any)                 : void;\r\n}\r\n\r\nexport interface IMasterPass {\r\n    client: IMasterPassClient;\r\n}\r\n\r\ndeclare const MasterPass: IMasterPass;\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/clients/masterpass.ts","import * as endpoints        from \"../endpoints\";\r\nimport { WalletRequestType } from \"../request-types\";\r\nimport {\r\n    IWalletRequest,\r\n    IWalletRequestData,\r\n    IPreferredWindowState,\r\n    IGenericWalletOptions,\r\n    IWalletResult,\r\n}                            from \"../wallet\";\r\n\r\n@WalletRequestType(\"MobilePay\")\r\nexport class MobilePayRequest implements IWalletRequest {\r\n    private _preferredWindowState : IPreferredWindowState;\r\n    private _walletEndpoint       : string;\r\n    private _target               : string = \"_self\";\r\n\r\n    constructor(\r\n        private data : IMobilePayRequestData,\r\n        options?     : IGenericWalletOptions,\r\n    ) {\r\n        if (options) {\r\n            if (options.preferredWindowState) {\r\n                this._preferredWindowState = options.preferredWindowState;\r\n            }\r\n\r\n            if (options.walletEndpoint) {\r\n                this._walletEndpoint = options.walletEndpoint;\r\n            }\r\n\r\n            if (options.target) {\r\n                this._target = options.target;\r\n            }\r\n        }\r\n    }\r\n\r\n    public initiate(): Promise<IWalletResult> {\r\n        //MobilePay V2\r\n        if(this.data.Url) {\r\n            window.location.href = this.data.Url;\r\n        } else {\r\n            //MobilePay V1\r\n            if (!this.data.Version) this.data.Version = \"1\";\r\n            const form = document.createElement(\"form\");\r\n            form.action = this._walletEndpoint || endpoints.mobilePay.productionClient;\r\n            form.method = \"POST\";\r\n            form.target = this._target;\r\n            for (let key in this.data) {\r\n                if (this.data.hasOwnProperty(key)) {\r\n                    let input = document.createElement(\"input\");\r\n\r\n                    input.type  = \"hidden\";\r\n                    input.name  = key;\r\n                    input.value = this.data[key];\r\n\r\n                    form.appendChild(input);\r\n                }\r\n            }\r\n            document.body.appendChild(form);\r\n            form.submit();\r\n        }\r\n\r\n        return new Promise<IWalletResult>((resolve, reject) => {\r\n            // Implement mobile pay in overlay\r\n        });\r\n    }\r\n}\r\n\r\nexport interface IMobilePayClassicRequestData extends IWalletRequestData {\r\n    SessionToken : string;\r\n    PhoneNumber? : string;\r\n    Version?     : string;\r\n    Url?         : string;\r\n}\r\n\r\nexport interface IMobilePayCheckoutRequestData extends IWalletRequestData {\r\n    CheckoutToken : string;\r\n    PhoneNumber?  : string;\r\n    Version?      : string;\r\n    Url?          : string;\r\n}\r\n\r\nexport type IMobilePayRequestData = IMobilePayClassicRequestData | IMobilePayCheckoutRequestData;\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/clients/mobilepay.ts","import * as qs               from \"querystringify\";\r\nimport * as endpoints        from \"../endpoints\";\r\nimport { WalletRequestType } from \"../request-types\";\r\nimport {\r\n    IWalletRequestData,\r\n    IWalletRequest,\r\n    IPreferredWindowState,\r\n    IGenericWalletOptions,\r\n    IWalletResult,\r\n}                            from \"../wallet\";\r\n\r\n@WalletRequestType(\"Test\")\r\nexport class TestRequest implements IWalletRequest {\r\n    private _preferredWindowState : IPreferredWindowState;\r\n    private _walletEndpoint       : string;\r\n    private _backdrop             : HTMLDivElement;\r\n\r\n    constructor(\r\n        private data: ITestRequestData,\r\n        options?: IGenericWalletOptions,\r\n    ) {\r\n        if (options) {\r\n            if (options.preferredWindowState) {\r\n                this._preferredWindowState = options.preferredWindowState;\r\n            }\r\n\r\n            if (options.walletEndpoint) {\r\n                this._walletEndpoint = options.walletEndpoint;\r\n            }\r\n        }\r\n    }\r\n\r\n    public initiate(): Promise<IWalletResult> {\r\n        if (this._preferredWindowState === \"overlay\")  {\r\n            const iframe = document.createElement(\"iframe\");\r\n            const url    = `${this._walletEndpoint || endpoints.epayZero.testClient}/?${qs.stringify(this.data)}`;\r\n\r\n            iframe.setAttribute(\"src\", url);\r\n\r\n            iframe.style.width    = \"100%\";\r\n            iframe.style.height   = \"100%\";\r\n            iframe.style.border   = \"0 none\";\r\n            iframe.style.bottom   = \"0\";\r\n            iframe.style.top      = \"0\";\r\n            iframe.style.left     = \"0\";\r\n            iframe.style.right    = \"0\";\r\n            iframe.style.position = \"fixed\";\r\n            iframe.style.zIndex   = \"10000\";\r\n\r\n            document.body.appendChild(iframe);\r\n\r\n            this.showBackdrop();\r\n\r\n            return new Promise<IWalletResult>((resolve, reject) => {\r\n                window.addEventListener(\"message\", onMessageReceived);\r\n\r\n                function onMessageReceived(event) {\r\n                    // TODO: put URL into endpoints & set via option\r\n                    if (event.origin !== \"https://wallet-v1.api-epay.eu\") return;\r\n\r\n                    const message = event.data;\r\n\r\n                    const result: IWalletResult = {\r\n                        data: event.data,\r\n                        walletName: \"Test\",\r\n                    };\r\n\r\n                    if (result.data && result.data.status) {\r\n                        switch (result.data.status) {\r\n                            case \"success\": {\r\n                                resolve(result);\r\n                                break;\r\n                            }\r\n                            case \"cancel\": {\r\n                                reject(result);\r\n                                break;\r\n                            }\r\n                            default:\r\n                            case \"error\": {\r\n                                reject(result);\r\n                                break;\r\n                            }\r\n                        }\r\n                    }\r\n\r\n                    window.removeEventListener(\"message\", onMessageReceived);\r\n                }\r\n            });\r\n        }\r\n\r\n        const form = document.createElement(\"form\");\r\n\r\n        form.action = this._walletEndpoint || endpoints.epayZero.testClient;\r\n        form.method = \"GET\";\r\n        form.target = \"_self\";\r\n\r\n        for (let key in this.data) {\r\n            if (this.data.hasOwnProperty(key)) {\r\n                let input = document.createElement(\"input\");\r\n\r\n                input.type  = \"hidden\";\r\n                input.name  = key;\r\n                input.value = this.data[key];\r\n\r\n                form.appendChild(input);\r\n            }\r\n        }\r\n\r\n        document.body.appendChild(form);\r\n        form.submit();\r\n\r\n        // The returned object does not matter for fullscreen context,\r\n        // as the user is redirected before we get to this point.\r\n        // We can simply return an empty promise to meet the interface.\r\n        return new Promise((resolve, reject) => null);\r\n    }\r\n\r\n    private showBackdrop() {\r\n        if (!this._backdrop) {\r\n            this._backdrop = document.createElement(\"div\");\r\n\r\n            this._backdrop.style.position   = \"fixed\";\r\n            this._backdrop.style.zIndex     = \"9999\";\r\n            this._backdrop.style.background = \"rgba(0, 0, 0, 0.48)\";\r\n            this._backdrop.style.width      = \"100%\";\r\n            this._backdrop.style.height     = \"100%\";\r\n            this._backdrop.style.top        = \"0\";\r\n            this._backdrop.style.left       = \"0\";\r\n            this._backdrop.style.right      = \"0\";\r\n            this._backdrop.style.bottom     = \"0\";\r\n            this._backdrop.style.display    = \"none\";\r\n            this._backdrop.style.opacity    = \"0\";\r\n            this._backdrop.style.transition = \"all 500ms ease-in-out\";\r\n\r\n            document.body.appendChild(this._backdrop);\r\n        }\r\n\r\n        this._backdrop.style.display = \"block\";\r\n\r\n        setTimeout(\r\n            () => this._backdrop.style.opacity = \"1\",\r\n            1,\r\n        );\r\n    }\r\n\r\n    private hideBackdrop() {\r\n        if (!this._backdrop) return;\r\n\r\n        this._backdrop.style.opacity = \"0\";\r\n\r\n        setTimeout(\r\n            () => this._backdrop.style.display = \"none\",\r\n            500,\r\n        );\r\n    }\r\n}\r\n\r\nexport interface ITestRequestData extends IWalletRequestData {\r\n    returnUrl: string;\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/clients/test.ts","import { EventEmitter }      from \"eventemitter3\";\r\nimport { WalletRequestType } from \"../request-types\";\r\nimport {\r\n    AuthorizationError,\r\n    ConnectionError,\r\n    NoResponseError,\r\n}                            from \"../errors\";\r\nimport {\r\n    IWalletRequest,\r\n    IPreferredWindowState,\r\n    IGenericWalletOptions,\r\n    IWalletRequestData,\r\n    IMetaResponse,\r\n    IKeyValueType,\r\n    IWalletResult,\r\n}                            from \"../wallet\";\r\n\r\n@WalletRequestType(\"Vipps\")\r\nexport class VippsRequest implements IWalletRequest {\r\n    private _preferredWindowState : IPreferredWindowState;\r\n    private _walletEndpoint       : string;\r\n    private _events               : EventEmitter;\r\n    private _pollTimeout          : number;\r\n    private _fetch                : typeof fetch;\r\n\r\n    constructor(\r\n        private data : IVippsRequestData,\r\n        options?     : IGenericWalletOptions,\r\n        fetchFn?     : typeof fetch,\r\n    ) {\r\n        this._fetch = fetchFn || fetch.bind(window);\r\n\r\n        if (options) {\r\n            if (options.preferredWindowState) {\r\n                this._preferredWindowState = options.preferredWindowState;\r\n            }\r\n\r\n            if (options.walletEndpoint) {\r\n                this._walletEndpoint = options.walletEndpoint;\r\n            }\r\n\r\n            if (options.events) {\r\n                this._events = options.events;\r\n            }\r\n        }\r\n    }\r\n\r\n    public initiate(): Promise<IWalletResult> {\r\n        const { url, method } = this.data;\r\n        var events            = this._events;\r\n        var fetch             = this._fetch;\r\n\r\n        if (method === \"Redirect\") window.top.location.href = url;\r\n\r\n        function poll(retries = 0): Promise<IWalletResult> {\r\n            const maximumRetries = 15;\r\n\r\n            if (events) events.emit(\"pollRequestInitiated\", { retries, maximumRetries });\r\n\r\n            function onPollRequestRejected(error?): Promise<IWalletResult> {\r\n                if (retries >= maximumRetries)\r\n                    throw new ConnectionError(\"The maximum number of retries has been exceeded.\");\r\n\r\n                return new Promise<IWalletResult>(\r\n                    resolve => {\r\n                        setTimeout(\r\n                            () => resolve(poll(retries + 1)),\r\n                            Math.pow(retries, 2) * 100,\r\n                        );\r\n                    },\r\n                );\r\n            }\r\n\r\n            return fetch(url, { headers: { Accept: \"application/json\" } })\r\n                .then<IPollResponse>(\r\n                    response => response.json(),\r\n                    reason => Promise.reject(reason),\r\n                )\r\n                .then(\r\n                    function onPollParseFulfilled(response: IPollResponse): Promise<IWalletResult> {\r\n                        if (events) events.emit(\"pollRequestFulfilled\", response);\r\n\r\n                        if (!response || !response.meta)\r\n                            throw new NoResponseError(\"The response was empty.\");\r\n\r\n                        if (!response.meta.result)\r\n                            return onPollRequestRejected();\r\n\r\n                        if (response.wait) return poll();\r\n\r\n                        if (!response.authorizeresult) {\r\n                            const message = response.meta.message.merchant || \"The authorization was declined.\";\r\n                            throw new AuthorizationError(message);\r\n                        }\r\n\r\n                        return Promise.resolve<IWalletResult>({\r\n                            data: {\r\n                                authorizeResult : response.authorizeresult,\r\n                                parameters      : response.parameters,\r\n                                redirectUrl     : response.redirecturl,\r\n                            },\r\n                            walletName: \"Vipps\",\r\n                        });\r\n                    },\r\n                    onPollRequestRejected,\r\n                );\r\n        }\r\n\r\n        return poll();\r\n    }\r\n}\r\n\r\nexport interface IVippsRequestData extends IWalletRequestData {\r\n    url    : string;\r\n    method : \"Redirect\" | \"Poll\";\r\n}\r\n\r\nexport interface IPollResponse extends IMetaResponse {\r\n    redirecturl     : string;\r\n    wait            : boolean;\r\n    authorizeresult : boolean;\r\n    parameters      : Array<IKeyValueType<string>>;\r\n}\r\n\r\nexport interface IVippsResult {\r\n    redirectUrl     : string;\r\n    authorizeResult : boolean;\r\n    parameters      : Array<IKeyValueType<string>>;\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/clients/vipps.ts","import * as endpoints                                        from \"./endpoints\";\r\nimport getWalletResponseTransformer                          from \"./response-transformers\";\r\nimport { IGenericWalletOptions, IWalletName, IKeyValueType } from  \"./wallet\";\r\n\r\n\r\nexport default class WalletService implements IWalletService {\r\n    private _endpoint = endpoints.epayZero.walletApi;\r\n\r\n    private _defaultHeaders = {\r\n        Accept: \"application/json, text/plain, */*\",\r\n        \"X-EPay-System\" : this.xEpaySystemHeader()\r\n    };\r\n\r\n    private _fetch                        : typeof fetch = null;\r\n    private _getWalletResponseTransformer : typeof getWalletResponseTransformer = null;\r\n\r\n    constructor(\r\n        options?                        : IGenericWalletOptions,\r\n        fetchFn?                        : typeof fetch,\r\n        getWalletResponseTransformerFn? : typeof getWalletResponseTransformer,\r\n    ) {\r\n        this._fetch                        = fetchFn || fetch.bind(window);\r\n        this._getWalletResponseTransformer = getWalletResponseTransformerFn || getWalletResponseTransformer;\r\n\r\n        if (options) {\r\n            if (options.endpoint)\r\n                this._endpoint = options.endpoint;\r\n\r\n            if (options.defaultHeaders)\r\n                this._defaultHeaders = options.defaultHeaders;\r\n        }\r\n    }\r\n\r\n    public getSession(sessionId: string): Promise<IValidWalletSessionResponse> {\r\n        const promise = this._fetch(`${this._endpoint}/sessions/${sessionId}`, {\r\n            headers: this._defaultHeaders,\r\n        })\r\n\r\n        .then<IWalletSessionResponse>(response => response.json())\r\n\r\n        .then<IValidWalletSessionResponse>(jsonResponse => {\r\n            const transformer = this._getWalletResponseTransformer(jsonResponse.session.walletname);\r\n            if (transformer) {\r\n                return transformer.transform(jsonResponse);\r\n            }\r\n            return jsonResponse;\r\n        });\r\n\r\n        return promise;\r\n    }\r\n\r\n    private xEpaySystemHeader() {\r\n        const packageJson = require(\"../package.json\");\r\n        return \"WalletSDK/\" + packageJson.version; \r\n    }\r\n}\r\n\r\nexport interface IWalletService {\r\n    getSession: (sessionId: string) => Promise<IValidWalletSessionResponse>;\r\n}\r\n\r\nexport interface IWalletServiceConstructable {\r\n    new(options?: IGenericWalletOptions): IWalletService;\r\n}\r\n\r\nexport interface IWalletSessionResponse {\r\n    session: {\r\n        walletname : IWalletName;\r\n        data       : Array<IKeyValueType<string>>;\r\n    };\r\n}\r\n\r\nexport interface IValidWalletSessionResponse {\r\n    session: {\r\n        walletname : IWalletName;\r\n        data       : Array<IKeyValueType<any>>;\r\n    };\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/wallet-service.ts","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/global.js\n// module id = 16\n// module chunks = 0","module.exports = {\"name\":\"@bambora/wallet\",\"version\":\"1.3.1\",\"description\":\"Bambora Online JavaScript API for Wallet transactions\",\"main\":\"dist/index.js\",\"types\":\"dist/src/index.d.ts\",\"scripts\":{\"test\":\"mocha --require ts-node/register ./test/**/*.ts\",\"clean\":\"rimraf ./dist\",\"start\":\"npm run clean && webpack-dev-server --hot\",\"dev-build\":\"npm run clean && webpack -d\",\"build\":\"npm run clean && npm install && webpack -p\"},\"repository\":{\"type\":\"git\",\"url\":\"git+https://github.com/bambora/wallet.git\"},\"author\":\"Bambora Online A/S <integrationonline@bambora.com> (https://bambora.com)\",\"license\":\"MIT\",\"bugs\":{\"url\":\"https://github.com/bambora/wallet/issues\"},\"homepage\":\"https://github.com/bambora/wallet#readme\",\"dependencies\":{\"es6-promise\":\"4.0.5\",\"eventemitter3\":\"2.0.2\",\"querystringify\":\"2.1.1\",\"whatwg-fetch\":\"2.0.3\"},\"devDependencies\":{\"@types/chai\":\"3.4.35\",\"@types/chai-as-promised\":\"0.0.30\",\"@types/fetch-mock\":\"5.8.1\",\"@types/mocha\":\"2.2.40\",\"@types/query-string\":\"3.0.31\",\"@types/sinon\":\"1.16.36\",\"@types/tapable\":\"1.0.4\",\"@types/webpack\":\"4.4.13\",\"babel\":\"6.5.2\",\"chai\":\"3.5.0\",\"chai-as-promised\":\"6.0.0\",\"fetch-mock\":\"5.9.4\",\"mocha\":\"6.2.0\",\"rimraf\":\"2.5.4\",\"sinon\":\"2.0.0\",\"ts-loader\":\"2.3.7\",\"ts-node\":\"3.3.0\",\"tslint\":\"4.5.1\",\"typescript\":\"2.5.3\",\"webpack\":\"2.2.1\",\"webpack-dev-server\":\"2.2.1\"}}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./package.json\n// module id = 17\n// module chunks = 0","import * as promise from \"es6-promise\";\r\npromise.polyfill();\r\nimport \"whatwg-fetch\";\r\n\r\nimport Wallet from \"./wallet\";\r\nimport * as errors from \"./errors\";\r\n\r\nif (window) {\r\n    window.Bambora              = window.Bambora        || {};\r\n    window.Bambora.Wallet       = window.Bambora.Wallet || Wallet;\r\n    window.Bambora.WalletErrors = window.Bambora.WalletErrors || errors;\r\n}\r\n\r\n// tslint:disable\r\ndeclare global {\r\n    interface Bambora {\r\n        Wallet?: typeof Wallet;\r\n        WalletErrors?: typeof errors;\r\n    }\r\n\r\n    interface Window {\r\n        Bambora: Bambora;\r\n    }\r\n}\r\n// tslint:enable\r\n\r\nexport default Wallet;\r\nexport { errors };\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/index.ts","var __defProp = Object.defineProperty;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __objRest = (source, exclude) => {\n  var target = {};\n  for (var prop in source)\n    if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)\n      target[prop] = source[prop];\n  if (source != null && __getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(source)) {\n      if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))\n        target[prop] = source[prop];\n    }\n  return target;\n};\n\n// src/index.tsx\nimport React, { useRef, useEffect, useState } from \"react\";\n\n// src/third-party/qrcodegen/index.ts\n/**\n * @license QR Code generator library (TypeScript)\n * Copyright (c) Project Nayuki.\n * SPDX-License-Identifier: MIT\n */\nvar qrcodegen;\n((qrcodegen2) => {\n  const _QrCode = class {\n    constructor(version, errorCorrectionLevel, dataCodewords, msk) {\n      this.version = version;\n      this.errorCorrectionLevel = errorCorrectionLevel;\n      this.modules = [];\n      this.isFunction = [];\n      if (version < _QrCode.MIN_VERSION || version > _QrCode.MAX_VERSION)\n        throw new RangeError(\"Version value out of range\");\n      if (msk < -1 || msk > 7)\n        throw new RangeError(\"Mask value out of range\");\n      this.size = version * 4 + 17;\n      let row = [];\n      for (let i = 0; i < this.size; i++)\n        row.push(false);\n      for (let i = 0; i < this.size; i++) {\n        this.modules.push(row.slice());\n        this.isFunction.push(row.slice());\n      }\n      this.drawFunctionPatterns();\n      const allCodewords = this.addEccAndInterleave(dataCodewords);\n      this.drawCodewords(allCodewords);\n      if (msk == -1) {\n        let minPenalty = 1e9;\n        for (let i = 0; i < 8; i++) {\n          this.applyMask(i);\n          this.drawFormatBits(i);\n          const penalty = this.getPenaltyScore();\n          if (penalty < minPenalty) {\n            msk = i;\n            minPenalty = penalty;\n          }\n          this.applyMask(i);\n        }\n      }\n      assert(0 <= msk && msk <= 7);\n      this.mask = msk;\n      this.applyMask(msk);\n      this.drawFormatBits(msk);\n      this.isFunction = [];\n    }\n    static encodeText(text, ecl) {\n      const segs = qrcodegen2.QrSegment.makeSegments(text);\n      return _QrCode.encodeSegments(segs, ecl);\n    }\n    static encodeBinary(data, ecl) {\n      const seg = qrcodegen2.QrSegment.makeBytes(data);\n      return _QrCode.encodeSegments([seg], ecl);\n    }\n    static encodeSegments(segs, ecl, minVersion = 1, maxVersion = 40, mask = -1, boostEcl = true) {\n      if (!(_QrCode.MIN_VERSION <= minVersion && minVersion <= maxVersion && maxVersion <= _QrCode.MAX_VERSION) || mask < -1 || mask > 7)\n        throw new RangeError(\"Invalid value\");\n      let version;\n      let dataUsedBits;\n      for (version = minVersion; ; version++) {\n        const dataCapacityBits2 = _QrCode.getNumDataCodewords(version, ecl) * 8;\n        const usedBits = QrSegment.getTotalBits(segs, version);\n        if (usedBits <= dataCapacityBits2) {\n          dataUsedBits = usedBits;\n          break;\n        }\n        if (version >= maxVersion)\n          throw new RangeError(\"Data too long\");\n      }\n      for (const newEcl of [_QrCode.Ecc.MEDIUM, _QrCode.Ecc.QUARTILE, _QrCode.Ecc.HIGH]) {\n        if (boostEcl && dataUsedBits <= _QrCode.getNumDataCodewords(version, newEcl) * 8)\n          ecl = newEcl;\n      }\n      let bb = [];\n      for (const seg of segs) {\n        appendBits(seg.mode.modeBits, 4, bb);\n        appendBits(seg.numChars, seg.mode.numCharCountBits(version), bb);\n        for (const b of seg.getData())\n          bb.push(b);\n      }\n      assert(bb.length == dataUsedBits);\n      const dataCapacityBits = _QrCode.getNumDataCodewords(version, ecl) * 8;\n      assert(bb.length <= dataCapacityBits);\n      appendBits(0, Math.min(4, dataCapacityBits - bb.length), bb);\n      appendBits(0, (8 - bb.length % 8) % 8, bb);\n      assert(bb.length % 8 == 0);\n      for (let padByte = 236; bb.length < dataCapacityBits; padByte ^= 236 ^ 17)\n        appendBits(padByte, 8, bb);\n      let dataCodewords = [];\n      while (dataCodewords.length * 8 < bb.length)\n        dataCodewords.push(0);\n      bb.forEach((b, i) => dataCodewords[i >>> 3] |= b << 7 - (i & 7));\n      return new _QrCode(version, ecl, dataCodewords, mask);\n    }\n    getModule(x, y) {\n      return 0 <= x && x < this.size && 0 <= y && y < this.size && this.modules[y][x];\n    }\n    getModules() {\n      return this.modules;\n    }\n    drawFunctionPatterns() {\n      for (let i = 0; i < this.size; i++) {\n        this.setFunctionModule(6, i, i % 2 == 0);\n        this.setFunctionModule(i, 6, i % 2 == 0);\n      }\n      this.drawFinderPattern(3, 3);\n      this.drawFinderPattern(this.size - 4, 3);\n      this.drawFinderPattern(3, this.size - 4);\n      const alignPatPos = this.getAlignmentPatternPositions();\n      const numAlign = alignPatPos.length;\n      for (let i = 0; i < numAlign; i++) {\n        for (let j = 0; j < numAlign; j++) {\n          if (!(i == 0 && j == 0 || i == 0 && j == numAlign - 1 || i == numAlign - 1 && j == 0))\n            this.drawAlignmentPattern(alignPatPos[i], alignPatPos[j]);\n        }\n      }\n      this.drawFormatBits(0);\n      this.drawVersion();\n    }\n    drawFormatBits(mask) {\n      const data = this.errorCorrectionLevel.formatBits << 3 | mask;\n      let rem = data;\n      for (let i = 0; i < 10; i++)\n        rem = rem << 1 ^ (rem >>> 9) * 1335;\n      const bits = (data << 10 | rem) ^ 21522;\n      assert(bits >>> 15 == 0);\n      for (let i = 0; i <= 5; i++)\n        this.setFunctionModule(8, i, getBit(bits, i));\n      this.setFunctionModule(8, 7, getBit(bits, 6));\n      this.setFunctionModule(8, 8, getBit(bits, 7));\n      this.setFunctionModule(7, 8, getBit(bits, 8));\n      for (let i = 9; i < 15; i++)\n        this.setFunctionModule(14 - i, 8, getBit(bits, i));\n      for (let i = 0; i < 8; i++)\n        this.setFunctionModule(this.size - 1 - i, 8, getBit(bits, i));\n      for (let i = 8; i < 15; i++)\n        this.setFunctionModule(8, this.size - 15 + i, getBit(bits, i));\n      this.setFunctionModule(8, this.size - 8, true);\n    }\n    drawVersion() {\n      if (this.version < 7)\n        return;\n      let rem = this.version;\n      for (let i = 0; i < 12; i++)\n        rem = rem << 1 ^ (rem >>> 11) * 7973;\n      const bits = this.version << 12 | rem;\n      assert(bits >>> 18 == 0);\n      for (let i = 0; i < 18; i++) {\n        const color = getBit(bits, i);\n        const a = this.size - 11 + i % 3;\n        const b = Math.floor(i / 3);\n        this.setFunctionModule(a, b, color);\n        this.setFunctionModule(b, a, color);\n      }\n    }\n    drawFinderPattern(x, y) {\n      for (let dy = -4; dy <= 4; dy++) {\n        for (let dx = -4; dx <= 4; dx++) {\n          const dist = Math.max(Math.abs(dx), Math.abs(dy));\n          const xx = x + dx;\n          const yy = y + dy;\n          if (0 <= xx && xx < this.size && 0 <= yy && yy < this.size)\n            this.setFunctionModule(xx, yy, dist != 2 && dist != 4);\n        }\n      }\n    }\n    drawAlignmentPattern(x, y) {\n      for (let dy = -2; dy <= 2; dy++) {\n        for (let dx = -2; dx <= 2; dx++)\n          this.setFunctionModule(x + dx, y + dy, Math.max(Math.abs(dx), Math.abs(dy)) != 1);\n      }\n    }\n    setFunctionModule(x, y, isDark) {\n      this.modules[y][x] = isDark;\n      this.isFunction[y][x] = true;\n    }\n    addEccAndInterleave(data) {\n      const ver = this.version;\n      const ecl = this.errorCorrectionLevel;\n      if (data.length != _QrCode.getNumDataCodewords(ver, ecl))\n        throw new RangeError(\"Invalid argument\");\n      const numBlocks = _QrCode.NUM_ERROR_CORRECTION_BLOCKS[ecl.ordinal][ver];\n      const blockEccLen = _QrCode.ECC_CODEWORDS_PER_BLOCK[ecl.ordinal][ver];\n      const rawCodewords = Math.floor(_QrCode.getNumRawDataModules(ver) / 8);\n      const numShortBlocks = numBlocks - rawCodewords % numBlocks;\n      const shortBlockLen = Math.floor(rawCodewords / numBlocks);\n      let blocks = [];\n      const rsDiv = _QrCode.reedSolomonComputeDivisor(blockEccLen);\n      for (let i = 0, k = 0; i < numBlocks; i++) {\n        let dat = data.slice(k, k + shortBlockLen - blockEccLen + (i < numShortBlocks ? 0 : 1));\n        k += dat.length;\n        const ecc = _QrCode.reedSolomonComputeRemainder(dat, rsDiv);\n        if (i < numShortBlocks)\n          dat.push(0);\n        blocks.push(dat.concat(ecc));\n      }\n      let result = [];\n      for (let i = 0; i < blocks[0].length; i++) {\n        blocks.forEach((block, j) => {\n          if (i != shortBlockLen - blockEccLen || j >= numShortBlocks)\n            result.push(block[i]);\n        });\n      }\n      assert(result.length == rawCodewords);\n      return result;\n    }\n    drawCodewords(data) {\n      if (data.length != Math.floor(_QrCode.getNumRawDataModules(this.version) / 8))\n        throw new RangeError(\"Invalid argument\");\n      let i = 0;\n      for (let right = this.size - 1; right >= 1; right -= 2) {\n        if (right == 6)\n          right = 5;\n        for (let vert = 0; vert < this.size; vert++) {\n          for (let j = 0; j < 2; j++) {\n            const x = right - j;\n            const upward = (right + 1 & 2) == 0;\n            const y = upward ? this.size - 1 - vert : vert;\n            if (!this.isFunction[y][x] && i < data.length * 8) {\n              this.modules[y][x] = getBit(data[i >>> 3], 7 - (i & 7));\n              i++;\n            }\n          }\n        }\n      }\n      assert(i == data.length * 8);\n    }\n    applyMask(mask) {\n      if (mask < 0 || mask > 7)\n        throw new RangeError(\"Mask value out of range\");\n      for (let y = 0; y < this.size; y++) {\n        for (let x = 0; x < this.size; x++) {\n          let invert;\n          switch (mask) {\n            case 0:\n              invert = (x + y) % 2 == 0;\n              break;\n            case 1:\n              invert = y % 2 == 0;\n              break;\n            case 2:\n              invert = x % 3 == 0;\n              break;\n            case 3:\n              invert = (x + y) % 3 == 0;\n              break;\n            case 4:\n              invert = (Math.floor(x / 3) + Math.floor(y / 2)) % 2 == 0;\n              break;\n            case 5:\n              invert = x * y % 2 + x * y % 3 == 0;\n              break;\n            case 6:\n              invert = (x * y % 2 + x * y % 3) % 2 == 0;\n              break;\n            case 7:\n              invert = ((x + y) % 2 + x * y % 3) % 2 == 0;\n              break;\n            default:\n              throw new Error(\"Unreachable\");\n          }\n          if (!this.isFunction[y][x] && invert)\n            this.modules[y][x] = !this.modules[y][x];\n        }\n      }\n    }\n    getPenaltyScore() {\n      let result = 0;\n      for (let y = 0; y < this.size; y++) {\n        let runColor = false;\n        let runX = 0;\n        let runHistory = [0, 0, 0, 0, 0, 0, 0];\n        for (let x = 0; x < this.size; x++) {\n          if (this.modules[y][x] == runColor) {\n            runX++;\n            if (runX == 5)\n              result += _QrCode.PENALTY_N1;\n            else if (runX > 5)\n              result++;\n          } else {\n            this.finderPenaltyAddHistory(runX, runHistory);\n            if (!runColor)\n              result += this.finderPenaltyCountPatterns(runHistory) * _QrCode.PENALTY_N3;\n            runColor = this.modules[y][x];\n            runX = 1;\n          }\n        }\n        result += this.finderPenaltyTerminateAndCount(runColor, runX, runHistory) * _QrCode.PENALTY_N3;\n      }\n      for (let x = 0; x < this.size; x++) {\n        let runColor = false;\n        let runY = 0;\n        let runHistory = [0, 0, 0, 0, 0, 0, 0];\n        for (let y = 0; y < this.size; y++) {\n          if (this.modules[y][x] == runColor) {\n            runY++;\n            if (runY == 5)\n              result += _QrCode.PENALTY_N1;\n            else if (runY > 5)\n              result++;\n          } else {\n            this.finderPenaltyAddHistory(runY, runHistory);\n            if (!runColor)\n              result += this.finderPenaltyCountPatterns(runHistory) * _QrCode.PENALTY_N3;\n            runColor = this.modules[y][x];\n            runY = 1;\n          }\n        }\n        result += this.finderPenaltyTerminateAndCount(runColor, runY, runHistory) * _QrCode.PENALTY_N3;\n      }\n      for (let y = 0; y < this.size - 1; y++) {\n        for (let x = 0; x < this.size - 1; x++) {\n          const color = this.modules[y][x];\n          if (color == this.modules[y][x + 1] && color == this.modules[y + 1][x] && color == this.modules[y + 1][x + 1])\n            result += _QrCode.PENALTY_N2;\n        }\n      }\n      let dark = 0;\n      for (const row of this.modules)\n        dark = row.reduce((sum, color) => sum + (color ? 1 : 0), dark);\n      const total = this.size * this.size;\n      const k = Math.ceil(Math.abs(dark * 20 - total * 10) / total) - 1;\n      assert(0 <= k && k <= 9);\n      result += k * _QrCode.PENALTY_N4;\n      assert(0 <= result && result <= 2568888);\n      return result;\n    }\n    getAlignmentPatternPositions() {\n      if (this.version == 1)\n        return [];\n      else {\n        const numAlign = Math.floor(this.version / 7) + 2;\n        const step = this.version == 32 ? 26 : Math.ceil((this.version * 4 + 4) / (numAlign * 2 - 2)) * 2;\n        let result = [6];\n        for (let pos = this.size - 7; result.length < numAlign; pos -= step)\n          result.splice(1, 0, pos);\n        return result;\n      }\n    }\n    static getNumRawDataModules(ver) {\n      if (ver < _QrCode.MIN_VERSION || ver > _QrCode.MAX_VERSION)\n        throw new RangeError(\"Version number out of range\");\n      let result = (16 * ver + 128) * ver + 64;\n      if (ver >= 2) {\n        const numAlign = Math.floor(ver / 7) + 2;\n        result -= (25 * numAlign - 10) * numAlign - 55;\n        if (ver >= 7)\n          result -= 36;\n      }\n      assert(208 <= result && result <= 29648);\n      return result;\n    }\n    static getNumDataCodewords(ver, ecl) {\n      return Math.floor(_QrCode.getNumRawDataModules(ver) / 8) - _QrCode.ECC_CODEWORDS_PER_BLOCK[ecl.ordinal][ver] * _QrCode.NUM_ERROR_CORRECTION_BLOCKS[ecl.ordinal][ver];\n    }\n    static reedSolomonComputeDivisor(degree) {\n      if (degree < 1 || degree > 255)\n        throw new RangeError(\"Degree out of range\");\n      let result = [];\n      for (let i = 0; i < degree - 1; i++)\n        result.push(0);\n      result.push(1);\n      let root = 1;\n      for (let i = 0; i < degree; i++) {\n        for (let j = 0; j < result.length; j++) {\n          result[j] = _QrCode.reedSolomonMultiply(result[j], root);\n          if (j + 1 < result.length)\n            result[j] ^= result[j + 1];\n        }\n        root = _QrCode.reedSolomonMultiply(root, 2);\n      }\n      return result;\n    }\n    static reedSolomonComputeRemainder(data, divisor) {\n      let result = divisor.map((_) => 0);\n      for (const b of data) {\n        const factor = b ^ result.shift();\n        result.push(0);\n        divisor.forEach((coef, i) => result[i] ^= _QrCode.reedSolomonMultiply(coef, factor));\n      }\n      return result;\n    }\n    static reedSolomonMultiply(x, y) {\n      if (x >>> 8 != 0 || y >>> 8 != 0)\n        throw new RangeError(\"Byte out of range\");\n      let z = 0;\n      for (let i = 7; i >= 0; i--) {\n        z = z << 1 ^ (z >>> 7) * 285;\n        z ^= (y >>> i & 1) * x;\n      }\n      assert(z >>> 8 == 0);\n      return z;\n    }\n    finderPenaltyCountPatterns(runHistory) {\n      const n = runHistory[1];\n      assert(n <= this.size * 3);\n      const core = n > 0 && runHistory[2] == n && runHistory[3] == n * 3 && runHistory[4] == n && runHistory[5] == n;\n      return (core && runHistory[0] >= n * 4 && runHistory[6] >= n ? 1 : 0) + (core && runHistory[6] >= n * 4 && runHistory[0] >= n ? 1 : 0);\n    }\n    finderPenaltyTerminateAndCount(currentRunColor, currentRunLength, runHistory) {\n      if (currentRunColor) {\n        this.finderPenaltyAddHistory(currentRunLength, runHistory);\n        currentRunLength = 0;\n      }\n      currentRunLength += this.size;\n      this.finderPenaltyAddHistory(currentRunLength, runHistory);\n      return this.finderPenaltyCountPatterns(runHistory);\n    }\n    finderPenaltyAddHistory(currentRunLength, runHistory) {\n      if (runHistory[0] == 0)\n        currentRunLength += this.size;\n      runHistory.pop();\n      runHistory.unshift(currentRunLength);\n    }\n  };\n  let QrCode = _QrCode;\n  QrCode.MIN_VERSION = 1;\n  QrCode.MAX_VERSION = 40;\n  QrCode.PENALTY_N1 = 3;\n  QrCode.PENALTY_N2 = 3;\n  QrCode.PENALTY_N3 = 40;\n  QrCode.PENALTY_N4 = 10;\n  QrCode.ECC_CODEWORDS_PER_BLOCK = [\n    [-1, 7, 10, 15, 20, 26, 18, 20, 24, 30, 18, 20, 24, 26, 30, 22, 24, 28, 30, 28, 28, 28, 28, 30, 30, 26, 28, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30],\n    [-1, 10, 16, 26, 18, 24, 16, 18, 22, 22, 26, 30, 22, 22, 24, 24, 28, 28, 26, 26, 26, 26, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28],\n    [-1, 13, 22, 18, 26, 18, 24, 18, 22, 20, 24, 28, 26, 24, 20, 30, 24, 28, 28, 26, 30, 28, 30, 30, 30, 30, 28, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30],\n    [-1, 17, 28, 22, 16, 22, 28, 26, 26, 24, 28, 24, 28, 22, 24, 24, 30, 28, 28, 26, 28, 30, 24, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30]\n  ];\n  QrCode.NUM_ERROR_CORRECTION_BLOCKS = [\n    [-1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 4, 4, 4, 4, 4, 6, 6, 6, 6, 7, 8, 8, 9, 9, 10, 12, 12, 12, 13, 14, 15, 16, 17, 18, 19, 19, 20, 21, 22, 24, 25],\n    [-1, 1, 1, 1, 2, 2, 4, 4, 4, 5, 5, 5, 8, 9, 9, 10, 10, 11, 13, 14, 16, 17, 17, 18, 20, 21, 23, 25, 26, 28, 29, 31, 33, 35, 37, 38, 40, 43, 45, 47, 49],\n    [-1, 1, 1, 2, 2, 4, 4, 6, 6, 8, 8, 8, 10, 12, 16, 12, 17, 16, 18, 21, 20, 23, 23, 25, 27, 29, 34, 34, 35, 38, 40, 43, 45, 48, 51, 53, 56, 59, 62, 65, 68],\n    [-1, 1, 1, 2, 4, 4, 4, 5, 6, 8, 8, 11, 11, 16, 16, 18, 16, 19, 21, 25, 25, 25, 34, 30, 32, 35, 37, 40, 42, 45, 48, 51, 54, 57, 60, 63, 66, 70, 74, 77, 81]\n  ];\n  qrcodegen2.QrCode = QrCode;\n  function appendBits(val, len, bb) {\n    if (len < 0 || len > 31 || val >>> len != 0)\n      throw new RangeError(\"Value out of range\");\n    for (let i = len - 1; i >= 0; i--)\n      bb.push(val >>> i & 1);\n  }\n  function getBit(x, i) {\n    return (x >>> i & 1) != 0;\n  }\n  function assert(cond) {\n    if (!cond)\n      throw new Error(\"Assertion error\");\n  }\n  const _QrSegment = class {\n    constructor(mode, numChars, bitData) {\n      this.mode = mode;\n      this.numChars = numChars;\n      this.bitData = bitData;\n      if (numChars < 0)\n        throw new RangeError(\"Invalid argument\");\n      this.bitData = bitData.slice();\n    }\n    static makeBytes(data) {\n      let bb = [];\n      for (const b of data)\n        appendBits(b, 8, bb);\n      return new _QrSegment(_QrSegment.Mode.BYTE, data.length, bb);\n    }\n    static makeNumeric(digits) {\n      if (!_QrSegment.isNumeric(digits))\n        throw new RangeError(\"String contains non-numeric characters\");\n      let bb = [];\n      for (let i = 0; i < digits.length; ) {\n        const n = Math.min(digits.length - i, 3);\n        appendBits(parseInt(digits.substr(i, n), 10), n * 3 + 1, bb);\n        i += n;\n      }\n      return new _QrSegment(_QrSegment.Mode.NUMERIC, digits.length, bb);\n    }\n    static makeAlphanumeric(text) {\n      if (!_QrSegment.isAlphanumeric(text))\n        throw new RangeError(\"String contains unencodable characters in alphanumeric mode\");\n      let bb = [];\n      let i;\n      for (i = 0; i + 2 <= text.length; i += 2) {\n        let temp = _QrSegment.ALPHANUMERIC_CHARSET.indexOf(text.charAt(i)) * 45;\n        temp += _QrSegment.ALPHANUMERIC_CHARSET.indexOf(text.charAt(i + 1));\n        appendBits(temp, 11, bb);\n      }\n      if (i < text.length)\n        appendBits(_QrSegment.ALPHANUMERIC_CHARSET.indexOf(text.charAt(i)), 6, bb);\n      return new _QrSegment(_QrSegment.Mode.ALPHANUMERIC, text.length, bb);\n    }\n    static makeSegments(text) {\n      if (text == \"\")\n        return [];\n      else if (_QrSegment.isNumeric(text))\n        return [_QrSegment.makeNumeric(text)];\n      else if (_QrSegment.isAlphanumeric(text))\n        return [_QrSegment.makeAlphanumeric(text)];\n      else\n        return [_QrSegment.makeBytes(_QrSegment.toUtf8ByteArray(text))];\n    }\n    static makeEci(assignVal) {\n      let bb = [];\n      if (assignVal < 0)\n        throw new RangeError(\"ECI assignment value out of range\");\n      else if (assignVal < 1 << 7)\n        appendBits(assignVal, 8, bb);\n      else if (assignVal < 1 << 14) {\n        appendBits(2, 2, bb);\n        appendBits(assignVal, 14, bb);\n      } else if (assignVal < 1e6) {\n        appendBits(6, 3, bb);\n        appendBits(assignVal, 21, bb);\n      } else\n        throw new RangeError(\"ECI assignment value out of range\");\n      return new _QrSegment(_QrSegment.Mode.ECI, 0, bb);\n    }\n    static isNumeric(text) {\n      return _QrSegment.NUMERIC_REGEX.test(text);\n    }\n    static isAlphanumeric(text) {\n      return _QrSegment.ALPHANUMERIC_REGEX.test(text);\n    }\n    getData() {\n      return this.bitData.slice();\n    }\n    static getTotalBits(segs, version) {\n      let result = 0;\n      for (const seg of segs) {\n        const ccbits = seg.mode.numCharCountBits(version);\n        if (seg.numChars >= 1 << ccbits)\n          return Infinity;\n        result += 4 + ccbits + seg.bitData.length;\n      }\n      return result;\n    }\n    static toUtf8ByteArray(str) {\n      str = encodeURI(str);\n      let result = [];\n      for (let i = 0; i < str.length; i++) {\n        if (str.charAt(i) != \"%\")\n          result.push(str.charCodeAt(i));\n        else {\n          result.push(parseInt(str.substr(i + 1, 2), 16));\n          i += 2;\n        }\n      }\n      return result;\n    }\n  };\n  let QrSegment = _QrSegment;\n  QrSegment.NUMERIC_REGEX = /^[0-9]*$/;\n  QrSegment.ALPHANUMERIC_REGEX = /^[A-Z0-9 $%*+.\\/:-]*$/;\n  QrSegment.ALPHANUMERIC_CHARSET = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:\";\n  qrcodegen2.QrSegment = QrSegment;\n})(qrcodegen || (qrcodegen = {}));\n((qrcodegen2) => {\n  let QrCode;\n  ((QrCode2) => {\n    const _Ecc = class {\n      constructor(ordinal, formatBits) {\n        this.ordinal = ordinal;\n        this.formatBits = formatBits;\n      }\n    };\n    let Ecc = _Ecc;\n    Ecc.LOW = new _Ecc(0, 1);\n    Ecc.MEDIUM = new _Ecc(1, 0);\n    Ecc.QUARTILE = new _Ecc(2, 3);\n    Ecc.HIGH = new _Ecc(3, 2);\n    QrCode2.Ecc = Ecc;\n  })(QrCode = qrcodegen2.QrCode || (qrcodegen2.QrCode = {}));\n})(qrcodegen || (qrcodegen = {}));\n((qrcodegen2) => {\n  let QrSegment;\n  ((QrSegment2) => {\n    const _Mode = class {\n      constructor(modeBits, numBitsCharCount) {\n        this.modeBits = modeBits;\n        this.numBitsCharCount = numBitsCharCount;\n      }\n      numCharCountBits(ver) {\n        return this.numBitsCharCount[Math.floor((ver + 7) / 17)];\n      }\n    };\n    let Mode = _Mode;\n    Mode.NUMERIC = new _Mode(1, [10, 12, 14]);\n    Mode.ALPHANUMERIC = new _Mode(2, [9, 11, 13]);\n    Mode.BYTE = new _Mode(4, [8, 16, 16]);\n    Mode.KANJI = new _Mode(8, [8, 10, 12]);\n    Mode.ECI = new _Mode(7, [0, 0, 0]);\n    QrSegment2.Mode = Mode;\n  })(QrSegment = qrcodegen2.QrSegment || (qrcodegen2.QrSegment = {}));\n})(qrcodegen || (qrcodegen = {}));\nvar qrcodegen_default = qrcodegen;\n\n// src/index.tsx\n/**\n * @license qrcode.react\n * Copyright (c) Paul O'Shannessy\n * SPDX-License-Identifier: ISC\n */\nvar ERROR_LEVEL_MAP = {\n  L: qrcodegen_default.QrCode.Ecc.LOW,\n  M: qrcodegen_default.QrCode.Ecc.MEDIUM,\n  Q: qrcodegen_default.QrCode.Ecc.QUARTILE,\n  H: qrcodegen_default.QrCode.Ecc.HIGH\n};\nvar DEFAULT_SIZE = 128;\nvar DEFAULT_LEVEL = \"L\";\nvar DEFAULT_BGCOLOR = \"#FFFFFF\";\nvar DEFAULT_FGCOLOR = \"#000000\";\nvar DEFAULT_INCLUDEMARGIN = false;\nvar MARGIN_SIZE = 4;\nvar DEFAULT_IMG_SCALE = 0.1;\nfunction generatePath(modules, margin = 0) {\n  const ops = [];\n  modules.forEach(function(row, y) {\n    let start = null;\n    row.forEach(function(cell, x) {\n      if (!cell && start !== null) {\n        ops.push(`M${start + margin} ${y + margin}h${x - start}v1H${start + margin}z`);\n        start = null;\n        return;\n      }\n      if (x === row.length - 1) {\n        if (!cell) {\n          return;\n        }\n        if (start === null) {\n          ops.push(`M${x + margin},${y + margin} h1v1H${x + margin}z`);\n        } else {\n          ops.push(`M${start + margin},${y + margin} h${x + 1 - start}v1H${start + margin}z`);\n        }\n        return;\n      }\n      if (cell && start === null) {\n        start = x;\n      }\n    });\n  });\n  return ops.join(\"\");\n}\nfunction excavateModules(modules, excavation) {\n  return modules.slice().map((row, y) => {\n    if (y < excavation.y || y >= excavation.y + excavation.h) {\n      return row;\n    }\n    return row.map((cell, x) => {\n      if (x < excavation.x || x >= excavation.x + excavation.w) {\n        return cell;\n      }\n      return false;\n    });\n  });\n}\nfunction getImageSettings(cells, size, includeMargin, imageSettings) {\n  if (imageSettings == null) {\n    return null;\n  }\n  const margin = includeMargin ? MARGIN_SIZE : 0;\n  const numCells = cells.length + margin * 2;\n  const defaultSize = Math.floor(size * DEFAULT_IMG_SCALE);\n  const scale = numCells / size;\n  const w = (imageSettings.width || defaultSize) * scale;\n  const h = (imageSettings.height || defaultSize) * scale;\n  const x = imageSettings.x == null ? cells.length / 2 - w / 2 : imageSettings.x * scale;\n  const y = imageSettings.y == null ? cells.length / 2 - h / 2 : imageSettings.y * scale;\n  let excavation = null;\n  if (imageSettings.excavate) {\n    let floorX = Math.floor(x);\n    let floorY = Math.floor(y);\n    let ceilW = Math.ceil(w + x - floorX);\n    let ceilH = Math.ceil(h + y - floorY);\n    excavation = { x: floorX, y: floorY, w: ceilW, h: ceilH };\n  }\n  return { x, y, h, w, excavation };\n}\nvar SUPPORTS_PATH2D = function() {\n  try {\n    new Path2D().addPath(new Path2D());\n  } catch (e) {\n    return false;\n  }\n  return true;\n}();\nfunction QRCodeCanvas(props) {\n  const _a = props, {\n    value,\n    size = DEFAULT_SIZE,\n    level = DEFAULT_LEVEL,\n    bgColor = DEFAULT_BGCOLOR,\n    fgColor = DEFAULT_FGCOLOR,\n    includeMargin = DEFAULT_INCLUDEMARGIN,\n    style,\n    imageSettings\n  } = _a, otherProps = __objRest(_a, [\n    \"value\",\n    \"size\",\n    \"level\",\n    \"bgColor\",\n    \"fgColor\",\n    \"includeMargin\",\n    \"style\",\n    \"imageSettings\"\n  ]);\n  const imgSrc = imageSettings == null ? void 0 : imageSettings.src;\n  const _canvas = useRef(null);\n  const _image = useRef(null);\n  const [isImgLoaded, setIsImageLoaded] = useState(false);\n  useEffect(() => {\n    if (_canvas.current != null) {\n      const canvas = _canvas.current;\n      const ctx = canvas.getContext(\"2d\");\n      if (!ctx) {\n        return;\n      }\n      let cells = qrcodegen_default.QrCode.encodeText(value, ERROR_LEVEL_MAP[level]).getModules();\n      const margin = includeMargin ? MARGIN_SIZE : 0;\n      const numCells = cells.length + margin * 2;\n      const calculatedImageSettings = getImageSettings(cells, size, includeMargin, imageSettings);\n      const image = _image.current;\n      const haveImageToRender = calculatedImageSettings != null && image !== null && image.complete && image.naturalHeight !== 0 && image.naturalWidth !== 0;\n      if (haveImageToRender) {\n        if (calculatedImageSettings.excavation != null) {\n          cells = excavateModules(cells, calculatedImageSettings.excavation);\n        }\n      }\n      const pixelRatio = window.devicePixelRatio || 1;\n      canvas.height = canvas.width = size * pixelRatio;\n      const scale = size / numCells * pixelRatio;\n      ctx.scale(scale, scale);\n      ctx.fillStyle = bgColor;\n      ctx.fillRect(0, 0, numCells, numCells);\n      ctx.fillStyle = fgColor;\n      if (SUPPORTS_PATH2D) {\n        ctx.fill(new Path2D(generatePath(cells, margin)));\n      } else {\n        cells.forEach(function(row, rdx) {\n          row.forEach(function(cell, cdx) {\n            if (cell) {\n              ctx.fillRect(cdx + margin, rdx + margin, 1, 1);\n            }\n          });\n        });\n      }\n      if (haveImageToRender) {\n        ctx.drawImage(image, calculatedImageSettings.x + margin, calculatedImageSettings.y + margin, calculatedImageSettings.w, calculatedImageSettings.h);\n      }\n    }\n  });\n  useEffect(() => {\n    setIsImageLoaded(false);\n  }, [imgSrc]);\n  const canvasStyle = __spreadValues({ height: size, width: size }, style);\n  let img = null;\n  if (imgSrc != null) {\n    img = /* @__PURE__ */ React.createElement(\"img\", {\n      src: imgSrc,\n      key: imgSrc,\n      style: { display: \"none\" },\n      onLoad: () => {\n        setIsImageLoaded(true);\n      },\n      ref: _image\n    });\n  }\n  return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(\"canvas\", __spreadValues({\n    style: canvasStyle,\n    height: size,\n    width: size,\n    ref: _canvas\n  }, otherProps)), img);\n}\nfunction QRCodeSVG(props) {\n  const _a = props, {\n    value,\n    size = DEFAULT_SIZE,\n    level = DEFAULT_LEVEL,\n    bgColor = DEFAULT_BGCOLOR,\n    fgColor = DEFAULT_FGCOLOR,\n    includeMargin = DEFAULT_INCLUDEMARGIN,\n    imageSettings\n  } = _a, otherProps = __objRest(_a, [\n    \"value\",\n    \"size\",\n    \"level\",\n    \"bgColor\",\n    \"fgColor\",\n    \"includeMargin\",\n    \"imageSettings\"\n  ]);\n  let cells = qrcodegen_default.QrCode.encodeText(value, ERROR_LEVEL_MAP[level]).getModules();\n  const margin = includeMargin ? MARGIN_SIZE : 0;\n  const numCells = cells.length + margin * 2;\n  const calculatedImageSettings = getImageSettings(cells, size, includeMargin, imageSettings);\n  let image = null;\n  if (imageSettings != null && calculatedImageSettings != null) {\n    if (calculatedImageSettings.excavation != null) {\n      cells = excavateModules(cells, calculatedImageSettings.excavation);\n    }\n    image = /* @__PURE__ */ React.createElement(\"image\", {\n      xlinkHref: imageSettings.src,\n      height: calculatedImageSettings.h,\n      width: calculatedImageSettings.w,\n      x: calculatedImageSettings.x + margin,\n      y: calculatedImageSettings.y + margin,\n      preserveAspectRatio: \"none\"\n    });\n  }\n  const fgPath = generatePath(cells, margin);\n  return /* @__PURE__ */ React.createElement(\"svg\", __spreadValues({\n    height: size,\n    width: size,\n    viewBox: `0 0 ${numCells} ${numCells}`\n  }, otherProps), /* @__PURE__ */ React.createElement(\"path\", {\n    fill: bgColor,\n    d: `M0,0 h${numCells}v${numCells}H0z`,\n    shapeRendering: \"crispEdges\"\n  }), /* @__PURE__ */ React.createElement(\"path\", {\n    fill: fgColor,\n    d: fgPath,\n    shapeRendering: \"crispEdges\"\n  }), image);\n}\nvar QRCode = (props) => {\n  const _a = props, { renderAs } = _a, otherProps = __objRest(_a, [\"renderAs\"]);\n  if (renderAs === \"svg\") {\n    return /* @__PURE__ */ React.createElement(QRCodeSVG, __spreadValues({}, otherProps));\n  }\n  return /* @__PURE__ */ React.createElement(QRCodeCanvas, __spreadValues({}, otherProps));\n};\nexport {\n  QRCodeCanvas,\n  QRCodeSVG,\n  QRCode as default\n};\n","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _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; }; }();\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nvar Truncate = function (_Component) {\n    _inherits(Truncate, _Component);\n\n    function Truncate() {\n        var _ref;\n\n        _classCallCheck(this, Truncate);\n\n        for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n            args[_key] = arguments[_key];\n        }\n\n        var _this = _possibleConstructorReturn(this, (_ref = Truncate.__proto__ || Object.getPrototypeOf(Truncate)).call.apply(_ref, [this].concat(args)));\n\n        _this.state = {};\n        _this.styles = {\n            ellipsis: {\n                position: 'fixed',\n                visibility: 'hidden',\n                top: 0,\n                left: 0\n            }\n        };\n\n\n        _this.elements = {};\n\n        _this.onResize = _this.onResize.bind(_this);\n        _this.onTruncate = _this.onTruncate.bind(_this);\n        _this.calcTargetWidth = _this.calcTargetWidth.bind(_this);\n        _this.measureWidth = _this.measureWidth.bind(_this);\n        _this.getLines = _this.getLines.bind(_this);\n        _this.renderLine = _this.renderLine.bind(_this);\n        return _this;\n    }\n\n    _createClass(Truncate, [{\n        key: 'componentDidMount',\n        value: function componentDidMount() {\n            var text = this.elements.text,\n                calcTargetWidth = this.calcTargetWidth,\n                onResize = this.onResize;\n\n\n            var canvas = document.createElement('canvas');\n            this.canvasContext = canvas.getContext('2d');\n\n            calcTargetWidth(function () {\n                // Node not needed in document tree to read its content\n                if (text) {\n                    text.parentNode.removeChild(text);\n                }\n            });\n\n            window.addEventListener('resize', onResize);\n        }\n    }, {\n        key: 'componentDidUpdate',\n        value: function componentDidUpdate(prevProps) {\n            // Render was based on outdated refs and needs to be rerun\n            if (this.props.children !== prevProps.children) {\n                this.forceUpdate();\n            }\n\n            // If the width prop has changed, recalculate size of contents\n            if (this.props.width !== prevProps.width) {\n                this.calcTargetWidth();\n            }\n        }\n    }, {\n        key: 'componentWillUnmount',\n        value: function componentWillUnmount() {\n            var ellipsis = this.elements.ellipsis,\n                onResize = this.onResize,\n                timeout = this.timeout;\n\n\n            ellipsis.parentNode.removeChild(ellipsis);\n\n            window.removeEventListener('resize', onResize);\n\n            window.cancelAnimationFrame(timeout);\n        }\n\n        // Shim innerText to consistently break lines at <br/> but not at \\n\n\n    }, {\n        key: 'innerText',\n        value: function innerText(node) {\n            var div = document.createElement('div');\n            var contentKey = 'innerText' in window.HTMLElement.prototype ? 'innerText' : 'textContent';\n\n            div.innerHTML = node.innerHTML.replace(/\\r\\n|\\r|\\n/g, ' ');\n\n            var text = div[contentKey];\n\n            var test = document.createElement('div');\n            test.innerHTML = 'foo<br/>bar';\n\n            if (test[contentKey].replace(/\\r\\n|\\r/g, '\\n') !== 'foo\\nbar') {\n                div.innerHTML = div.innerHTML.replace(/<br.*?[\\/]?>/gi, '\\n');\n                text = div[contentKey];\n            }\n\n            return text;\n        }\n    }, {\n        key: 'onResize',\n        value: function onResize() {\n            this.calcTargetWidth();\n        }\n    }, {\n        key: 'onTruncate',\n        value: function onTruncate(didTruncate) {\n            var onTruncate = this.props.onTruncate;\n\n\n            if (typeof onTruncate === 'function') {\n                this.timeout = window.requestAnimationFrame(function () {\n                    onTruncate(didTruncate);\n                });\n            }\n        }\n    }, {\n        key: 'calcTargetWidth',\n        value: function calcTargetWidth(callback) {\n            var target = this.elements.target,\n                calcTargetWidth = this.calcTargetWidth,\n                canvasContext = this.canvasContext,\n                width = this.props.width;\n\n            // Calculation is no longer relevant, since node has been removed\n\n            if (!target) {\n                return;\n            }\n\n            var targetWidth = width ||\n            // Floor the result to deal with browser subpixel precision\n            Math.floor(target.parentNode.getBoundingClientRect().width);\n\n            // Delay calculation until parent node is inserted to the document\n            // Mounting order in React is ChildComponent, ParentComponent\n            if (!targetWidth) {\n                return window.requestAnimationFrame(function () {\n                    return calcTargetWidth(callback);\n                });\n            }\n\n            var style = window.getComputedStyle(target);\n\n            var font = [style['font-weight'], style['font-style'], style['font-size'], style['font-family']].join(' ');\n\n            canvasContext.font = font;\n\n            this.setState({\n                targetWidth: targetWidth\n            }, callback);\n        }\n    }, {\n        key: 'measureWidth',\n        value: function measureWidth(text) {\n            return this.canvasContext.measureText(text).width;\n        }\n    }, {\n        key: 'ellipsisWidth',\n        value: function ellipsisWidth(node) {\n            return node.offsetWidth;\n        }\n    }, {\n        key: 'trimRight',\n        value: function trimRight(text) {\n            return text.replace(/\\s+$/, '');\n        }\n    }, {\n        key: 'getLines',\n        value: function getLines() {\n            var elements = this.elements,\n                _props = this.props,\n                numLines = _props.lines,\n                ellipsis = _props.ellipsis,\n                trimWhitespace = _props.trimWhitespace,\n                targetWidth = this.state.targetWidth,\n                innerText = this.innerText,\n                measureWidth = this.measureWidth,\n                onTruncate = this.onTruncate,\n                trimRight = this.trimRight;\n\n\n            var lines = [];\n            var text = innerText(elements.text);\n            var textLines = text.split('\\n').map(function (line) {\n                return line.split(' ');\n            });\n            var didTruncate = true;\n            var ellipsisWidth = this.ellipsisWidth(this.elements.ellipsis);\n\n            for (var line = 1; line <= numLines; line++) {\n                var textWords = textLines[0];\n\n                // Handle newline\n                if (textWords.length === 0) {\n                    lines.push();\n                    textLines.shift();\n                    line--;\n                    continue;\n                }\n\n                var resultLine = textWords.join(' ');\n\n                if (measureWidth(resultLine) <= targetWidth) {\n                    if (textLines.length === 1) {\n                        // Line is end of text and fits without truncating\n                        didTruncate = false;\n\n                        lines.push(resultLine);\n                        break;\n                    }\n                }\n\n                if (line === numLines) {\n                    // Binary search determining the longest possible line inluding truncate string\n                    var textRest = textWords.join(' ');\n\n                    var lower = 0;\n                    var upper = textRest.length - 1;\n\n                    while (lower <= upper) {\n                        var middle = Math.floor((lower + upper) / 2);\n\n                        var testLine = textRest.slice(0, middle + 1);\n\n                        if (measureWidth(testLine) + ellipsisWidth <= targetWidth) {\n                            lower = middle + 1;\n                        } else {\n                            upper = middle - 1;\n                        }\n                    }\n\n                    var lastLineText = textRest.slice(0, lower);\n\n                    if (trimWhitespace) {\n                        lastLineText = trimRight(lastLineText);\n\n                        // Remove blank lines from the end of text\n                        while (!lastLineText.length && lines.length) {\n                            var prevLine = lines.pop();\n\n                            lastLineText = trimRight(prevLine);\n                        }\n                    }\n\n                    resultLine = React.createElement(\n                        'span',\n                        null,\n                        lastLineText,\n                        ellipsis\n                    );\n                } else {\n                    // Binary search determining when the line breaks\n                    var _lower = 0;\n                    var _upper = textWords.length - 1;\n\n                    while (_lower <= _upper) {\n                        var _middle = Math.floor((_lower + _upper) / 2);\n\n                        var _testLine = textWords.slice(0, _middle + 1).join(' ');\n\n                        if (measureWidth(_testLine) <= targetWidth) {\n                            _lower = _middle + 1;\n                        } else {\n                            _upper = _middle - 1;\n                        }\n                    }\n\n                    // The first word of this line is too long to fit it\n                    if (_lower === 0) {\n                        // Jump to processing of last line\n                        line = numLines - 1;\n                        continue;\n                    }\n\n                    resultLine = textWords.slice(0, _lower).join(' ');\n                    textLines[0].splice(0, _lower);\n                }\n\n                lines.push(resultLine);\n            }\n\n            onTruncate(didTruncate);\n\n            return lines;\n        }\n    }, {\n        key: 'renderLine',\n        value: function renderLine(line, i, arr) {\n            if (i === arr.length - 1) {\n                return React.createElement(\n                    'span',\n                    { key: i },\n                    line\n                );\n            } else {\n                var br = React.createElement('br', { key: i + 'br' });\n\n                if (line) {\n                    return [React.createElement(\n                        'span',\n                        { key: i },\n                        line\n                    ), br];\n                } else {\n                    return br;\n                }\n            }\n        }\n    }, {\n        key: 'render',\n        value: function render() {\n            var _this2 = this;\n\n            var target = this.elements.target,\n                _props2 = this.props,\n                children = _props2.children,\n                ellipsis = _props2.ellipsis,\n                lines = _props2.lines,\n                spanProps = _objectWithoutProperties(_props2, ['children', 'ellipsis', 'lines']),\n                targetWidth = this.state.targetWidth,\n                getLines = this.getLines,\n                renderLine = this.renderLine,\n                onTruncate = this.onTruncate;\n\n            var text = void 0;\n\n            var mounted = !!(target && targetWidth);\n\n            if (typeof window !== 'undefined' && mounted) {\n                if (lines > 0) {\n                    text = getLines().map(renderLine);\n                } else {\n                    text = children;\n\n                    onTruncate(false);\n                }\n            }\n\n            delete spanProps.onTruncate;\n            delete spanProps.trimWhitespace;\n\n            return React.createElement(\n                'span',\n                _extends({}, spanProps, { ref: function ref(targetEl) {\n                        _this2.elements.target = targetEl;\n                    } }),\n                React.createElement(\n                    'span',\n                    null,\n                    text\n                ),\n                React.createElement(\n                    'span',\n                    { ref: function ref(textEl) {\n                            _this2.elements.text = textEl;\n                        } },\n                    children\n                ),\n                React.createElement(\n                    'span',\n                    { ref: function ref(ellipsisEl) {\n                            _this2.elements.ellipsis = ellipsisEl;\n                        }, style: this.styles.ellipsis },\n                    ellipsis\n                )\n            );\n        }\n    }]);\n\n    return Truncate;\n}(Component);\n\nTruncate.propTypes = {\n    children: PropTypes.node,\n    ellipsis: PropTypes.node,\n    lines: PropTypes.oneOfType([PropTypes.oneOf([false]), PropTypes.number]),\n    trimWhitespace: PropTypes.bool,\n    width: PropTypes.number,\n    onTruncate: PropTypes.func\n};\nTruncate.defaultProps = {\n    children: '',\n    ellipsis: '…',\n    lines: 1,\n    trimWhitespace: false,\n    width: 0\n};\nexport default Truncate;\n;\n","/* smoothscroll v0.4.4 - 2019 - Dustan Kasten, Jeremias Menichelli - MIT License */\n(function () {\n  'use strict';\n\n  // polyfill\n  function polyfill() {\n    // aliases\n    var w = window;\n    var d = document;\n\n    // return if scroll behavior is supported and polyfill is not forced\n    if (\n      'scrollBehavior' in d.documentElement.style &&\n      w.__forceSmoothScrollPolyfill__ !== true\n    ) {\n      return;\n    }\n\n    // globals\n    var Element = w.HTMLElement || w.Element;\n    var SCROLL_TIME = 468;\n\n    // object gathering original scroll methods\n    var original = {\n      scroll: w.scroll || w.scrollTo,\n      scrollBy: w.scrollBy,\n      elementScroll: Element.prototype.scroll || scrollElement,\n      scrollIntoView: Element.prototype.scrollIntoView\n    };\n\n    // define timing method\n    var now =\n      w.performance && w.performance.now\n        ? w.performance.now.bind(w.performance)\n        : Date.now;\n\n    /**\n     * indicates if a the current browser is made by Microsoft\n     * @method isMicrosoftBrowser\n     * @param {String} userAgent\n     * @returns {Boolean}\n     */\n    function isMicrosoftBrowser(userAgent) {\n      var userAgentPatterns = ['MSIE ', 'Trident/', 'Edge/'];\n\n      return new RegExp(userAgentPatterns.join('|')).test(userAgent);\n    }\n\n    /*\n     * IE has rounding bug rounding down clientHeight and clientWidth and\n     * rounding up scrollHeight and scrollWidth causing false positives\n     * on hasScrollableSpace\n     */\n    var ROUNDING_TOLERANCE = isMicrosoftBrowser(w.navigator.userAgent) ? 1 : 0;\n\n    /**\n     * changes scroll position inside an element\n     * @method scrollElement\n     * @param {Number} x\n     * @param {Number} y\n     * @returns {undefined}\n     */\n    function scrollElement(x, y) {\n      this.scrollLeft = x;\n      this.scrollTop = y;\n    }\n\n    /**\n     * returns result of applying ease math function to a number\n     * @method ease\n     * @param {Number} k\n     * @returns {Number}\n     */\n    function ease(k) {\n      return 0.5 * (1 - Math.cos(Math.PI * k));\n    }\n\n    /**\n     * indicates if a smooth behavior should be applied\n     * @method shouldBailOut\n     * @param {Number|Object} firstArg\n     * @returns {Boolean}\n     */\n    function shouldBailOut(firstArg) {\n      if (\n        firstArg === null ||\n        typeof firstArg !== 'object' ||\n        firstArg.behavior === undefined ||\n        firstArg.behavior === 'auto' ||\n        firstArg.behavior === 'instant'\n      ) {\n        // first argument is not an object/null\n        // or behavior is auto, instant or undefined\n        return true;\n      }\n\n      if (typeof firstArg === 'object' && firstArg.behavior === 'smooth') {\n        // first argument is an object and behavior is smooth\n        return false;\n      }\n\n      // throw error when behavior is not supported\n      throw new TypeError(\n        'behavior member of ScrollOptions ' +\n          firstArg.behavior +\n          ' is not a valid value for enumeration ScrollBehavior.'\n      );\n    }\n\n    /**\n     * indicates if an element has scrollable space in the provided axis\n     * @method hasScrollableSpace\n     * @param {Node} el\n     * @param {String} axis\n     * @returns {Boolean}\n     */\n    function hasScrollableSpace(el, axis) {\n      if (axis === 'Y') {\n        return el.clientHeight + ROUNDING_TOLERANCE < el.scrollHeight;\n      }\n\n      if (axis === 'X') {\n        return el.clientWidth + ROUNDING_TOLERANCE < el.scrollWidth;\n      }\n    }\n\n    /**\n     * indicates if an element has a scrollable overflow property in the axis\n     * @method canOverflow\n     * @param {Node} el\n     * @param {String} axis\n     * @returns {Boolean}\n     */\n    function canOverflow(el, axis) {\n      var overflowValue = w.getComputedStyle(el, null)['overflow' + axis];\n\n      return overflowValue === 'auto' || overflowValue === 'scroll';\n    }\n\n    /**\n     * indicates if an element can be scrolled in either axis\n     * @method isScrollable\n     * @param {Node} el\n     * @param {String} axis\n     * @returns {Boolean}\n     */\n    function isScrollable(el) {\n      var isScrollableY = hasScrollableSpace(el, 'Y') && canOverflow(el, 'Y');\n      var isScrollableX = hasScrollableSpace(el, 'X') && canOverflow(el, 'X');\n\n      return isScrollableY || isScrollableX;\n    }\n\n    /**\n     * finds scrollable parent of an element\n     * @method findScrollableParent\n     * @param {Node} el\n     * @returns {Node} el\n     */\n    function findScrollableParent(el) {\n      while (el !== d.body && isScrollable(el) === false) {\n        el = el.parentNode || el.host;\n      }\n\n      return el;\n    }\n\n    /**\n     * self invoked function that, given a context, steps through scrolling\n     * @method step\n     * @param {Object} context\n     * @returns {undefined}\n     */\n    function step(context) {\n      var time = now();\n      var value;\n      var currentX;\n      var currentY;\n      var elapsed = (time - context.startTime) / SCROLL_TIME;\n\n      // avoid elapsed times higher than one\n      elapsed = elapsed > 1 ? 1 : elapsed;\n\n      // apply easing to elapsed time\n      value = ease(elapsed);\n\n      currentX = context.startX + (context.x - context.startX) * value;\n      currentY = context.startY + (context.y - context.startY) * value;\n\n      context.method.call(context.scrollable, currentX, currentY);\n\n      // scroll more if we have not reached our destination\n      if (currentX !== context.x || currentY !== context.y) {\n        w.requestAnimationFrame(step.bind(w, context));\n      }\n    }\n\n    /**\n     * scrolls window or element with a smooth behavior\n     * @method smoothScroll\n     * @param {Object|Node} el\n     * @param {Number} x\n     * @param {Number} y\n     * @returns {undefined}\n     */\n    function smoothScroll(el, x, y) {\n      var scrollable;\n      var startX;\n      var startY;\n      var method;\n      var startTime = now();\n\n      // define scroll context\n      if (el === d.body) {\n        scrollable = w;\n        startX = w.scrollX || w.pageXOffset;\n        startY = w.scrollY || w.pageYOffset;\n        method = original.scroll;\n      } else {\n        scrollable = el;\n        startX = el.scrollLeft;\n        startY = el.scrollTop;\n        method = scrollElement;\n      }\n\n      // scroll looping over a frame\n      step({\n        scrollable: scrollable,\n        method: method,\n        startTime: startTime,\n        startX: startX,\n        startY: startY,\n        x: x,\n        y: y\n      });\n    }\n\n    // ORIGINAL METHODS OVERRIDES\n    // w.scroll and w.scrollTo\n    w.scroll = w.scrollTo = function() {\n      // avoid action when no arguments are passed\n      if (arguments[0] === undefined) {\n        return;\n      }\n\n      // avoid smooth behavior if not required\n      if (shouldBailOut(arguments[0]) === true) {\n        original.scroll.call(\n          w,\n          arguments[0].left !== undefined\n            ? arguments[0].left\n            : typeof arguments[0] !== 'object'\n              ? arguments[0]\n              : w.scrollX || w.pageXOffset,\n          // use top prop, second argument if present or fallback to scrollY\n          arguments[0].top !== undefined\n            ? arguments[0].top\n            : arguments[1] !== undefined\n              ? arguments[1]\n              : w.scrollY || w.pageYOffset\n        );\n\n        return;\n      }\n\n      // LET THE SMOOTHNESS BEGIN!\n      smoothScroll.call(\n        w,\n        d.body,\n        arguments[0].left !== undefined\n          ? ~~arguments[0].left\n          : w.scrollX || w.pageXOffset,\n        arguments[0].top !== undefined\n          ? ~~arguments[0].top\n          : w.scrollY || w.pageYOffset\n      );\n    };\n\n    // w.scrollBy\n    w.scrollBy = function() {\n      // avoid action when no arguments are passed\n      if (arguments[0] === undefined) {\n        return;\n      }\n\n      // avoid smooth behavior if not required\n      if (shouldBailOut(arguments[0])) {\n        original.scrollBy.call(\n          w,\n          arguments[0].left !== undefined\n            ? arguments[0].left\n            : typeof arguments[0] !== 'object' ? arguments[0] : 0,\n          arguments[0].top !== undefined\n            ? arguments[0].top\n            : arguments[1] !== undefined ? arguments[1] : 0\n        );\n\n        return;\n      }\n\n      // LET THE SMOOTHNESS BEGIN!\n      smoothScroll.call(\n        w,\n        d.body,\n        ~~arguments[0].left + (w.scrollX || w.pageXOffset),\n        ~~arguments[0].top + (w.scrollY || w.pageYOffset)\n      );\n    };\n\n    // Element.prototype.scroll and Element.prototype.scrollTo\n    Element.prototype.scroll = Element.prototype.scrollTo = function() {\n      // avoid action when no arguments are passed\n      if (arguments[0] === undefined) {\n        return;\n      }\n\n      // avoid smooth behavior if not required\n      if (shouldBailOut(arguments[0]) === true) {\n        // if one number is passed, throw error to match Firefox implementation\n        if (typeof arguments[0] === 'number' && arguments[1] === undefined) {\n          throw new SyntaxError('Value could not be converted');\n        }\n\n        original.elementScroll.call(\n          this,\n          // use left prop, first number argument or fallback to scrollLeft\n          arguments[0].left !== undefined\n            ? ~~arguments[0].left\n            : typeof arguments[0] !== 'object' ? ~~arguments[0] : this.scrollLeft,\n          // use top prop, second argument or fallback to scrollTop\n          arguments[0].top !== undefined\n            ? ~~arguments[0].top\n            : arguments[1] !== undefined ? ~~arguments[1] : this.scrollTop\n        );\n\n        return;\n      }\n\n      var left = arguments[0].left;\n      var top = arguments[0].top;\n\n      // LET THE SMOOTHNESS BEGIN!\n      smoothScroll.call(\n        this,\n        this,\n        typeof left === 'undefined' ? this.scrollLeft : ~~left,\n        typeof top === 'undefined' ? this.scrollTop : ~~top\n      );\n    };\n\n    // Element.prototype.scrollBy\n    Element.prototype.scrollBy = function() {\n      // avoid action when no arguments are passed\n      if (arguments[0] === undefined) {\n        return;\n      }\n\n      // avoid smooth behavior if not required\n      if (shouldBailOut(arguments[0]) === true) {\n        original.elementScroll.call(\n          this,\n          arguments[0].left !== undefined\n            ? ~~arguments[0].left + this.scrollLeft\n            : ~~arguments[0] + this.scrollLeft,\n          arguments[0].top !== undefined\n            ? ~~arguments[0].top + this.scrollTop\n            : ~~arguments[1] + this.scrollTop\n        );\n\n        return;\n      }\n\n      this.scroll({\n        left: ~~arguments[0].left + this.scrollLeft,\n        top: ~~arguments[0].top + this.scrollTop,\n        behavior: arguments[0].behavior\n      });\n    };\n\n    // Element.prototype.scrollIntoView\n    Element.prototype.scrollIntoView = function() {\n      // avoid smooth behavior if not required\n      if (shouldBailOut(arguments[0]) === true) {\n        original.scrollIntoView.call(\n          this,\n          arguments[0] === undefined ? true : arguments[0]\n        );\n\n        return;\n      }\n\n      // LET THE SMOOTHNESS BEGIN!\n      var scrollableParent = findScrollableParent(this);\n      var parentRects = scrollableParent.getBoundingClientRect();\n      var clientRects = this.getBoundingClientRect();\n\n      if (scrollableParent !== d.body) {\n        // reveal element inside parent\n        smoothScroll.call(\n          this,\n          scrollableParent,\n          scrollableParent.scrollLeft + clientRects.left - parentRects.left,\n          scrollableParent.scrollTop + clientRects.top - parentRects.top\n        );\n\n        // reveal parent in viewport unless is fixed\n        if (w.getComputedStyle(scrollableParent).position !== 'fixed') {\n          w.scrollBy({\n            left: parentRects.left,\n            top: parentRects.top,\n            behavior: 'smooth'\n          });\n        }\n      } else {\n        // reveal element in viewport\n        w.scrollBy({\n          left: clientRects.left,\n          top: clientRects.top,\n          behavior: 'smooth'\n        });\n      }\n    };\n  }\n\n  if (typeof exports === 'object' && typeof module !== 'undefined') {\n    // commonjs\n    module.exports = { polyfill: polyfill };\n  } else {\n    // global\n    polyfill();\n  }\n\n}());\n","(function(self) {\n  'use strict';\n\n  if (self.fetch) {\n    return\n  }\n\n  var support = {\n    searchParams: 'URLSearchParams' in self,\n    iterable: 'Symbol' in self && 'iterator' in Symbol,\n    blob: 'FileReader' in self && 'Blob' in self && (function() {\n      try {\n        new Blob()\n        return true\n      } catch(e) {\n        return false\n      }\n    })(),\n    formData: 'FormData' in self,\n    arrayBuffer: 'ArrayBuffer' in self\n  }\n\n  if (support.arrayBuffer) {\n    var viewClasses = [\n      '[object Int8Array]',\n      '[object Uint8Array]',\n      '[object Uint8ClampedArray]',\n      '[object Int16Array]',\n      '[object Uint16Array]',\n      '[object Int32Array]',\n      '[object Uint32Array]',\n      '[object Float32Array]',\n      '[object Float64Array]'\n    ]\n\n    var isDataView = function(obj) {\n      return obj && DataView.prototype.isPrototypeOf(obj)\n    }\n\n    var isArrayBufferView = ArrayBuffer.isView || function(obj) {\n      return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n    }\n  }\n\n  function normalizeName(name) {\n    if (typeof name !== 'string') {\n      name = String(name)\n    }\n    if (/[^a-z0-9\\-#$%&'*+.\\^_`|~]/i.test(name)) {\n      throw new TypeError('Invalid character in header field name')\n    }\n    return name.toLowerCase()\n  }\n\n  function normalizeValue(value) {\n    if (typeof value !== 'string') {\n      value = String(value)\n    }\n    return value\n  }\n\n  // Build a destructive iterator for the value list\n  function iteratorFor(items) {\n    var iterator = {\n      next: function() {\n        var value = items.shift()\n        return {done: value === undefined, value: value}\n      }\n    }\n\n    if (support.iterable) {\n      iterator[Symbol.iterator] = function() {\n        return iterator\n      }\n    }\n\n    return iterator\n  }\n\n  function Headers(headers) {\n    this.map = {}\n\n    if (headers instanceof Headers) {\n      headers.forEach(function(value, name) {\n        this.append(name, value)\n      }, this)\n    } else if (Array.isArray(headers)) {\n      headers.forEach(function(header) {\n        this.append(header[0], header[1])\n      }, this)\n    } else if (headers) {\n      Object.getOwnPropertyNames(headers).forEach(function(name) {\n        this.append(name, headers[name])\n      }, this)\n    }\n  }\n\n  Headers.prototype.append = function(name, value) {\n    name = normalizeName(name)\n    value = normalizeValue(value)\n    var oldValue = this.map[name]\n    this.map[name] = oldValue ? oldValue+','+value : value\n  }\n\n  Headers.prototype['delete'] = function(name) {\n    delete this.map[normalizeName(name)]\n  }\n\n  Headers.prototype.get = function(name) {\n    name = normalizeName(name)\n    return this.has(name) ? this.map[name] : null\n  }\n\n  Headers.prototype.has = function(name) {\n    return this.map.hasOwnProperty(normalizeName(name))\n  }\n\n  Headers.prototype.set = function(name, value) {\n    this.map[normalizeName(name)] = normalizeValue(value)\n  }\n\n  Headers.prototype.forEach = function(callback, thisArg) {\n    for (var name in this.map) {\n      if (this.map.hasOwnProperty(name)) {\n        callback.call(thisArg, this.map[name], name, this)\n      }\n    }\n  }\n\n  Headers.prototype.keys = function() {\n    var items = []\n    this.forEach(function(value, name) { items.push(name) })\n    return iteratorFor(items)\n  }\n\n  Headers.prototype.values = function() {\n    var items = []\n    this.forEach(function(value) { items.push(value) })\n    return iteratorFor(items)\n  }\n\n  Headers.prototype.entries = function() {\n    var items = []\n    this.forEach(function(value, name) { items.push([name, value]) })\n    return iteratorFor(items)\n  }\n\n  if (support.iterable) {\n    Headers.prototype[Symbol.iterator] = Headers.prototype.entries\n  }\n\n  function consumed(body) {\n    if (body.bodyUsed) {\n      return Promise.reject(new TypeError('Already read'))\n    }\n    body.bodyUsed = true\n  }\n\n  function fileReaderReady(reader) {\n    return new Promise(function(resolve, reject) {\n      reader.onload = function() {\n        resolve(reader.result)\n      }\n      reader.onerror = function() {\n        reject(reader.error)\n      }\n    })\n  }\n\n  function readBlobAsArrayBuffer(blob) {\n    var reader = new FileReader()\n    var promise = fileReaderReady(reader)\n    reader.readAsArrayBuffer(blob)\n    return promise\n  }\n\n  function readBlobAsText(blob) {\n    var reader = new FileReader()\n    var promise = fileReaderReady(reader)\n    reader.readAsText(blob)\n    return promise\n  }\n\n  function readArrayBufferAsText(buf) {\n    var view = new Uint8Array(buf)\n    var chars = new Array(view.length)\n\n    for (var i = 0; i < view.length; i++) {\n      chars[i] = String.fromCharCode(view[i])\n    }\n    return chars.join('')\n  }\n\n  function bufferClone(buf) {\n    if (buf.slice) {\n      return buf.slice(0)\n    } else {\n      var view = new Uint8Array(buf.byteLength)\n      view.set(new Uint8Array(buf))\n      return view.buffer\n    }\n  }\n\n  function Body() {\n    this.bodyUsed = false\n\n    this._initBody = function(body) {\n      this._bodyInit = body\n      if (!body) {\n        this._bodyText = ''\n      } else if (typeof body === 'string') {\n        this._bodyText = body\n      } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n        this._bodyBlob = body\n      } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n        this._bodyFormData = body\n      } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n        this._bodyText = body.toString()\n      } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n        this._bodyArrayBuffer = bufferClone(body.buffer)\n        // IE 10-11 can't handle a DataView body.\n        this._bodyInit = new Blob([this._bodyArrayBuffer])\n      } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n        this._bodyArrayBuffer = bufferClone(body)\n      } else {\n        throw new Error('unsupported BodyInit type')\n      }\n\n      if (!this.headers.get('content-type')) {\n        if (typeof body === 'string') {\n          this.headers.set('content-type', 'text/plain;charset=UTF-8')\n        } else if (this._bodyBlob && this._bodyBlob.type) {\n          this.headers.set('content-type', this._bodyBlob.type)\n        } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n          this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8')\n        }\n      }\n    }\n\n    if (support.blob) {\n      this.blob = function() {\n        var rejected = consumed(this)\n        if (rejected) {\n          return rejected\n        }\n\n        if (this._bodyBlob) {\n          return Promise.resolve(this._bodyBlob)\n        } else if (this._bodyArrayBuffer) {\n          return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n        } else if (this._bodyFormData) {\n          throw new Error('could not read FormData body as blob')\n        } else {\n          return Promise.resolve(new Blob([this._bodyText]))\n        }\n      }\n\n      this.arrayBuffer = function() {\n        if (this._bodyArrayBuffer) {\n          return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n        } else {\n          return this.blob().then(readBlobAsArrayBuffer)\n        }\n      }\n    }\n\n    this.text = function() {\n      var rejected = consumed(this)\n      if (rejected) {\n        return rejected\n      }\n\n      if (this._bodyBlob) {\n        return readBlobAsText(this._bodyBlob)\n      } else if (this._bodyArrayBuffer) {\n        return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n      } else if (this._bodyFormData) {\n        throw new Error('could not read FormData body as text')\n      } else {\n        return Promise.resolve(this._bodyText)\n      }\n    }\n\n    if (support.formData) {\n      this.formData = function() {\n        return this.text().then(decode)\n      }\n    }\n\n    this.json = function() {\n      return this.text().then(JSON.parse)\n    }\n\n    return this\n  }\n\n  // HTTP methods whose capitalization should be normalized\n  var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']\n\n  function normalizeMethod(method) {\n    var upcased = method.toUpperCase()\n    return (methods.indexOf(upcased) > -1) ? upcased : method\n  }\n\n  function Request(input, options) {\n    options = options || {}\n    var body = options.body\n\n    if (input instanceof Request) {\n      if (input.bodyUsed) {\n        throw new TypeError('Already read')\n      }\n      this.url = input.url\n      this.credentials = input.credentials\n      if (!options.headers) {\n        this.headers = new Headers(input.headers)\n      }\n      this.method = input.method\n      this.mode = input.mode\n      if (!body && input._bodyInit != null) {\n        body = input._bodyInit\n        input.bodyUsed = true\n      }\n    } else {\n      this.url = String(input)\n    }\n\n    this.credentials = options.credentials || this.credentials || 'omit'\n    if (options.headers || !this.headers) {\n      this.headers = new Headers(options.headers)\n    }\n    this.method = normalizeMethod(options.method || this.method || 'GET')\n    this.mode = options.mode || this.mode || null\n    this.referrer = null\n\n    if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n      throw new TypeError('Body not allowed for GET or HEAD requests')\n    }\n    this._initBody(body)\n  }\n\n  Request.prototype.clone = function() {\n    return new Request(this, { body: this._bodyInit })\n  }\n\n  function decode(body) {\n    var form = new FormData()\n    body.trim().split('&').forEach(function(bytes) {\n      if (bytes) {\n        var split = bytes.split('=')\n        var name = split.shift().replace(/\\+/g, ' ')\n        var value = split.join('=').replace(/\\+/g, ' ')\n        form.append(decodeURIComponent(name), decodeURIComponent(value))\n      }\n    })\n    return form\n  }\n\n  function parseHeaders(rawHeaders) {\n    var headers = new Headers()\n    rawHeaders.split(/\\r?\\n/).forEach(function(line) {\n      var parts = line.split(':')\n      var key = parts.shift().trim()\n      if (key) {\n        var value = parts.join(':').trim()\n        headers.append(key, value)\n      }\n    })\n    return headers\n  }\n\n  Body.call(Request.prototype)\n\n  function Response(bodyInit, options) {\n    if (!options) {\n      options = {}\n    }\n\n    this.type = 'default'\n    this.status = 'status' in options ? options.status : 200\n    this.ok = this.status >= 200 && this.status < 300\n    this.statusText = 'statusText' in options ? options.statusText : 'OK'\n    this.headers = new Headers(options.headers)\n    this.url = options.url || ''\n    this._initBody(bodyInit)\n  }\n\n  Body.call(Response.prototype)\n\n  Response.prototype.clone = function() {\n    return new Response(this._bodyInit, {\n      status: this.status,\n      statusText: this.statusText,\n      headers: new Headers(this.headers),\n      url: this.url\n    })\n  }\n\n  Response.error = function() {\n    var response = new Response(null, {status: 0, statusText: ''})\n    response.type = 'error'\n    return response\n  }\n\n  var redirectStatuses = [301, 302, 303, 307, 308]\n\n  Response.redirect = function(url, status) {\n    if (redirectStatuses.indexOf(status) === -1) {\n      throw new RangeError('Invalid status code')\n    }\n\n    return new Response(null, {status: status, headers: {location: url}})\n  }\n\n  self.Headers = Headers\n  self.Request = Request\n  self.Response = Response\n\n  self.fetch = function(input, init) {\n    return new Promise(function(resolve, reject) {\n      var request = new Request(input, init)\n      var xhr = new XMLHttpRequest()\n\n      xhr.onload = function() {\n        var options = {\n          status: xhr.status,\n          statusText: xhr.statusText,\n          headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n        }\n        options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL')\n        var body = 'response' in xhr ? xhr.response : xhr.responseText\n        resolve(new Response(body, options))\n      }\n\n      xhr.onerror = function() {\n        reject(new TypeError('Network request failed'))\n      }\n\n      xhr.ontimeout = function() {\n        reject(new TypeError('Network request failed'))\n      }\n\n      xhr.open(request.method, request.url, true)\n\n      if (request.credentials === 'include') {\n        xhr.withCredentials = true\n      }\n\n      if ('responseType' in xhr && support.blob) {\n        xhr.responseType = 'blob'\n      }\n\n      request.headers.forEach(function(value, name) {\n        xhr.setRequestHeader(name, value)\n      })\n\n      xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)\n    })\n  }\n  self.fetch.polyfill = true\n})(typeof self !== 'undefined' ? self : this);\n","var commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\n\n\n\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nvar npo_src = createCommonjsModule(function (module) {\n/*! Native Promise Only\n    v0.8.1 (c) Kyle Simpson\n    MIT License: http://getify.mit-license.org\n*/\n\n(function UMD(name,context,definition){\n\t// special form of UMD for polyfilling across evironments\n\tcontext[name] = context[name] || definition();\n\tif ('object' != \"undefined\" && module.exports) { module.exports = context[name]; }\n\telse if (typeof undefined == \"function\" && undefined.amd) { undefined(function $AMD$(){ return context[name]; }); }\n})(\"Promise\",typeof commonjsGlobal != \"undefined\" ? commonjsGlobal : commonjsGlobal,function DEF(){\n\t/*jshint validthis:true */\n\tvar builtInProp, cycle, scheduling_queue,\n\t\tToString = Object.prototype.toString,\n\t\ttimer = (typeof setImmediate != \"undefined\") ?\n\t\t\tfunction timer(fn) { return setImmediate(fn); } :\n\t\t\tsetTimeout;\n\n\t// dammit, IE8.\n\ttry {\n\t\tObject.defineProperty({},\"x\",{});\n\t\tbuiltInProp = function builtInProp(obj,name,val,config) {\n\t\t\treturn Object.defineProperty(obj,name,{\n\t\t\t\tvalue: val,\n\t\t\t\twritable: true,\n\t\t\t\tconfigurable: config !== false\n\t\t\t});\n\t\t};\n\t}\n\tcatch (err) {\n\t\tbuiltInProp = function builtInProp(obj,name,val) {\n\t\t\tobj[name] = val;\n\t\t\treturn obj;\n\t\t};\n\t}\n\n\t// Note: using a queue instead of array for efficiency\n\tscheduling_queue = (function Queue() {\n\t\tvar first, last, item;\n\n\t\tfunction Item(fn,self) {\n\t\t\tthis.fn = fn;\n\t\t\tthis.self = self;\n\t\t\tthis.next = void 0;\n\t\t}\n\n\t\treturn {\n\t\t\tadd: function add(fn,self) {\n\t\t\t\titem = new Item(fn,self);\n\t\t\t\tif (last) {\n\t\t\t\t\tlast.next = item;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tfirst = item;\n\t\t\t\t}\n\t\t\t\tlast = item;\n\t\t\t\titem = void 0;\n\t\t\t},\n\t\t\tdrain: function drain() {\n\t\t\t\tvar f = first;\n\t\t\t\tfirst = last = cycle = void 0;\n\n\t\t\t\twhile (f) {\n\t\t\t\t\tf.fn.call(f.self);\n\t\t\t\t\tf = f.next;\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t})();\n\n\tfunction schedule(fn,self) {\n\t\tscheduling_queue.add(fn,self);\n\t\tif (!cycle) {\n\t\t\tcycle = timer(scheduling_queue.drain);\n\t\t}\n\t}\n\n\t// promise duck typing\n\tfunction isThenable(o) {\n\t\tvar _then, o_type = typeof o;\n\n\t\tif (o != null &&\n\t\t\t(\n\t\t\t\to_type == \"object\" || o_type == \"function\"\n\t\t\t)\n\t\t) {\n\t\t\t_then = o.then;\n\t\t}\n\t\treturn typeof _then == \"function\" ? _then : false;\n\t}\n\n\tfunction notify() {\n\t\tfor (var i=0; i<this.chain.length; i++) {\n\t\t\tnotifyIsolated(\n\t\t\t\tthis,\n\t\t\t\t(this.state === 1) ? this.chain[i].success : this.chain[i].failure,\n\t\t\t\tthis.chain[i]\n\t\t\t);\n\t\t}\n\t\tthis.chain.length = 0;\n\t}\n\n\t// NOTE: This is a separate function to isolate\n\t// the `try..catch` so that other code can be\n\t// optimized better\n\tfunction notifyIsolated(self,cb,chain) {\n\t\tvar ret, _then;\n\t\ttry {\n\t\t\tif (cb === false) {\n\t\t\t\tchain.reject(self.msg);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (cb === true) {\n\t\t\t\t\tret = self.msg;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tret = cb.call(void 0,self.msg);\n\t\t\t\t}\n\n\t\t\t\tif (ret === chain.promise) {\n\t\t\t\t\tchain.reject(TypeError(\"Promise-chain cycle\"));\n\t\t\t\t}\n\t\t\t\telse if (_then = isThenable(ret)) {\n\t\t\t\t\t_then.call(ret,chain.resolve,chain.reject);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tchain.resolve(ret);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (err) {\n\t\t\tchain.reject(err);\n\t\t}\n\t}\n\n\tfunction resolve(msg) {\n\t\tvar _then, self = this;\n\n\t\t// already triggered?\n\t\tif (self.triggered) { return; }\n\n\t\tself.triggered = true;\n\n\t\t// unwrap\n\t\tif (self.def) {\n\t\t\tself = self.def;\n\t\t}\n\n\t\ttry {\n\t\t\tif (_then = isThenable(msg)) {\n\t\t\t\tschedule(function(){\n\t\t\t\t\tvar def_wrapper = new MakeDefWrapper(self);\n\t\t\t\t\ttry {\n\t\t\t\t\t\t_then.call(msg,\n\t\t\t\t\t\t\tfunction $resolve$(){ resolve.apply(def_wrapper,arguments); },\n\t\t\t\t\t\t\tfunction $reject$(){ reject.apply(def_wrapper,arguments); }\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tcatch (err) {\n\t\t\t\t\t\treject.call(def_wrapper,err);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\telse {\n\t\t\t\tself.msg = msg;\n\t\t\t\tself.state = 1;\n\t\t\t\tif (self.chain.length > 0) {\n\t\t\t\t\tschedule(notify,self);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (err) {\n\t\t\treject.call(new MakeDefWrapper(self),err);\n\t\t}\n\t}\n\n\tfunction reject(msg) {\n\t\tvar self = this;\n\n\t\t// already triggered?\n\t\tif (self.triggered) { return; }\n\n\t\tself.triggered = true;\n\n\t\t// unwrap\n\t\tif (self.def) {\n\t\t\tself = self.def;\n\t\t}\n\n\t\tself.msg = msg;\n\t\tself.state = 2;\n\t\tif (self.chain.length > 0) {\n\t\t\tschedule(notify,self);\n\t\t}\n\t}\n\n\tfunction iteratePromises(Constructor,arr,resolver,rejecter) {\n\t\tfor (var idx=0; idx<arr.length; idx++) {\n\t\t\t(function IIFE(idx){\n\t\t\t\tConstructor.resolve(arr[idx])\n\t\t\t\t.then(\n\t\t\t\t\tfunction $resolver$(msg){\n\t\t\t\t\t\tresolver(idx,msg);\n\t\t\t\t\t},\n\t\t\t\t\trejecter\n\t\t\t\t);\n\t\t\t})(idx);\n\t\t}\n\t}\n\n\tfunction MakeDefWrapper(self) {\n\t\tthis.def = self;\n\t\tthis.triggered = false;\n\t}\n\n\tfunction MakeDef(self) {\n\t\tthis.promise = self;\n\t\tthis.state = 0;\n\t\tthis.triggered = false;\n\t\tthis.chain = [];\n\t\tthis.msg = void 0;\n\t}\n\n\tfunction Promise(executor) {\n\t\tif (typeof executor != \"function\") {\n\t\t\tthrow TypeError(\"Not a function\");\n\t\t}\n\n\t\tif (this.__NPO__ !== 0) {\n\t\t\tthrow TypeError(\"Not a promise\");\n\t\t}\n\n\t\t// instance shadowing the inherited \"brand\"\n\t\t// to signal an already \"initialized\" promise\n\t\tthis.__NPO__ = 1;\n\n\t\tvar def = new MakeDef(this);\n\n\t\tthis[\"then\"] = function then(success,failure) {\n\t\t\tvar o = {\n\t\t\t\tsuccess: typeof success == \"function\" ? success : true,\n\t\t\t\tfailure: typeof failure == \"function\" ? failure : false\n\t\t\t};\n\t\t\t// Note: `then(..)` itself can be borrowed to be used against\n\t\t\t// a different promise constructor for making the chained promise,\n\t\t\t// by substituting a different `this` binding.\n\t\t\to.promise = new this.constructor(function extractChain(resolve,reject) {\n\t\t\t\tif (typeof resolve != \"function\" || typeof reject != \"function\") {\n\t\t\t\t\tthrow TypeError(\"Not a function\");\n\t\t\t\t}\n\n\t\t\t\to.resolve = resolve;\n\t\t\t\to.reject = reject;\n\t\t\t});\n\t\t\tdef.chain.push(o);\n\n\t\t\tif (def.state !== 0) {\n\t\t\t\tschedule(notify,def);\n\t\t\t}\n\n\t\t\treturn o.promise;\n\t\t};\n\t\tthis[\"catch\"] = function $catch$(failure) {\n\t\t\treturn this.then(void 0,failure);\n\t\t};\n\n\t\ttry {\n\t\t\texecutor.call(\n\t\t\t\tvoid 0,\n\t\t\t\tfunction publicResolve(msg){\n\t\t\t\t\tresolve.call(def,msg);\n\t\t\t\t},\n\t\t\t\tfunction publicReject(msg) {\n\t\t\t\t\treject.call(def,msg);\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t\tcatch (err) {\n\t\t\treject.call(def,err);\n\t\t}\n\t}\n\n\tvar PromisePrototype = builtInProp({},\"constructor\",Promise,\n\t\t/*configurable=*/false\n\t);\n\n\t// Note: Android 4 cannot use `Object.defineProperty(..)` here\n\tPromise.prototype = PromisePrototype;\n\n\t// built-in \"brand\" to signal an \"uninitialized\" promise\n\tbuiltInProp(PromisePrototype,\"__NPO__\",0,\n\t\t/*configurable=*/false\n\t);\n\n\tbuiltInProp(Promise,\"resolve\",function Promise$resolve(msg) {\n\t\tvar Constructor = this;\n\n\t\t// spec mandated checks\n\t\t// note: best \"isPromise\" check that's practical for now\n\t\tif (msg && typeof msg == \"object\" && msg.__NPO__ === 1) {\n\t\t\treturn msg;\n\t\t}\n\n\t\treturn new Constructor(function executor(resolve,reject){\n\t\t\tif (typeof resolve != \"function\" || typeof reject != \"function\") {\n\t\t\t\tthrow TypeError(\"Not a function\");\n\t\t\t}\n\n\t\t\tresolve(msg);\n\t\t});\n\t});\n\n\tbuiltInProp(Promise,\"reject\",function Promise$reject(msg) {\n\t\treturn new this(function executor(resolve,reject){\n\t\t\tif (typeof resolve != \"function\" || typeof reject != \"function\") {\n\t\t\t\tthrow TypeError(\"Not a function\");\n\t\t\t}\n\n\t\t\treject(msg);\n\t\t});\n\t});\n\n\tbuiltInProp(Promise,\"all\",function Promise$all(arr) {\n\t\tvar Constructor = this;\n\n\t\t// spec mandated checks\n\t\tif (ToString.call(arr) != \"[object Array]\") {\n\t\t\treturn Constructor.reject(TypeError(\"Not an array\"));\n\t\t}\n\t\tif (arr.length === 0) {\n\t\t\treturn Constructor.resolve([]);\n\t\t}\n\n\t\treturn new Constructor(function executor(resolve,reject){\n\t\t\tif (typeof resolve != \"function\" || typeof reject != \"function\") {\n\t\t\t\tthrow TypeError(\"Not a function\");\n\t\t\t}\n\n\t\t\tvar len = arr.length, msgs = Array(len), count = 0;\n\n\t\t\titeratePromises(Constructor,arr,function resolver(idx,msg) {\n\t\t\t\tmsgs[idx] = msg;\n\t\t\t\tif (++count === len) {\n\t\t\t\t\tresolve(msgs);\n\t\t\t\t}\n\t\t\t},reject);\n\t\t});\n\t});\n\n\tbuiltInProp(Promise,\"race\",function Promise$race(arr) {\n\t\tvar Constructor = this;\n\n\t\t// spec mandated checks\n\t\tif (ToString.call(arr) != \"[object Array]\") {\n\t\t\treturn Constructor.reject(TypeError(\"Not an array\"));\n\t\t}\n\n\t\treturn new Constructor(function executor(resolve,reject){\n\t\t\tif (typeof resolve != \"function\" || typeof reject != \"function\") {\n\t\t\t\tthrow TypeError(\"Not a function\");\n\t\t\t}\n\n\t\t\titeratePromises(Constructor,arr,function resolver(idx,msg){\n\t\t\t\tresolve(msg);\n\t\t\t},reject);\n\t\t});\n\t});\n\n\treturn Promise;\n});\n});\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nvar __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    };\r\n    return __assign.apply(this, arguments);\r\n};\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\r\n\r\nfunction __generator(thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n}\n\n/** All possible Checkout user interfaces. */\r\nvar UI;\r\n(function (UI) {\r\n    UI[\"Fullscreen\"] = \"fullscreen\";\r\n    UI[\"Modal\"] = \"modal\";\r\n    UI[\"Inline\"] = \"inline\";\r\n})(UI || (UI = {}));\r\n// tslint:disable-next-line:completed-docs\r\nvar DEFAULT_COMMON_OPTIONS = {\r\n    // Ideally, the default UI should be overriden for all concrete implementations.\r\n    ui: UI.Fullscreen,\r\n    language: \"en-US\",\r\n    endpoint: \"https://v1.checkout.bambora.com\"\r\n};\r\n// tslint:disable-next-line:completed-docs\r\nvar DEFAULT_REDIRECT_OPTIONS = __assign({}, DEFAULT_COMMON_OPTIONS, { ui: UI.Fullscreen });\r\n// tslint:disable-next-line:completed-docs\r\nvar DEFAULT_MODAL_OPTIONS = __assign({}, DEFAULT_COMMON_OPTIONS, { ui: UI.Modal });\r\n// tslint:disable-next-line:completed-docs\r\nvar DEFAULT_INLINE_OPTIONS = __assign({}, DEFAULT_COMMON_OPTIONS, { ui: UI.Inline, container: null });\r\n/** Maps an options object to a client-side objects object. */\r\nfunction mapOptionsToClientSideOptions(options) {\r\n    var styles = options.styles, labels = options.labels, demo = options.demo;\r\n    var version = \"3.1.0\";\r\n    if (window && typeof window[\"__bambora-system\"] === \"string\") {\r\n        version += \"-\" + window[\"__bambora-system\"];\r\n    }\r\n    return { styles: styles, labels: labels, demo: demo, version: version };\r\n}\r\n/** Maps an options object to a server-side objects object. */\r\nfunction mapOptionsToServerSideOptions(options) {\r\n    var ui = options.ui, language = options.language;\r\n    return { ui: ui, language: language };\r\n}\r\n/** Converts a client-side options object to a base64 string. */\r\nfunction optionsToBase64(options) {\r\n    var stringified = JSON.stringify(options);\r\n    return stringified === \"{}\" ? \"\" : btoa(stringified);\r\n}\r\n/** Converts a server-side options object to a URL-friendly query string. */\r\nfunction optionsToQueryString(options) {\r\n    return Object.keys(options)\r\n        .map(function (key) {\r\n        return encodeURIComponent(key) + \"=\" + encodeURIComponent(options[key]);\r\n    })\r\n        .join(\"&\");\r\n}\n\n/** All possible actions that Checkout responds to. */\r\nvar Action;\r\n(function (Action) {\r\n    /** Load a Checkout session. */\r\n    Action[\"LoadSession\"] = \"loadSession\";\r\n    /**\r\n     * Handshake with the iframe document and establish\r\n     * a channel for communication.\r\n     */\r\n    Action[\"InitiateHandshake\"] = \"initiateHandshake\";\r\n    /**\r\n     * Is sent as a response to the `Close` and `Cancel` events.\r\n     * Acknowledges a request from Checkout to close the modal and\r\n     * prevents Checkout from redirecting.\r\n     */\r\n    Action[\"AcknowledgeCloseRequest\"] = \"acknowledgeCloseRequest\";\r\n})(Action || (Action = {}));\r\nvar Action$1 = Action;\n\n// tslint:disable:max-classes-per-file\r\n// tslint:disable:early-exit\r\n// Ponyfill for setPrototypeOf\r\nvar setPrototypeOf = Object.setPrototypeOf ||\r\n    (function (obj, proto) {\r\n        obj.__proto__ = proto;\r\n        return obj;\r\n    });\r\n/** Thrown when a session token is required but has not been provided. */\r\nvar NoSessionTokenProvidedError = /** @class */ (function (_super) {\r\n    __extends(NoSessionTokenProvidedError, _super);\r\n    function NoSessionTokenProvidedError(message) {\r\n        var _newTarget = this.constructor;\r\n        var _this = _super.call(this, message) || this;\r\n        setPrototypeOf(_this, _newTarget.prototype);\r\n        if (Error.captureStackTrace) {\r\n            Error.captureStackTrace(_this, NoSessionTokenProvidedError);\r\n        }\r\n        return _this;\r\n    }\r\n    return NoSessionTokenProvidedError;\r\n}(ReferenceError));\r\n/** Thrown when there was a problem loading a session. */\r\nvar LoadSessionError = /** @class */ (function (_super) {\r\n    __extends(LoadSessionError, _super);\r\n    function LoadSessionError(message) {\r\n        var _newTarget = this.constructor;\r\n        var _this = _super.call(this, message) || this;\r\n        setPrototypeOf(_this, _newTarget.prototype);\r\n        if (Error.captureStackTrace) {\r\n            Error.captureStackTrace(_this, LoadSessionError);\r\n        }\r\n        return _this;\r\n    }\r\n    return LoadSessionError;\r\n}(Error));\r\n/** Thrown when the response to a message has resulted in an error. */\r\nvar GenericMessageError = /** @class */ (function (_super) {\r\n    __extends(GenericMessageError, _super);\r\n    function GenericMessageError(message) {\r\n        var _newTarget = this.constructor;\r\n        var _this = _super.call(this, message) || this;\r\n        setPrototypeOf(_this, _newTarget.prototype);\r\n        if (Error.captureStackTrace) {\r\n            Error.captureStackTrace(_this, GenericMessageError);\r\n        }\r\n        return _this;\r\n    }\r\n    return GenericMessageError;\r\n}(Error));\r\n/** Thrown when handshaking could not be completed. */\r\nvar HandshakeError = /** @class */ (function (_super) {\r\n    __extends(HandshakeError, _super);\r\n    function HandshakeError(message) {\r\n        var _newTarget = this.constructor;\r\n        var _this = _super.call(this, message) || this;\r\n        setPrototypeOf(_this, _newTarget.prototype);\r\n        if (Error.captureStackTrace) {\r\n            Error.captureStackTrace(_this, HandshakeError);\r\n        }\r\n        return _this;\r\n    }\r\n    return HandshakeError;\r\n}(Error));\r\n/** Thrown when a container is required but has not been provided. */\r\nvar ContainerNotSpecifiedError = /** @class */ (function (_super) {\r\n    __extends(ContainerNotSpecifiedError, _super);\r\n    function ContainerNotSpecifiedError(message) {\r\n        var _newTarget = this.constructor;\r\n        var _this = _super.call(this, message) || this;\r\n        setPrototypeOf(_this, _newTarget.prototype);\r\n        if (Error.captureStackTrace) {\r\n            Error.captureStackTrace(_this, ContainerNotSpecifiedError);\r\n        }\r\n        return _this;\r\n    }\r\n    return ContainerNotSpecifiedError;\r\n}(Error));\r\n\r\n\n\nvar errors = Object.freeze({\n\tNoSessionTokenProvidedError: NoSessionTokenProvidedError,\n\tLoadSessionError: LoadSessionError,\n\tGenericMessageError: GenericMessageError,\n\tHandshakeError: HandshakeError,\n\tContainerNotSpecifiedError: ContainerNotSpecifiedError\n});\n\n//      \n// An event handler can take an optional event argument\n// and should not return a value\n                                          \n                                                               \n\n// An array of all currently registered event handlers for a type\n                                            \n                                                            \n// A map of event types and their corresponding event handlers.\n                        \n                                 \n                                   \n  \n\n/** Mitt: Tiny (~200b) functional event emitter / pubsub.\n *  @name mitt\n *  @returns {Mitt}\n */\nfunction mitt(all                 ) {\n\tall = all || Object.create(null);\n\n\treturn {\n\t\t/**\n\t\t * Register an event handler for the given type.\n\t\t *\n\t\t * @param  {String} type\tType of event to listen for, or `\"*\"` for all events\n\t\t * @param  {Function} handler Function to call in response to given event\n\t\t * @memberOf mitt\n\t\t */\n\t\ton: function on(type        , handler              ) {\n\t\t\t(all[type] || (all[type] = [])).push(handler);\n\t\t},\n\n\t\t/**\n\t\t * Remove an event handler for the given type.\n\t\t *\n\t\t * @param  {String} type\tType of event to unregister `handler` from, or `\"*\"`\n\t\t * @param  {Function} handler Handler function to remove\n\t\t * @memberOf mitt\n\t\t */\n\t\toff: function off(type        , handler              ) {\n\t\t\tif (all[type]) {\n\t\t\t\tall[type].splice(all[type].indexOf(handler) >>> 0, 1);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Invoke all handlers for the given type.\n\t\t * If present, `\"*\"` handlers are invoked after type-matched handlers.\n\t\t *\n\t\t * @param {String} type  The event type to invoke\n\t\t * @param {Any} [evt]  Any value (object is recommended and powerful), passed to each handler\n\t\t * @memberOf mitt\n\t\t */\n\t\temit: function emit(type        , evt     ) {\n\t\t\t(all[type] || []).slice().map(function (handler) { handler(evt); });\n\t\t\t(all['*'] || []).slice().map(function (handler) { handler(type, evt); });\n\t\t}\n\t};\n}\n\n/** All possible events that Checkout emits. */\r\nvar CheckoutEvent;\r\n(function (CheckoutEvent) {\r\n    /** A payment has been authorized. */\r\n    CheckoutEvent[\"Authorize\"] = \"authorize\";\r\n    /**\r\n     * The Checkout session has been canceled.\r\n     * Checkout requests for its modal to be closed.\r\n     *\r\n     * To avoid a redirect, reply immediately with the\r\n     * `AcknowledgeCloseRequest` action.\r\n     */\r\n    CheckoutEvent[\"Cancel\"] = \"cancel\";\r\n    /**\r\n     * The Checkout session has been completed.\r\n     * Checkout requests for its modal to be closed.\r\n     *\r\n     * To avoid a redirect, reply immediately with the\r\n     * `AcknowledgeCloseRequest` action.\r\n     */\r\n    CheckoutEvent[\"Close\"] = \"close\";\r\n    /** A payment type has been selected. */\r\n    CheckoutEvent[\"PaymentTypeSelection\"] = \"paymentTypeSelection\";\r\n    /** The payment card type has been determined. */\r\n    CheckoutEvent[\"CardTypeResolve\"] = \"cardTypeResolve\";\r\n})(CheckoutEvent || (CheckoutEvent = {}));\r\nvar CheckoutEvent$1 = CheckoutEvent;\r\n/** The emitter factory function. Creates a new emitter. */\r\n// tslint:disable-next-line:naming-convention\r\nvar createEmitter = mitt;\n\n// tslint:disable-next-line:completed-docs\r\nvar AsyncIframe = /** @class */ (function () {\r\n    function AsyncIframe(source, container, origin, eventHandlerMap) {\r\n        this._origin = origin;\r\n        // Generate unique iframe ID\r\n        this._id = \"iframe_\" + Math.random()\r\n            .toString(36)\r\n            .substring(2, 15);\r\n        // Hook up emitter\r\n        var emitter = createEmitter(eventHandlerMap);\r\n        this.on = emitter.on.bind(this);\r\n        this.off = emitter.off.bind(this);\r\n        this._emit = emitter.emit.bind(this);\r\n        // Create iframe element promise\r\n        this._iframeElement = this._createIFrameElementAsync(source, container);\r\n    }\r\n    /** Removes iframe from the DOM and unhooks all events. */\r\n    AsyncIframe.prototype.destroy = function () {\r\n        var iframe = document.getElementById(this._id);\r\n        window.removeEventListener(\"message\", this._onMessageListener);\r\n        delete this.on;\r\n        delete this.off;\r\n        delete this._emit;\r\n        if (!iframe)\r\n            return;\r\n        iframe.parentElement.removeChild(iframe);\r\n    };\r\n    Object.defineProperty(AsyncIframe.prototype, \"element\", {\r\n        /** Resolves to the HTMLIFrameElement upon handshake completion. */\r\n        get: function () {\r\n            return this._iframeElement;\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    /**\r\n     * Posts a message to the iframe content documents.\r\n     * Resolves or rejects with a reply or acknowledgement from the iframe.\r\n     */\r\n    AsyncIframe.prototype.postMessage = function (message, \r\n    // The iframeElement parameter should only be used for the initial handshake.\r\n    iframeElement) {\r\n        return __awaiter(this, void 0, void 0, function () {\r\n            var iframe, _a, origin, messageId, messagePromise;\r\n            return __generator(this, function (_b) {\r\n                switch (_b.label) {\r\n                    case 0:\r\n                        _a = iframeElement;\r\n                        if (_a) return [3 /*break*/, 2];\r\n                        return [4 /*yield*/, this.element];\r\n                    case 1:\r\n                        _a = (_b.sent());\r\n                        _b.label = 2;\r\n                    case 2:\r\n                        iframe = _a;\r\n                        origin = this._origin;\r\n                        messageId = \"message_\" + Math.random()\r\n                            .toString(36)\r\n                            .substring(2, 15);\r\n                        messagePromise = new Promise(function (resolve, reject) {\r\n                            window.addEventListener(\"message\", onMessage, false);\r\n                            function onMessage(event) {\r\n                                if (event.origin !== origin)\r\n                                    return;\r\n                                if (!event.data || event.data.messageId !== messageId)\r\n                                    return;\r\n                                window.removeEventListener(\"message\", onMessage);\r\n                                var payload = event.data.payload;\r\n                                if (!event.data.result) {\r\n                                    reject(new GenericMessageError(payload));\r\n                                }\r\n                                resolve(payload);\r\n                            }\r\n                        });\r\n                        iframe.contentWindow.postMessage(__assign({}, message, { messageId: messageId }), this._origin);\r\n                        return [2 /*return*/, messagePromise];\r\n                }\r\n            });\r\n        });\r\n    };\r\n    AsyncIframe.prototype._createIFrameElementAsync = function (source, container) {\r\n        return __awaiter(this, void 0, void 0, function () {\r\n            var _this = this;\r\n            var iframeElementPromise, iframeElement;\r\n            return __generator(this, function (_a) {\r\n                switch (_a.label) {\r\n                    case 0:\r\n                        iframeElementPromise = new Promise(function (resolve, reject) {\r\n                            var createdIframeElement = _this._createIframeElement();\r\n                            createdIframeElement.onload = function () { return resolve(createdIframeElement); };\r\n                            createdIframeElement.onerror = function () { return reject(createdIframeElement); };\r\n                            createdIframeElement.setAttribute(\"src\", source);\r\n                            container.appendChild(createdIframeElement);\r\n                        });\r\n                        return [4 /*yield*/, iframeElementPromise];\r\n                    case 1:\r\n                        iframeElement = _a.sent();\r\n                        this._rebindIframeEventHandlers(iframeElement);\r\n                        this._initiateEventProxy();\r\n                        return [4 /*yield*/, this._initiateHandshake(iframeElement)];\r\n                    case 2:\r\n                        _a.sent();\r\n                        return [2 /*return*/, iframeElement];\r\n                }\r\n            });\r\n        });\r\n    };\r\n    AsyncIframe.prototype._createIframeElement = function () {\r\n        var iframeElement = document.createElement(\"iframe\");\r\n        iframeElement.setAttribute(\"id\", this._id);\r\n        iframeElement.setAttribute(\"name\", this._id);\r\n        iframeElement.setAttribute(\"frameborder\", \"0\");\r\n        iframeElement.setAttribute(\"allowTransparency\", \"true\");\r\n        iframeElement.setAttribute(\"style\", \"width:100%; height:100%;\");\r\n        iframeElement.setAttribute(\"allow\", \"payment 'src'\");\r\n        return iframeElement;\r\n    };\r\n    AsyncIframe.prototype._initiateHandshake = function (iframeElement) {\r\n        return __awaiter(this, void 0, void 0, function () {\r\n            var error_1;\r\n            return __generator(this, function (_a) {\r\n                switch (_a.label) {\r\n                    case 0:\r\n                        _a.trys.push([0, 2, , 3]);\r\n                        return [4 /*yield*/, this.postMessage({\r\n                                action: Action$1.InitiateHandshake,\r\n                                payload: this._id\r\n                            }, iframeElement)];\r\n                    case 1:\r\n                        _a.sent();\r\n                        return [3 /*break*/, 3];\r\n                    case 2:\r\n                        error_1 = _a.sent();\r\n                        throw new HandshakeError(error_1.message);\r\n                    case 3: return [2 /*return*/];\r\n                }\r\n            });\r\n        });\r\n    };\r\n    AsyncIframe.prototype._initiateEventProxy = function () {\r\n        this._onMessageListener = this._onMessage.bind(this);\r\n        window.addEventListener(\"message\", this._onMessageListener, false);\r\n    };\r\n    AsyncIframe.prototype._onMessage = function (event) {\r\n        if (event.origin !== this._origin)\r\n            return;\r\n        if (!event.data || event.data.handshakeId !== this._id)\r\n            return;\r\n        this._emit(event.data.event, event.data.payload);\r\n    };\r\n    AsyncIframe.prototype._rebindIframeEventHandlers = function (iframeElement) {\r\n        var _this = this;\r\n        iframeElement.onload = function () { return _this._initiateHandshake(iframeElement); };\r\n        iframeElement.onerror = null;\r\n        return iframeElement;\r\n    };\r\n    return AsyncIframe;\r\n}());\r\n/** Takes a URL and returns its origin. */\r\nfunction getOrigin(url) {\r\n    url = url.indexOf(\"blob:\") === 0 ? url.slice(5) : url;\r\n    var a = document.createElement(\"a\");\r\n    a.setAttribute(\"href\", url);\r\n    return (a.protocol + \"//\" + a.hostname +\r\n        (a.port !== \"80\" && a.port !== \"443\" && a.port !== \"0\" && a.port\r\n            ? \":\" + a.port\r\n            : \"\"));\r\n}\n\n// tslint:disable-next-line:completed-docs\r\nvar AbstractCheckout = /** @class */ (function () {\r\n    function AbstractCheckout(sessionToken, options) {\r\n        this.sessionToken = sessionToken;\r\n        this._options = __assign({}, DEFAULT_COMMON_OPTIONS, options);\r\n    }\r\n    /**\r\n     * Initializes a session by its session token.\r\n     * Throws `NoSessionTokenProvidedError` if no session token has been provided.\r\n     */\r\n    AbstractCheckout.prototype.initialize = function (sessionToken) {\r\n        return __awaiter(this, void 0, void 0, function () {\r\n            return __generator(this, function (_a) {\r\n                if (sessionToken)\r\n                    this.sessionToken = sessionToken;\r\n                if (!this.sessionToken) {\r\n                    throw new NoSessionTokenProvidedError(\"A session invocation was attempted while no session token was provided.\");\r\n                }\r\n                return [2 /*return*/, this.sessionToken];\r\n            });\r\n        });\r\n    };\r\n    Object.defineProperty(AbstractCheckout.prototype, \"_checkoutUrl\", {\r\n        get: function () {\r\n            var clientSideOptions = mapOptionsToClientSideOptions(this._options);\r\n            var serverSideOptions = mapOptionsToServerSideOptions(this._options);\r\n            var anchorString = optionsToBase64(clientSideOptions);\r\n            if (anchorString)\r\n                anchorString = \"#\" + anchorString;\r\n            var queryString = \"?\" + optionsToQueryString(serverSideOptions);\r\n            if (!this.sessionToken) {\r\n                return \"\" + this._options.endpoint + queryString + anchorString;\r\n            }\r\n            return this._options.endpoint + \"/\" + this.sessionToken + queryString + anchorString;\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    return AbstractCheckout;\r\n}());\n\n// tslint:disable-next-line:completed-docs\r\nvar AbstractIframeCheckout = /** @class */ (function (_super) {\r\n    __extends(AbstractIframeCheckout, _super);\r\n    function AbstractIframeCheckout(sessionToken, options) {\r\n        if (options === void 0) { options = {}; }\r\n        var _this = _super.call(this, sessionToken, options) || this;\r\n        /** Used to avoid an exception thrown in `iframe` getter when the container is falsy. */\r\n        _this._container = null;\r\n        // Hook up emitter.\r\n        var emitter = createEmitter(_this._options.eventHandlerMap);\r\n        _this.on = emitter.on.bind(_this);\r\n        _this.off = emitter.off.bind(_this);\r\n        _this._emit = emitter.emit.bind(_this);\r\n        return _this;\r\n    }\r\n    /** Removes iframe from the DOM and unhooks all events. */\r\n    AbstractIframeCheckout.prototype.destroy = function () {\r\n        this._asyncIframe.destroy();\r\n        delete this.on;\r\n        delete this.off;\r\n        delete this._emit;\r\n    };\r\n    /**\r\n     * Tells the iframed Checkout to load a session via the `sessionToken` parameter.\r\n     * Resolves upon successful load of session.\r\n     * Throws `NoSessionTokenProvidedError` if no session token has been provided.\r\n     * Throws `LoadSessionError` on failure to load session.\r\n     */\r\n    AbstractIframeCheckout.prototype.initialize = function (sessionToken) {\r\n        return __awaiter(this, void 0, void 0, function () {\r\n            var _a;\r\n            return __generator(this, function (_b) {\r\n                switch (_b.label) {\r\n                    case 0:\r\n                        _a = this._loadSession;\r\n                        return [4 /*yield*/, _super.prototype.initialize.call(this, sessionToken)];\r\n                    case 1: return [2 /*return*/, _a.apply(this, [_b.sent()])];\r\n                }\r\n            });\r\n        });\r\n    };\r\n    Object.defineProperty(AbstractIframeCheckout.prototype, \"iframe\", {\r\n        /**\r\n         * Resolves to the `HTMLIFrameElement` iframe.\r\n         * Throws `ContainerNotSpecifiedError` when trying to access the element\r\n         * without having mounted it to any container.\r\n         */\r\n        get: function () {\r\n            return this._asyncIframe.element;\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    AbstractIframeCheckout.prototype._createAsyncIframe = function () {\r\n        var _this = this;\r\n        if (this.__asyncIframe)\r\n            return;\r\n        if (this._container === null) {\r\n            throw new ContainerNotSpecifiedError(\"A container must be specified before accessing the iframe.\");\r\n        }\r\n        var url = this._checkoutUrl;\r\n        var origin = getOrigin(url);\r\n        this.__asyncIframe = new AsyncIframe(url, this._container, origin, {\r\n            // Re-emit everything:\r\n            \"*\": [function (type, event) { return _this._emit(type, event); }]\r\n        });\r\n    };\r\n    AbstractIframeCheckout.prototype._loadSession = function (token) {\r\n        return __awaiter(this, void 0, void 0, function () {\r\n            var response, error_1;\r\n            return __generator(this, function (_a) {\r\n                switch (_a.label) {\r\n                    case 0:\r\n                        if (this._lastSessionToken) {\r\n                            if (token === this._lastSessionToken) {\r\n                                return [2 /*return*/, Promise.resolve(token)];\r\n                            }\r\n                            throw new LoadSessionError(\"Loading a different session is not supported. Try creating a new Checkout instance.\");\r\n                        }\r\n                        _a.label = 1;\r\n                    case 1:\r\n                        _a.trys.push([1, 3, , 4]);\r\n                        return [4 /*yield*/, this._asyncIframe.postMessage({\r\n                                action: Action$1.LoadSession,\r\n                                payload: token\r\n                            })];\r\n                    case 2:\r\n                        response = _a.sent();\r\n                        this._lastSessionToken = token;\r\n                        return [2 /*return*/, response];\r\n                    case 3:\r\n                        error_1 = _a.sent();\r\n                        throw new LoadSessionError(error_1.message);\r\n                    case 4: return [2 /*return*/];\r\n                }\r\n            });\r\n        });\r\n    };\r\n    Object.defineProperty(AbstractIframeCheckout.prototype, \"_asyncIframe\", {\r\n        get: function () {\r\n            // The iframe is automatically created and mounted.\r\n            this._createAsyncIframe();\r\n            return this.__asyncIframe;\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    return AbstractIframeCheckout;\r\n}(AbstractCheckout));\n\n/**\r\n * A class for creating an inline Checkout experience.\r\n * Creates an iframe containing Checkout and handles all communication.\r\n */\r\nvar InlineCheckout = /** @class */ (function (_super) {\r\n    __extends(InlineCheckout, _super);\r\n    function InlineCheckout(sessionToken, options) {\r\n        if (options === void 0) { options = __assign({}, DEFAULT_INLINE_OPTIONS); }\r\n        var _this = _super.call(this, sessionToken, __assign({}, DEFAULT_INLINE_OPTIONS, options)) || this;\r\n        if (_this._options.container === null)\r\n            return _this;\r\n        // If the container is specified, create async iframe and mount it.\r\n        _this._container = _this._options.container;\r\n        _this._createAsyncIframe();\r\n        return _this;\r\n    }\r\n    /** Mounts the iframe to the specified container. */\r\n    InlineCheckout.prototype.mount = function (container) {\r\n        return __awaiter(this, void 0, void 0, function () {\r\n            return __generator(this, function (_a) {\r\n                switch (_a.label) {\r\n                    case 0:\r\n                        // Set this._container to avoid exceptions when trying to access\r\n                        // this.iframe immediately after.\r\n                        this._container = container;\r\n                        return [4 /*yield*/, this.iframe];\r\n                    case 1: return [2 /*return*/, _a.sent()];\r\n                }\r\n            });\r\n        });\r\n    };\r\n    return InlineCheckout;\r\n}(AbstractIframeCheckout));\n\n/**\r\n * A class for creating a redirect Checkout experience.\r\n * Redirects in the `constructor` if a session token is provided.\r\n * To prevent the redirect, omit the session token from the constructor\r\n * and provide it via the `initialize` instance method instead.\r\n */\r\nvar RedirectCheckout = /** @class */ (function (_super) {\r\n    __extends(RedirectCheckout, _super);\r\n    function RedirectCheckout(sessionToken, options) {\r\n        if (options === void 0) { options = __assign({}, DEFAULT_REDIRECT_OPTIONS); }\r\n        var _this = _super.call(this, sessionToken, __assign({}, DEFAULT_REDIRECT_OPTIONS, options)) || this;\r\n        if (!_this.sessionToken)\r\n            return _this;\r\n        _this._redirect(_this._checkoutUrl);\r\n        return _this;\r\n    }\r\n    /**\r\n     * Resolves to the URL for the Checkout session.\r\n     * Throws `NoSessionTokenProvidedError` if no session token has been provided.\r\n     */\r\n    RedirectCheckout.prototype.initialize = function (sessionToken) {\r\n        return __awaiter(this, void 0, void 0, function () {\r\n            return __generator(this, function (_a) {\r\n                switch (_a.label) {\r\n                    case 0: return [4 /*yield*/, _super.prototype.initialize.call(this, sessionToken)];\r\n                    case 1:\r\n                        _a.sent();\r\n                        return [2 /*return*/, this._checkoutUrl];\r\n                }\r\n            });\r\n        });\r\n    };\r\n    RedirectCheckout.prototype._redirect = function (url) {\r\n        window.location.assign(url);\r\n    };\r\n    return RedirectCheckout;\r\n}(AbstractCheckout));\n\n/**\r\n * A class for creating a modal Checkout experience.\r\n * Creates an iframe containing Checkout and handles all communication.\r\n * Creates an overlay and handles showing and hiding of it.\r\n */\r\nvar ModalCheckout = /** @class */ (function (_super) {\r\n    __extends(ModalCheckout, _super);\r\n    function ModalCheckout(sessionToken, options) {\r\n        if (options === void 0) { options = __assign({}, DEFAULT_MODAL_OPTIONS); }\r\n        var _this = _super.call(this, sessionToken, __assign({}, DEFAULT_MODAL_OPTIONS, options)) || this;\r\n        _this._isActive = false;\r\n        /**\r\n         * The element that initiated showing the modal.\r\n         * We return focus to this element when hiding the modal\r\n         * to improve accessibility.\r\n         */\r\n        _this._initiatingElement = null;\r\n        _this._enableBodyScroll = null;\r\n        createAndApplyStyleSheet(_this._options.cspNonce);\r\n        _this._id = Math.random()\r\n            .toString(36)\r\n            .substring(2, 15);\r\n        _this._overlayContainer = _this._createOverlayContainer();\r\n        _this._backdrop = _this._createBackdrop();\r\n        _this._container = _this._createIframeContainer();\r\n        document.body.appendChild(_this._overlayContainer);\r\n        _this._overlayContainer.appendChild(_this._backdrop);\r\n        _this._overlayContainer.appendChild(_this._createFocusTrap());\r\n        _this._overlayContainer.appendChild(_this._container);\r\n        _this._overlayContainer.appendChild(_this._createFocusTrap());\r\n        _this._createAsyncIframe();\r\n        _this.on(CheckoutEvent$1.Cancel, _this.hide.bind(_this));\r\n        _this.on(CheckoutEvent$1.Close, _this.hide.bind(_this));\r\n        return _this;\r\n    }\r\n    /**\r\n     * Removes the overlay and iframe from the DOM and unhooks all events.\r\n     * If executed while the modal is displayed, body scrolling will be reenabled.\r\n     */\r\n    ModalCheckout.prototype.destroy = function () {\r\n        _super.prototype.destroy.call(this);\r\n        this._overlayContainer.parentElement.removeChild(this._overlayContainer);\r\n        if (!this._enableBodyScroll)\r\n            return;\r\n        this._enableBodyScroll();\r\n    };\r\n    /** Shows the modal overlay. Resolves upon animation finish. */\r\n    ModalCheckout.prototype.show = function (event) {\r\n        return __awaiter(this, void 0, void 0, function () {\r\n            var coordinates, viewportDifference, iframeContainer;\r\n            return __generator(this, function (_a) {\r\n                switch (_a.label) {\r\n                    case 0:\r\n                        if (this._isActive)\r\n                            return [2 /*return*/];\r\n                        this._isActive = true;\r\n                        return [4 /*yield*/, this.iframe];\r\n                    case 1:\r\n                        _a.sent();\r\n                        this._initiatingElement = (event && event.target) || null;\r\n                        coordinates = this._getElementCoordinates();\r\n                        viewportDifference = this._getViewportDifference(coordinates);\r\n                        iframeContainer = this._container;\r\n                        iframeContainer.style.transform = \"translateX(\" + viewportDifference.x + \"px) translateY(\" + viewportDifference.y + \"px)\";\r\n                        iframeContainer.style[\"-webkit-transform\"] =\r\n                            iframeContainer.style.transform;\r\n                        this._overlayContainer.classList.add(Style.Enter);\r\n                        this._overlayContainer.style.display = \"block\";\r\n                        return [4 /*yield*/, delay(0)];\r\n                    case 2:\r\n                        _a.sent();\r\n                        iframeContainer.style.transform = \"translateX(0) translateY(0)\";\r\n                        iframeContainer.style[\"-webkit-transform\"] =\r\n                            iframeContainer.style.transform;\r\n                        this._overlayContainer.classList.add(Style.EnterActive);\r\n                        this._enableBodyScroll = disableBodyScroll();\r\n                        return [4 /*yield*/, delay(ModalCheckout.ANIMATION_DURATION)];\r\n                    case 3:\r\n                        _a.sent();\r\n                        iframeContainer.focus();\r\n                        this._overlayContainer.classList.remove(Style.Enter, Style.EnterActive);\r\n                        return [2 /*return*/];\r\n                }\r\n            });\r\n        });\r\n    };\r\n    /** Hides the modal overlay. Resolves upon animation finish. */\r\n    ModalCheckout.prototype.hide = function (target) {\r\n        return __awaiter(this, void 0, void 0, function () {\r\n            var coordinates, viewportDifference, iframeContainer, initiatingElement;\r\n            return __generator(this, function (_a) {\r\n                switch (_a.label) {\r\n                    case 0:\r\n                        if (!this._isActive)\r\n                            return [2 /*return*/];\r\n                        this._isActive = false;\r\n                        coordinates = this._getElementCoordinates(target);\r\n                        viewportDifference = this._getViewportDifference(coordinates);\r\n                        iframeContainer = this._container;\r\n                        if (this._enableBodyScroll) {\r\n                            this._enableBodyScroll();\r\n                            this._enableBodyScroll = null;\r\n                        }\r\n                        iframeContainer.style.transform = \"translateX(0) translateY(0)\";\r\n                        iframeContainer.style[\"-webkit-transform\"] =\r\n                            iframeContainer.style.transform;\r\n                        this._overlayContainer.classList.add(Style.Leave);\r\n                        return [4 /*yield*/, delay(0)];\r\n                    case 1:\r\n                        _a.sent();\r\n                        iframeContainer.style.transform = \"translateX(\" + viewportDifference.x + \"px) translateY(\" + viewportDifference.y + \"px)\";\r\n                        iframeContainer.style[\"-webkit-transform\"] =\r\n                            iframeContainer.style.transform;\r\n                        this._overlayContainer.classList.add(Style.LeaveActive);\r\n                        return [4 /*yield*/, delay(ModalCheckout.ANIMATION_DURATION)];\r\n                    case 2:\r\n                        _a.sent();\r\n                        initiatingElement = this._initiatingElement;\r\n                        if (initiatingElement && initiatingElement.focus) {\r\n                            initiatingElement.focus();\r\n                        }\r\n                        this._initiatingElement = null;\r\n                        this._overlayContainer.style.display = \"none\";\r\n                        this._overlayContainer.classList.remove(Style.Leave, Style.LeaveActive);\r\n                        return [2 /*return*/];\r\n                }\r\n            });\r\n        });\r\n    };\r\n    Object.defineProperty(ModalCheckout.prototype, \"isActive\", {\r\n        /** Is `true` when the modal is visible. */\r\n        get: function () {\r\n            return this._isActive;\r\n        },\r\n        enumerable: true,\r\n        configurable: true\r\n    });\r\n    ModalCheckout.prototype._getElementCoordinates = function (target) {\r\n        var element = target && target.getBoundingClientRect ? target : this._initiatingElement;\r\n        if (!element) {\r\n            return { x: 0, y: 0 };\r\n        }\r\n        var boundingClientRect = element.getBoundingClientRect();\r\n        return {\r\n            x: boundingClientRect.left + boundingClientRect.width / 2,\r\n            y: boundingClientRect.top + boundingClientRect.height / 2\r\n        };\r\n    };\r\n    ModalCheckout.prototype._getViewportDifference = function (coordinates) {\r\n        if (!coordinates.x)\r\n            return { x: 0, y: 0 };\r\n        return {\r\n            x: (coordinates.x || 0) - window.innerWidth / 2,\r\n            y: (coordinates.y || 0) - window.innerHeight / 2\r\n        };\r\n    };\r\n    ModalCheckout.prototype._createOverlayContainer = function () {\r\n        var overlayContainer = document.createElement(\"div\");\r\n        overlayContainer.setAttribute(\"id\", \"bc-overlay-container-\" + this._id);\r\n        overlayContainer.setAttribute(\"aria-label\", \"Bambora Checkout\");\r\n        overlayContainer.setAttribute(\"role\", \"dialog\");\r\n        overlayContainer.style.display = \"none\";\r\n        overlayContainer.classList.add(Style.OverlayContainer);\r\n        return overlayContainer;\r\n    };\r\n    ModalCheckout.prototype._createIframeContainer = function () {\r\n        var iframeContainer = document.createElement(\"div\");\r\n        iframeContainer.setAttribute(\"id\", \"bc-iframe-container-\" + this._id);\r\n        iframeContainer.classList.add(Style.IframeContainer);\r\n        iframeContainer.tabIndex = 0;\r\n        return iframeContainer;\r\n    };\r\n    ModalCheckout.prototype._createBackdrop = function () {\r\n        var backdrop = document.createElement(\"div\");\r\n        backdrop.setAttribute(\"id\", \"bc-backdrop-\" + this._id);\r\n        backdrop.classList.add(Style.Backdrop);\r\n        return backdrop;\r\n    };\r\n    ModalCheckout.prototype._createFocusTrap = function () {\r\n        var _this = this;\r\n        var focusTrap = document.createElement(\"div\");\r\n        focusTrap.tabIndex = 0;\r\n        focusTrap.addEventListener(\"focus\", function () {\r\n            return _this._container.focus();\r\n        });\r\n        return focusTrap;\r\n    };\r\n    /** The duration of animating the overlay in or out. */\r\n    // tslint:disable-next-line:naming-convention\r\n    ModalCheckout.ANIMATION_DURATION = 500;\r\n    /** The defualt transition CSS value for the overlay animation. */\r\n    ModalCheckout.DEFAULT_TRANSITION = \"all \" + ModalCheckout.ANIMATION_DURATION + \"ms cubic-bezier(0.25, 0.8, 0.25, 1)\";\r\n    return ModalCheckout;\r\n}(AbstractIframeCheckout));\r\n/** All the CSS classes the modal uses. */\r\nvar Style;\r\n(function (Style) {\r\n    Style[\"Backdrop\"] = \"bc-backdrop\";\r\n    Style[\"IframeContainer\"] = \"bc-iframe-container\";\r\n    Style[\"OverlayContainer\"] = \"bc-overlay-container\";\r\n    Style[\"Leave\"] = \"bc-leave\";\r\n    Style[\"LeaveActive\"] = \"bc-leave-active\";\r\n    Style[\"Enter\"] = \"bc-enter\";\r\n    Style[\"EnterActive\"] = \"bc-enter-active\";\r\n})(Style || (Style = {}));\r\nfunction createAndApplyStyleSheet(cspNonce) {\r\n    // We avoid creating multiple stylesheets:\r\n    if (document.querySelector(\"style[bc-style]\"))\r\n        return;\r\n    var style = document.createElement(\"style\");\r\n    if (cspNonce)\r\n        style.setAttribute(\"nonce\", cspNonce);\r\n    style.setAttribute(\"bc-style\", \"\");\r\n    style.appendChild(document.createTextNode(\"\"));\r\n    // We insert the stylesheet at the top to make style overrides easy:\r\n    document.head.insertBefore(style, document.head.firstChild);\r\n    var styleSheet = style.sheet;\r\n    var addRuleToStyleSheet = addRule(styleSheet);\r\n    addRuleToStyleSheet(\".\" + Style.IframeContainer + \", .\" + Style.OverlayContainer + \", .\" + Style.Backdrop, [\"width: 100vw\", \"height: 100vh\"]);\r\n    addRuleToStyleSheet(\".\" + Style.OverlayContainer, [\r\n        \"z-index: 999999\",\r\n        \"position: fixed\"\r\n    ]);\r\n    addRuleToStyleSheet(\".\" + Style.OverlayContainer + \", .\" + Style.Backdrop, [\r\n        \"top: 0\",\r\n        \"left: 0\"\r\n    ]);\r\n    addRuleToStyleSheet(\".\" + Style.Backdrop, [\r\n        \"background: rgba(0, 0, 0, 0.5)\",\r\n        \"position: absolute\"\r\n    ]);\r\n    addRuleToStyleSheet(\".\" + Style.IframeContainer, [\"position: relative\"]);\r\n    var overlayEnter = \".\" + Style.OverlayContainer + \".\" + Style.Enter;\r\n    var overlayLeave = \".\" + Style.OverlayContainer + \".\" + Style.Leave;\r\n    var overlayEnterActive = overlayEnter + \".\" + Style.EnterActive;\r\n    var overlayLeaveActive = overlayLeave + \".\" + Style.LeaveActive;\r\n    addRuleToStyleSheet(overlayEnter + \", \" + overlayLeave + \", \" +\r\n        (overlayEnter + \" .\" + Style.Backdrop + \", \") +\r\n        (overlayLeave + \" .\" + Style.Backdrop + \", \") +\r\n        (overlayEnter + \" .\" + Style.IframeContainer + \", \") +\r\n        (overlayLeave + \" .\" + Style.IframeContainer + \", \") +\r\n        (overlayEnter + \" iframe, \") +\r\n        (overlayLeave + \" iframe\"), [\r\n        \"transition: \" + ModalCheckout.DEFAULT_TRANSITION,\r\n        \"-webkit-transition: \" + ModalCheckout.DEFAULT_TRANSITION\r\n    ]);\r\n    addRuleToStyleSheet(overlayEnter + \" iframe, \" + (overlayLeaveActive + \" iframe\"), [\"opacity: 0\", \"transform: scale(0.1)\"]);\r\n    addRuleToStyleSheet(overlayEnter + \" .\" + Style.Backdrop + \", \" +\r\n        (overlayLeaveActive + \" .\" + Style.Backdrop), [\"opacity: 0\"]);\r\n    addRuleToStyleSheet(overlayEnterActive + \" .\" + Style.Backdrop + \", \" + overlayEnterActive + \" iframe, \" +\r\n        (overlayLeave + \" .\" + Style.Backdrop + \", \" + overlayLeave + \" iframe\"), [\"opacity: 1\"]);\r\n    addRuleToStyleSheet(overlayEnterActive + \" iframe, \" + overlayLeave + \" iframe\", [\r\n        \"transform: scale(1)\",\r\n        \"-webkit-transform: scale(1)\"\r\n    ]);\r\n}\r\nfunction addRule(styleSheet) {\r\n    return function (selector, properties) {\r\n        return createRule(styleSheet, selector, properties);\r\n    };\r\n}\r\nfunction createRule(styleSheet, selector, properties) {\r\n    styleSheet.insertRule(selector + \" { \" + properties.join(\"; \") + \" }\", 0);\r\n}\r\nfunction disableBodyScroll() {\r\n    var documentElement = document.documentElement;\r\n    var body = document.body;\r\n    var previousDocumentStyle = documentElement.style.cssText || \"\";\r\n    var previousBodyStyle = body.style.cssText || \"\";\r\n    var scrollTop = window.pageYOffset || documentElement.scrollTop || body.scrollTop || 0;\r\n    var clientWidth = body.clientWidth;\r\n    var hasScrollbar = window.innerWidth > document.documentElement.clientWidth ||\r\n        document.documentElement.scrollHeight >\r\n            document.documentElement.clientHeight;\r\n    if (hasScrollbar) {\r\n        body.style.position = \"fixed\";\r\n        body.style.width = \"100%\";\r\n        body.style.top = -scrollTop + \"px\";\r\n    }\r\n    if (body.clientWidth < clientWidth)\r\n        body.style.overflow = \"hidden\";\r\n    if (hasScrollbar)\r\n        documentElement.style.overflowY = \"scroll\";\r\n    return function () {\r\n        body.style.cssText = previousBodyStyle;\r\n        documentElement.style.cssText = previousDocumentStyle;\r\n        body.scrollTop = scrollTop;\r\n        documentElement.scrollTop = scrollTop;\r\n    };\r\n}\r\n/** Delays execution asynchronously. Does not block execution. */\r\nfunction delay(duration) {\r\n    return __awaiter(this, void 0, void 0, function () {\r\n        return __generator(this, function (_a) {\r\n            return [2 /*return*/, new Promise(function (resolve) { return setTimeout(resolve, duration); })];\r\n        });\r\n    });\r\n}\n\nexport { UI, InlineCheckout, RedirectCheckout, ModalCheckout, errors as Errors, CheckoutEvent$1 as Event };\n"],"names":["t","module","exports","require","e","r","n","o","i","l","call","m","c","d","Object","defineProperty","configurable","enumerable","get","__esModule","default","prototype","hasOwnProperty","p","s","length","TypeError","toLowerCase","walletRequestTypes","ReferenceError","value","WalletRequestType","masterPass","productionClientApi","sandboxClientApi","mobilePay","productionClient","epayZero","testClient","walletApi","this","__extends","setPrototypeOf","__proto__","Array","constructor","create","Error","ConnectionError","NoResponseError","AuthorizationError","walletResponseTransformers","WalletResponseTransformer","G","J","a","nextTick","K","f","u","$","document","createTextNode","observe","characterData","data","MessageChannel","port1","onmessage","port2","postMessage","setTimeout","Y","nt","h","runOnLoop","runOnContext","arguments","v","ot","q","_state","S","_result","k","y","T","_","w","then","ct","error","b","g","E","R","_label","j","st","at","O","resolve","P","_onerror","x","it","_subscribers","A","C","ut","W","M","lt","L","_instanceConstructor","promise","Z","_input","_remaining","_enumerate","I","B","N","U","z","D","H","V","self","Function","Promise","toString","cast","F","isArray","rt","X","window","Q","MutationObserver","WebKitMutationObserver","tt","et","Uint8ClampedArray","importScripts","Math","random","substring","_eachEntry","_settledAt","_willSettleAt","all","race","reject","_setScheduler","_setAsap","_asap","catch","polyfill","events","EventEmitter","_walletService","_getWalletRequestType","getWalletOptions","reduce","key","open","preferredWindowState","getSession","session","walletname","initiate","fn","context","once","_events","_eventsCount","eventNames","push","slice","getOwnPropertySymbols","concat","listeners","emit","removeListener","apply","on","removeAllListeners","off","addListener","setMaxListeners","prefixed","clearTimeout","run","fun","array","title","browser","env","argv","version","versions","prependListener","prependOnceListener","binding","cwd","chdir","umask","decodeURIComponent","replace","exec","isNaN","encodeURIComponent","join","stringify","parse","__decorate","getOwnPropertyDescriptor","Reflect","decorate","__metadata","metadata","_preferredWindowState","walletEndpoint","_walletEndpoint","loadScriptIfNotAlreadyLoaded","sendRequest","MasterPass","client","checkout","allowedCardTypes","callbackUrl","cancelCallback","failureCallback","merchantCheckoutId","requestToken","successCallback","walletName","suppressShippingAddressEnable","_script","createElement","async","src","onload","onerror","head","appendChild","MasterPassRequest","transform","map","type","split","MasterPassResponseTransformer","_target","target","Url","location","href","Version","action","method","name","body","submit","MobilePayRequest","setAttribute","style","width","height","border","bottom","top","left","right","position","zIndex","showBackdrop","origin","status","removeEventListener","addEventListener","_backdrop","background","display","opacity","transition","hideBackdrop","TestRequest","_fetch","fetch","bind","pow","retries","maximumRetries","headers","Accept","json","meta","result","wait","authorizeresult","message","merchant","authorizeResult","parameters","redirectUrl","redirecturl","url","VippsRequest","_endpoint","_defaultHeaders","xEpaySystemHeader","_getWalletResponseTransformer","endpoint","defaultHeaders","eval","description","main","types","scripts","test","clean","start","build","repository","author","license","bugs","homepage","dependencies","eventemitter3","querystringify","devDependencies","babel","chai","mocha","rimraf","sinon","tslint","typescript","webpack","errors","Bambora","Wallet","WalletErrors","qrcodegen","qrcodegen2","__defProp","__getOwnPropSymbols","__hasOwnProp","__propIsEnum","propertyIsEnumerable","__defNormalProp","obj","writable","__spreadValues","prop","_step","_iterator","_createForOfIteratorHelper","done","err","__objRest","source","exclude","indexOf","_step2","_iterator2","_QrCode","errorCorrectionLevel","dataCodewords","msk","_classCallCheck","modules","isFunction","MIN_VERSION","MAX_VERSION","RangeError","size","row","drawFunctionPatterns","allCodewords","addEccAndInterleave","drawCodewords","minPenalty","applyMask","drawFormatBits","penalty","getPenaltyScore","assert","mask","_createClass","setFunctionModule","drawFinderPattern","alignPatPos","getAlignmentPatternPositions","numAlign","drawAlignmentPattern","drawVersion","formatBits","rem","bits","getBit","color","floor","dy","dx","dist","max","abs","xx","yy","isDark","ver","ecl","getNumDataCodewords","numBlocks","NUM_ERROR_CORRECTION_BLOCKS","ordinal","blockEccLen","ECC_CODEWORDS_PER_BLOCK","rawCodewords","getNumRawDataModules","numShortBlocks","shortBlockLen","blocks","rsDiv","reedSolomonComputeDivisor","dat","ecc","reedSolomonComputeRemainder","_loop","_i9","forEach","block","vert","invert","runColor","runX","runHistory","PENALTY_N1","finderPenaltyAddHistory","finderPenaltyCountPatterns","PENALTY_N3","finderPenaltyTerminateAndCount","runY","PENALTY_N2","_step3","dark","_iterator3","sum","total","ceil","PENALTY_N4","step","pos","splice","core","currentRunColor","currentRunLength","pop","unshift","text","segs","QrSegment","makeSegments","encodeSegments","seg","makeBytes","dataUsedBits","minVersion","undefined","maxVersion","boostEcl","dataCapacityBits2","usedBits","getTotalBits","_i10","_arr","Ecc","MEDIUM","QUARTILE","HIGH","newEcl","_step4","bb","_iterator4","appendBits","mode","modeBits","numChars","numCharCountBits","_step5","_iterator5","getData","dataCapacityBits","min","padByte","degree","root","reedSolomonMultiply","divisor","_step6","_iterator6","_loop2","factor","shift","coef","QrCode","val","len","cond","_QrSegment","bitData","_step7","_iterator7","Mode","BYTE","digits","isNumeric","parseInt","substr","NUMERIC","isAlphanumeric","temp","ALPHANUMERIC_CHARSET","charAt","ALPHANUMERIC","makeNumeric","makeAlphanumeric","toUtf8ByteArray","assignVal","ECI","NUMERIC_REGEX","ALPHANUMERIC_REGEX","_step8","_iterator8","ccbits","Infinity","str","encodeURI","charCodeAt","QrCode2","_Ecc","LOW","QrSegment2","_Mode","numBitsCharCount","KANJI","qrcodegen_default","ERROR_LEVEL_MAP","DEFAULT_BGCOLOR","DEFAULT_FGCOLOR","DEFAULT_INCLUDEMARGIN","MARGIN_SIZE","DEFAULT_IMG_SCALE","generatePath","margin","ops","cell","excavateModules","excavation","getImageSettings","cells","includeMargin","imageSettings","numCells","defaultSize","scale","excavate","floorX","floorY","SUPPORTS_PATH2D","Path2D","addPath","QRCodeCanvas","props","_a","_a$size","_a$level","level","_a$bgColor","bgColor","_a$fgColor","fgColor","_a$includeMargin","otherProps","imgSrc","_canvas","useRef","_image","_useState","useState","_useState2","_slicedToArray","setIsImageLoaded","useEffect","current","canvas","ctx","getContext","encodeText","getModules","calculatedImageSettings","image","haveImageToRender","complete","naturalHeight","naturalWidth","pixelRatio","devicePixelRatio","fillStyle","fillRect","fill","rdx","cdx","drawImage","canvasStyle","img","React","onLoad","ref","QRCodeSVG","_a$size2","_a$level2","_a$bgColor2","_a$fgColor2","_a$includeMargin2","xlinkHref","preserveAspectRatio","fgPath","viewBox","shapeRendering","QRCode","renderAs","_extends","assign","defineProperties","descriptor","Constructor","protoProps","staticProps","Truncate","_Component","_ref","instance","_len","args","_key","_this","_possibleConstructorReturn","getPrototypeOf","state","styles","ellipsis","visibility","elements","onResize","onTruncate","calcTargetWidth","measureWidth","getLines","renderLine","subClass","superClass","_inherits","canvasContext","parentNode","removeChild","prevProps","children","forceUpdate","timeout","cancelAnimationFrame","node","div","contentKey","HTMLElement","innerHTML","didTruncate","requestAnimationFrame","callback","targetWidth","getBoundingClientRect","getComputedStyle","font","setState","measureText","offsetWidth","_props","numLines","lines","trimWhitespace","innerText","trimRight","textLines","line","ellipsisWidth","textWords","resultLine","textRest","lower","upper","middle","lastLineText","_lower","_upper","_middle","arr","br","_this2","_props2","spanProps","keys","_objectWithoutProperties","targetEl","textEl","ellipsisEl","Component","propTypes","PropTypes","defaultProps","documentElement","__forceSmoothScrollPolyfill__","userAgent","Element","SCROLL_TIME","original","scroll","scrollTo","scrollBy","elementScroll","scrollElement","scrollIntoView","now","performance","Date","ROUNDING_TOLERANCE","navigator","RegExp","shouldBailOut","smoothScroll","scrollX","pageXOffset","scrollY","pageYOffset","scrollLeft","scrollTop","SyntaxError","behavior","scrollableParent","el","isScrollable","host","findScrollableParent","parentRects","clientRects","firstArg","hasScrollableSpace","axis","clientHeight","scrollHeight","clientWidth","scrollWidth","canOverflow","overflowValue","isScrollableY","isScrollableX","currentX","currentY","elapsed","startTime","cos","PI","startX","startY","scrollable","support","Symbol","Blob","viewClasses","isDataView","DataView","isPrototypeOf","isArrayBufferView","ArrayBuffer","isView","Headers","append","normalizeName","normalizeValue","oldValue","has","set","thisArg","items","iteratorFor","values","entries","iterator","methods","Request","clone","_bodyInit","Body","Response","statusText","response","redirectStatuses","redirect","input","init","request","xhr","XMLHttpRequest","options","parseHeaders","getAllResponseHeaders","responseURL","responseText","ontimeout","credentials","withCredentials","responseType","setRequestHeader","send","String","next","header","getOwnPropertyNames","consumed","bodyUsed","fileReaderReady","reader","readBlobAsArrayBuffer","blob","FileReader","readAsArrayBuffer","bufferClone","buf","view","Uint8Array","byteLength","buffer","_initBody","_bodyText","_bodyBlob","FormData","_bodyFormData","URLSearchParams","_bodyArrayBuffer","rejected","arrayBuffer","readAsText","readBlobAsText","chars","fromCharCode","readArrayBufferAsText","formData","decode","JSON","upcased","toUpperCase","normalizeMethod","referrer","form","trim","bytes","rawHeaders","parts","bodyInit","ok","commonjsGlobal","global","definition","builtInProp","cycle","scheduling_queue","ToString","timer","setImmediate","config","schedule","add","drain","isThenable","_then","o_type","notify","chain","notifyIsolated","success","failure","cb","ret","msg","triggered","def","def_wrapper","MakeDefWrapper","iteratePromises","resolver","rejecter","idx","MakeDef","executor","__NPO__","first","last","item","Item","PromisePrototype","msgs","count","extendStatics","__","UI","__assign","__awaiter","_arguments","generator","fulfilled","__generator","label","sent","trys","verb","op","Action","DEFAULT_COMMON_OPTIONS","ui","Fullscreen","language","DEFAULT_REDIRECT_OPTIONS","DEFAULT_MODAL_OPTIONS","Modal","DEFAULT_INLINE_OPTIONS","Inline","container","CheckoutEvent","Action$1","proto","NoSessionTokenProvidedError","_super","_newTarget","captureStackTrace","LoadSessionError","GenericMessageError","HandshakeError","ContainerNotSpecifiedError","freeze","CheckoutEvent$1","createEmitter","handler","evt","AsyncIframe","eventHandlerMap","_origin","_id","emitter","_emit","_iframeElement","_createIFrameElementAsync","destroy","iframe","getElementById","_onMessageListener","parentElement","iframeElement","messageId","messagePromise","_b","element","onMessage","event","payload","contentWindow","createdIframeElement","_createIframeElement","_rebindIframeEventHandlers","_initiateEventProxy","_initiateHandshake","error_1","InitiateHandshake","_onMessage","handshakeId","Style","AbstractCheckout","sessionToken","_options","initialize","clientSideOptions","labels","demo","mapOptionsToClientSideOptions","serverSideOptions","anchorString","stringified","btoa","optionsToBase64","queryString","optionsToQueryString","AbstractIframeCheckout","_container","_asyncIframe","_loadSession","_createAsyncIframe","__asyncIframe","_checkoutUrl","protocol","hostname","port","getOrigin","token","_lastSessionToken","LoadSession","RedirectCheckout","InlineCheckout","mount","_redirect","ModalCheckout","_isActive","_initiatingElement","_enableBodyScroll","createAndApplyStyleSheet","cspNonce","_overlayContainer","_createOverlayContainer","_createBackdrop","_createIframeContainer","_createFocusTrap","Cancel","hide","Close","show","coordinates","viewportDifference","iframeContainer","_getElementCoordinates","_getViewportDifference","classList","Enter","delay","EnterActive","previousDocumentStyle","cssText","previousBodyStyle","hasScrollbar","innerWidth","overflow","overflowY","disableBodyScroll","ANIMATION_DURATION","focus","remove","initiatingElement","Leave","LeaveActive","boundingClientRect","innerHeight","overlayContainer","OverlayContainer","IframeContainer","tabIndex","backdrop","Backdrop","focusTrap","DEFAULT_TRANSITION","querySelector","insertBefore","firstChild","addRuleToStyleSheet","styleSheet","selector","properties","insertRule","createRule","addRule","sheet","overlayEnter","overlayLeave","overlayEnterActive","overlayLeaveActive","duration"],"sourceRoot":""}