Thanks. Path is still wrong though:

`While trying to resolve module `@benawad/expo-mixpanel-analytics` from file `/Users/holgersindbaek/CloudDrive/HolgerSindbaek/HabitTracker/Programming/HabitTracker/utils/track.js`, the package `/Users/holgersindbaek/CloudDrive/HolgerSindbaek/HabitTracker/Programming/HabitTracker/node_modules/@benawad/expo-mixpanel-analytics/package.json` was successfully found. However, this package itself specifies a `main` module field that could not be resolved (`/Users/holgersindbaek/CloudDrive/HolgerSindbaek/HabitTracker/Programming/HabitTracker/node_modules/@benawad/expo-mixpanel-analytics/src/dist/index.js`. Indeed, none of these files exist:

  * `/Users/holgersindbaek/CloudDrive/HolgerSindbaek/HabitTracker/Programming/HabitTracker/node_modules/@benawad/expo-mixpanel-analytics/src/dist/index.js(.native||.ios.expo.js|.native.expo.js|.expo.js|.ios.expo.ts|.native.expo.ts|.expo.ts|.ios.expo.tsx|.native.expo.tsx|.expo.tsx|.ios.expo.json|.native.expo.json|.expo.json|.ios.js|.native.js|.js|.ios.json|.native.json|.json|.ios.ts|.native.ts|.ts|.ios.tsx|.native.tsx|.tsx)`
  * `/Users/holgersindbaek/CloudDrive/HolgerSindbaek/HabitTracker/Programming/HabitTracker/node_modules/@benawad/expo-mixpanel-analytics/src/dist/index.js/index(.native||.ios.expo.js|.native.expo.js|.expo.js|.ios.expo.ts|.native.expo.ts|.expo.ts|.ios.expo.tsx|.native.expo.tsx|.expo.tsx|.ios.expo.json|.native.expo.json|.expo.json|.ios.js|.native.js|.js|.ios.json|.native.json|.json|.ios.ts|.native.ts|.ts|.ios.tsx|.native.tsx|.tsx)`
Failed building JavaScript bundle.`


# Specs execution successful
:scroll: [View logs](http://bamboo.comnull)
### Plans updated

Bamboo specs have been successfully imported and the following plans have been updated.

Project | Plan | Build
---|---|---
[Test](http://bamboo.com/browse/TEST) | [Comment test](http://bamboo.com/browse/TEST-CTEST)  | :white_check_mark: [\#1](http://bamboo.com/browse/TEST-CTEST-1)
[New project](http://bamboo.com/browse/NEW) | [Disabled plan](http://bamboo.com/browse/NEW-DISABLED) **disabled** | :white_check_mark: [\#1](http://bamboo.com/browse/NEW-DISABLED-1)

### Deployments updated

Bamboo specs have been successfully imported and the following deployment projects have been updated.

|Deployment project |
----|
[Deployment test](http://bamboo.com/deploy/viewDeploymentProjectVersions.action?id=2162689)|


add-diagnostic-script (jasondegraw) - x86_64-Linux-Ubuntu-18.04-gcc-7.4: OK (2492 of 2492 tests passed, 0 test warnings)

![Build Badge](http://img.shields.io/badge/build%20status-passing-green.png) ![Test Badge](http://img.shields.io/badge/tests%20passed-100.0%25-green.png)


add-diagnostic-script (Myoldmopar) - x86_64-Linux-Ubuntu-18.04-gcc-7.4-IntegrationCoverage-Debug: OK (667 of 667 tests passed, 0 test warnings)

![Build Badge](http://img.shields.io/badge/build%20status-passing-green.png) ![Test Badge](http://img.shields.io/badge/tests%20passed-100.0%25-green.png) ![Coverage Badge](http://img.shields.io/badge/coverage%20status-68.45%25-green.png)


(window["webpackJsonp"] = window["webpackJsonp"] || []).push([[8],{

/***/ "+iuc":
/***/ (function(module, exports, __webpack_require__) {

__webpack_require__("wgeU");
__webpack_require__("FlQf");
__webpack_require__("bBy9");
__webpack_require__("B9jh");
__webpack_require__("dL40");
__webpack_require__("xvv9");
__webpack_require__("V+O7");
module.exports = __webpack_require__("WEpk").Set;

/***/ }),

/***/ "+oT+":
/***/ (function(module, exports, __webpack_require__) {

var _Promise = __webpack_require__("eVuF");

function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
  try {
    var info = gen[key](arg);
    var value = info.value;
  } catch (error) {
    reject(error);
    return;
  }

  if (info.done) {
    resolve(value);
  } else {
    _Promise.resolve(value).then(_next, _throw);
  }
}

function _asyncToGenerator(fn) {
  return function () {
    var self = this,
        args = arguments;
    return new _Promise(function (resolve, reject) {
      var gen = fn.apply(self, args);

      function _next(value) {
        asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
      }

      function _throw(err) {
        asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
      }

      _next(undefined);
    });
  };
}

module.exports = _asyncToGenerator;

/***/ }),

/***/ "+wdc":
/***/ (function(module, exports, __webpack_require__) {

"use strict";
/** @license React v0.13.6
 * scheduler.production.min.js
 *
 * Copyright (c) Facebook, Inc. and its affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */

Object.defineProperty(exports,"__esModule",{value:!0});var d=null,e=!1,g=3,k=-1,l=-1,m=!1,n=!1;function p(){if(!m){var a=d.expirationTime;n?q():n=!0;r(t,a)}}
function u(){var a=d,b=d.next;if(d===b)d=null;else{var c=d.previous;d=c.next=b;b.previous=c}a.next=a.previous=null;c=a.callback;b=a.expirationTime;a=a.priorityLevel;var f=g,Q=l;g=a;l=b;try{var h=c()}finally{g=f,l=Q}if("function"===typeof h)if(h={callback:h,priorityLevel:a,expirationTime:b,next:null,previous:null},null===d)d=h.next=h.previous=h;else{c=null;a=d;do{if(a.expirationTime>=b){c=a;break}a=a.next}while(a!==d);null===c?c=d:c===d&&(d=h,p());b=c.previous;b.next=c.previous=h;h.next=c;h.previous=
b}}function v(){if(-1===k&&null!==d&&1===d.priorityLevel){m=!0;try{do u();while(null!==d&&1===d.priorityLevel)}finally{m=!1,null!==d?p():n=!1}}}function t(a){m=!0;var b=e;e=a;try{if(a)for(;null!==d;){var c=exports.unstable_now();if(d.expirationTime<=c){do u();while(null!==d&&d.expirationTime<=c)}else break}else if(null!==d){do u();while(null!==d&&!w())}}finally{m=!1,e=b,null!==d?p():n=!1,v()}}
var x=Date,y="function"===typeof setTimeout?setTimeout:void 0,z="function"===typeof clearTimeout?clearTimeout:void 0,A="function"===typeof requestAnimationFrame?requestAnimationFrame:void 0,B="function"===typeof cancelAnimationFrame?cancelAnimationFrame:void 0,C,D;function E(a){C=A(function(b){z(D);a(b)});D=y(function(){B(C);a(exports.unstable_now())},100)}
if("object"===typeof performance&&"function"===typeof performance.now){var F=performance;exports.unstable_now=function(){return F.now()}}else exports.unstable_now=function(){return x.now()};var r,q,w,G=null; true?G=window:undefined;
if(G&&G._schedMock){var H=G._schedMock;r=H[0];q=H[1];w=H[2];exports.unstable_now=H[3]}else if( false||"function"!==typeof MessageChannel){var I=null,J=function(a){if(null!==I)try{I(a)}finally{I=null}};r=function(a){null!==I?setTimeout(r,0,a):(I=a,setTimeout(J,0,!1))};q=function(){I=null};w=function(){return!1}}else{"undefined"!==typeof console&&("function"!==typeof A&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills"),
"function"!==typeof B&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills"));var K=null,L=!1,M=-1,N=!1,O=!1,P=0,R=33,S=33;w=function(){return P<=exports.unstable_now()};var T=new MessageChannel,U=T.port2;T.port1.onmessage=function(){L=!1;var a=K,b=M;K=null;M=-1;var c=exports.unstable_now(),f=!1;if(0>=P-c)if(-1!==b&&b<=c)f=!0;else{N||(N=!0,E(V));K=a;M=b;return}if(null!==a){O=!0;try{a(f)}finally{O=!1}}};
var V=function(a){if(null!==K){E(V);var b=a-P+S;b<S&&R<S?(8>b&&(b=8),S=b<R?R:b):R=b;P=a+S;L||(L=!0,U.postMessage(void 0))}else N=!1};r=function(a,b){K=a;M=b;O||0>b?U.postMessage(void 0):N||(N=!0,E(V))};q=function(){K=null;L=!1;M=-1}}exports.unstable_ImmediatePriority=1;exports.unstable_UserBlockingPriority=2;exports.unstable_NormalPriority=3;exports.unstable_IdlePriority=5;exports.unstable_LowPriority=4;
exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=g,f=k;g=a;k=exports.unstable_now();try{return b()}finally{g=c,k=f,v()}};exports.unstable_next=function(a){switch(g){case 1:case 2:case 3:var b=3;break;default:b=g}var c=g,f=k;g=b;k=exports.unstable_now();try{return a()}finally{g=c,k=f,v()}};
exports.unstable_scheduleCallback=function(a,b){var c=-1!==k?k:exports.unstable_now();if("object"===typeof b&&null!==b&&"number"===typeof b.timeout)b=c+b.timeout;else switch(g){case 1:b=c+-1;break;case 2:b=c+250;break;case 5:b=c+1073741823;break;case 4:b=c+1E4;break;default:b=c+5E3}a={callback:a,priorityLevel:g,expirationTime:b,next:null,previous:null};if(null===d)d=a.next=a.previous=a,p();else{c=null;var f=d;do{if(f.expirationTime>b){c=f;break}f=f.next}while(f!==d);null===c?c=d:c===d&&(d=a,p());
b=c.previous;b.next=c.previous=a;a.next=c;a.previous=b}return a};exports.unstable_cancelCallback=function(a){var b=a.next;if(null!==b){if(b===a)d=null;else{a===d&&(d=b);var c=a.previous;c.next=b;b.previous=c}a.next=a.previous=null}};exports.unstable_wrapCallback=function(a){var b=g;return function(){var c=g,f=k;g=b;k=exports.unstable_now();try{return a.apply(this,arguments)}finally{g=c,k=f,v()}}};exports.unstable_getCurrentPriorityLevel=function(){return g};
exports.unstable_shouldYield=function(){return!e&&(null!==d&&d.expirationTime<l||w())};exports.unstable_continueExecution=function(){null!==d&&p()};exports.unstable_pauseExecution=function(){};exports.unstable_getFirstCallbackNode=function(){return d};

/***/ }),

/***/ "/h46":
/***/ (function(module, exports, __webpack_require__) {

// https://tc39.github.io/proposal-setmap-offrom/#sec-map.of
__webpack_require__("cHUd")('Map');

/***/ }),

/***/ "B9jh":
/***/ (function(module, exports, __webpack_require__) {

"use strict";

var strong = __webpack_require__("Wu5q");
var validate = __webpack_require__("n3ko");
var SET = 'Set';

// 23.2 Set Objects
module.exports = __webpack_require__("raTm")(SET, function (get) {
  return function Set() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };
}, {
  // 23.2.3.1 Set.prototype.add(value)
  add: function add(value) {
    return strong.def(validate(this, SET), value = value === 0 ? 0 : value, value);
  }
}, strong);

/***/ }),

/***/ "BMP1":
/***/ (function(module, exports, __webpack_require__) {

"use strict";

var _interopRequireWildcard = __webpack_require__("5Uuq");

var next = _interopRequireWildcard(__webpack_require__("IKlv"));

window.next = next;
(0, next["default"])()["catch"](function (err) {
  console.error(err.message + "\n" + err.stack);
});

/***/ }),

/***/ "DqTX":
/***/ (function(module, exports, __webpack_require__) {

"use strict";

var _interopRequireDefault2 = __webpack_require__("KI45");

var _classCallCheck2 = _interopRequireDefault2(__webpack_require__("0iUn"));

var _createClass2 = _interopRequireDefault2(__webpack_require__("sLSF"));

var _interopRequireDefault = __webpack_require__("KI45");

exports.__esModule = true;
exports["default"] = void 0;

var _promise = _interopRequireDefault(__webpack_require__("eVuF"));

var DOMAttributeNames = {
  acceptCharset: 'accept-charset',
  className: 'class',
  htmlFor: 'for',
  httpEquiv: 'http-equiv'
};

var HeadManager =
/*#__PURE__*/
function () {
  function HeadManager() {
    var _this = this;

    (0, _classCallCheck2["default"])(this, HeadManager);

    this.updateHead = function (head) {
      var promise = _this.updatePromise = _promise["default"].resolve().then(function () {
        if (promise !== _this.updatePromise) return;
        _this.updatePromise = null;

        _this.doUpdateHead(head);
      });
    };

    this.updatePromise = null;
  }

  (0, _createClass2["default"])(HeadManager, [{
    key: "doUpdateHead",
    value: function doUpdateHead(head) {
      var _this2 = this;

      var tags = {};
      head.forEach(function (h) {
        var components = tags[h.type] || [];
        components.push(h);
        tags[h.type] = components;
      });
      this.updateTitle(tags.title ? tags.title[0] : null);
      var types = ['meta', 'base', 'link', 'style', 'script'];
      types.forEach(function (type) {
        _this2.updateElements(type, tags[type] || []);
      });
    }
  }, {
    key: "updateTitle",
    value: function updateTitle(component) {
      var title = '';

      if (component) {
        var children = component.props.children;
        title = typeof children === 'string' ? children : children.join('');
      }

      if (title !== document.title) document.title = title;
    }
  }, {
    key: "updateElements",
    value: function updateElements(type, components) {
      var headEl = document.getElementsByTagName('head')[0];
      var oldTags = Array.prototype.slice.call(headEl.querySelectorAll(type + '.next-head'));
      var newTags = components.map(reactElementToDOM).filter(function (newTag) {
        for (var i = 0, len = oldTags.length; i < len; i++) {
          var oldTag = oldTags[i];

          if (oldTag.isEqualNode(newTag)) {
            oldTags.splice(i, 1);
            return false;
          }
        }

        return true;
      });
      oldTags.forEach(function (t) {
        return t.parentNode.removeChild(t);
      });
      newTags.forEach(function (t) {
        return headEl.appendChild(t);
      });
    }
  }]);
  return HeadManager;
}();

exports["default"] = HeadManager;

function reactElementToDOM(_ref) {
  var type = _ref.type,
      props = _ref.props;
  var el = document.createElement(type);

  for (var p in props) {
    if (!props.hasOwnProperty(p)) continue;
    if (p === 'children' || p === 'dangerouslySetInnerHTML') continue;
    var attr = DOMAttributeNames[p] || p.toLowerCase();
    el.setAttribute(attr, props[p]);
  }

  var children = props.children,
      dangerouslySetInnerHTML = props.dangerouslySetInnerHTML;

  if (dangerouslySetInnerHTML) {
    el.innerHTML = dangerouslySetInnerHTML.__html || '';
  } else if (children) {
    el.textContent = typeof children === 'string' ? children : children.join('');
  }

  return el;
}

/***/ }),

/***/ "HohS":
/***/ (function(module, exports, __webpack_require__) {

"use strict";

var _interopRequireDefault = __webpack_require__("KI45");

var _defineProperty = _interopRequireDefault(__webpack_require__("hfKm"));

(0, _defineProperty["default"])(exports, "__esModule", {
  value: true
});
var runtimeConfig;

exports["default"] = function () {
  return runtimeConfig;
};

function setConfig(configValue) {
  runtimeConfig = configValue;
}

exports.setConfig = setConfig;

/***/ }),

/***/ "IClC":
/***/ (function(module, exports, __webpack_require__) {

"use strict";

var _interopRequireDefault = __webpack_require__("KI45");

var _defineProperty = _interopRequireDefault(__webpack_require__("hfKm"));

var __importStar = void 0 && (void 0).__importStar || function (mod) {
  if (mod && mod.__esModule) return mod;
  var result = {};
  if (mod != null) for (var k in mod) {
    if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
  }
  result["default"] = mod;
  return result;
};

(0, _defineProperty["default"])(exports, "__esModule", {
  value: true
});

var React = __importStar(__webpack_require__("q1tI"));

exports.HeadManagerContext = React.createContext(null);

/***/ }),

/***/ "IKlv":
/***/ (function(module, exports, __webpack_require__) {

"use strict";

var _interopRequireDefault2 = __webpack_require__("KI45");

var _regenerator = _interopRequireDefault2(__webpack_require__("ln6h"));

var _classCallCheck2 = _interopRequireDefault2(__webpack_require__("0iUn"));

var _createClass2 = _interopRequireDefault2(__webpack_require__("sLSF"));

var _possibleConstructorReturn2 = _interopRequireDefault2(__webpack_require__("MI3g"));

var _getPrototypeOf2 = _interopRequireDefault2(__webpack_require__("a7VT"));

var _inherits2 = _interopRequireDefault2(__webpack_require__("Tit0"));

var _slicedToArray2 = _interopRequireDefault2(__webpack_require__("doui"));

var _interopRequireWildcard = __webpack_require__("5Uuq");

var _interopRequireDefault = __webpack_require__("KI45");

exports.__esModule = true;
exports.render = render;
exports.renderError = renderError;
exports["default"] = exports.emitter = exports.ErrorComponent = exports.router = exports.dataManager = void 0;

var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__("+oT+"));

var _extends2 = _interopRequireDefault(__webpack_require__("htGi"));

var _promise = _interopRequireDefault(__webpack_require__("eVuF"));

var _react = _interopRequireWildcard(__webpack_require__("q1tI"));

var _reactDom = _interopRequireDefault(__webpack_require__("i8i4"));

var _headManager = _interopRequireDefault(__webpack_require__("DqTX"));

var _router = __webpack_require__("nOHt");

var _mitt = _interopRequireDefault(__webpack_require__("kiME"));

var _utils = __webpack_require__("Bu4q");

var _pageLoader = _interopRequireDefault(__webpack_require__("zmvN"));

var envConfig = _interopRequireWildcard(__webpack_require__("PBx+"));

var _headManagerContext = __webpack_require__("IClC");

var _dataManagerContext = __webpack_require__("qS9g");

var _routerContext = __webpack_require__("9EOK");

var _dataManager = __webpack_require__("cuFY");

var _querystring = __webpack_require__("s4NR");

var _isDynamic = __webpack_require__("kcOw");
/* global location */
// Polyfill Promise globally
// This is needed because Webpack's dynamic loading(common chunks) code
// depends on Promise.
// So, we need to polyfill it.
// See: https://webpack.js.org/guides/code-splitting/#dynamic-imports

if (!window.Promise) {
  window.Promise = _promise["default"];
}

var data = JSON.parse(document.getElementById('__NEXT_DATA__').textContent);
window.__NEXT_DATA__ = data;
var props = data.props,
    err = data.err,
    page = data.page,
    query = data.query,
    buildId = data.buildId,
    dynamicBuildId = data.dynamicBuildId,
    assetPrefix = data.assetPrefix,
    runtimeConfig = data.runtimeConfig,
    dynamicIds = data.dynamicIds;
var d = JSON.parse(window.__NEXT_DATA__.dataManager);
var dataManager = new _dataManager.DataManager(d);
exports.dataManager = dataManager;
var prefix = assetPrefix || ''; // With dynamic assetPrefix it's no longer possible to set assetPrefix at the build time
// So, this is how we do it in the client side at runtime

__webpack_require__.p = prefix + "/_next/"; //eslint-disable-line
// Initialize next/config with the environment configuration

envConfig.setConfig({
  serverRuntimeConfig: {},
  publicRuntimeConfig: runtimeConfig || {}
});
var asPath = (0, _utils.getURL)();
var pageLoader = new _pageLoader["default"](buildId, prefix);

var register = function register(_ref) {
  var _ref2 = (0, _slicedToArray2["default"])(_ref, 2),
      r = _ref2[0],
      f = _ref2[1];

  return pageLoader.registerPage(r, f);
};

if (window.__NEXT_P) {
  window.__NEXT_P.map(register);
}

window.__NEXT_P = [];
window.__NEXT_P.push = register;
var headManager = new _headManager["default"]();
var appElement = document.getElementById('__next');
var lastAppProps;
var webpackHMR;
var router;
exports.router = router;
var ErrorComponent;
exports.ErrorComponent = ErrorComponent;
var Component;
var App;

var Container =
/*#__PURE__*/
function (_react$default$Compon) {
  (0, _inherits2["default"])(Container, _react$default$Compon);

  function Container() {
    (0, _classCallCheck2["default"])(this, Container);
    return (0, _possibleConstructorReturn2["default"])(this, (0, _getPrototypeOf2["default"])(Container).apply(this, arguments));
  }

  (0, _createClass2["default"])(Container, [{
    key: "componentDidCatch",
    value: function componentDidCatch(err, info) {
      this.props.fn(err, info);
    }
  }, {
    key: "componentDidMount",
    value: function componentDidMount() {
      this.scrollToHash(); // If page was exported and has a querystring
      // If it's a dynamic route or has a querystring

      if (data.nextExport && ((0, _isDynamic.isDynamicRoute)(router.pathname) || location.search)) {
        // update query on mount for exported pages
        router.replace(router.pathname + '?' + (0, _querystring.stringify)((0, _extends2["default"])({}, router.query, (0, _querystring.parse)(location.search.substr(1)))), asPath, {
          // WARNING: `_h` is an internal option for handing Next.js
          // client-side hydration. Your app should _never_ use this property.
          // It may change at any time without notice.
          _h: 1
        });
      }
    }
  }, {
    key: "componentDidUpdate",
    value: function componentDidUpdate() {
      this.scrollToHash();
    }
  }, {
    key: "scrollToHash",
    value: function scrollToHash() {
      var _location = location,
          hash = _location.hash;
      hash = hash && hash.substring(1);
      if (!hash) return;
      var el = document.getElementById(hash);
      if (!el) return; // If we call scrollIntoView() in here without a setTimeout
      // it won't scroll properly.

      setTimeout(function () {
        return el.scrollIntoView();
      }, 0);
    }
  }, {
    key: "render",
    value: function render() {
      return this.props.children;
    }
  }]);
  return Container;
}(_react["default"].Component);

var emitter = (0, _mitt["default"])();
exports.emitter = emitter;

var _default =
/*#__PURE__*/
function () {
  var _ref2 = (0, _asyncToGenerator2["default"])(
  /*#__PURE__*/
  _regenerator["default"].mark(function _callee(_temp) {
    var _ref, passedWebpackHMR, initialErr, _require, isValidElementType;

    return _regenerator["default"].wrap(function _callee$(_context) {
      while (1) {
        switch (_context.prev = _context.next) {
          case 0:
            _ref = _temp === void 0 ? {} : _temp, passedWebpackHMR = _ref.webpackHMR; // This makes sure this specific lines are removed in production

            if (false) {}

            _context.next = 4;
            return pageLoader.loadPage('/_app');

          case 4:
            App = _context.sent;
            initialErr = err;
            _context.prev = 6;
            _context.next = 9;
            return pageLoader.loadPage(page);

          case 9:
            Component = _context.sent;

            if (true) {
              _context.next = 14;
              break;
            }

            _require = __webpack_require__(!(function webpackMissingModule() { var e = new Error("Cannot find module 'react-is'"); e.code = 'MODULE_NOT_FOUND'; throw e; }())), isValidElementType = _require.isValidElementType;

            if (isValidElementType(Component)) {
              _context.next = 14;
              break;
            }

            throw new Error("The default export is not a React Component in page: \"" + page + "\"");

          case 14:
            _context.next = 19;
            break;

          case 16:
            _context.prev = 16;
            _context.t0 = _context["catch"](6);
            // This catches errors like throwing in the top level of a module
            initialErr = _context.t0;

          case 19:
            if (!window.__NEXT_PRELOADREADY) {
              _context.next = 22;
              break;
            }

            _context.next = 22;
            return window.__NEXT_PRELOADREADY(dynamicIds);

          case 22:
            if (dynamicBuildId === true) {
              pageLoader.onDynamicBuildId();
            }

            exports.router = router = (0, _router.createRouter)(page, query, asPath, {
              initialProps: props,
              pageLoader: pageLoader,
              App: App,
              Component: Component,
              wrapApp: wrapApp,
              err: initialErr,
              subscription: function subscription(_ref3, App) {
                var Component = _ref3.Component,
                    props = _ref3.props,
                    err = _ref3.err;
                render({
                  App: App,
                  Component: Component,
                  props: props,
                  err: err,
                  emitter: emitter
                });
              }
            });
            render({
              App: App,
              Component: Component,
              props: props,
              err: initialErr,
              emitter: emitter
            });
            return _context.abrupt("return", emitter);

          case 26:
          case "end":
            return _context.stop();
        }
      }
    }, _callee, null, [[6, 16]]);
  }));

  return function (_x) {
    return _ref2.apply(this, arguments);
  };
}();

exports["default"] = _default;

function render(_x2) {
  return _render.apply(this, arguments);
} // This method handles all runtime and debug errors.
// 404 and 500 errors are special kind of errors
// and they are still handle via the main render method.

function _render() {
  _render = (0, _asyncToGenerator2["default"])(
  /*#__PURE__*/
  _regenerator["default"].mark(function _callee2(props) {
    return _regenerator["default"].wrap(function _callee2$(_context2) {
      while (1) {
        switch (_context2.prev = _context2.next) {
          case 0:
            if (!props.err) {
              _context2.next = 4;
              break;
            }

            _context2.next = 3;
            return renderError(props);

          case 3:
            return _context2.abrupt("return");

          case 4:
            _context2.prev = 4;
            _context2.next = 7;
            return doRender(props);

          case 7:
            _context2.next = 13;
            break;

          case 9:
            _context2.prev = 9;
            _context2.t0 = _context2["catch"](4);
            _context2.next = 13;
            return renderError((0, _extends2["default"])({}, props, {
              err: _context2.t0
            }));

          case 13:
          case "end":
            return _context2.stop();
        }
      }
    }, _callee2, null, [[4, 9]]);
  }));
  return _render.apply(this, arguments);
}

function renderError(_x3) {
  return _renderError.apply(this, arguments);
} // If hydrate does not exist, eg in preact.

function _renderError() {
  _renderError = (0, _asyncToGenerator2["default"])(
  /*#__PURE__*/
  _regenerator["default"].mark(function _callee3(props) {
    var App, err, appCtx, initProps;
    return _regenerator["default"].wrap(function _callee3$(_context3) {
      while (1) {
        switch (_context3.prev = _context3.next) {
          case 0:
            App = props.App, err = props.err; // In development runtime errors are caught by react-error-overlay
            // In production we catch runtime errors using componentDidCatch which will trigger renderError

            if (true) {
              _context3.next = 3;
              break;
            }

            return _context3.abrupt("return", webpackHMR.reportRuntimeError(webpackHMR.prepareError(err)));

          case 3:
            // Make sure we log the error to the console, otherwise users can't track down issues.
            console.error(err);
            _context3.next = 6;
            return pageLoader.loadPage('/_error');

          case 6:
            exports.ErrorComponent = ErrorComponent = _context3.sent;
            // In production we do a normal render with the `ErrorComponent` as component.
            // If we've gotten here upon initial render, we can use the props from the server.
            // Otherwise, we need to call `getInitialProps` on `App` before mounting.
            appCtx = {
              AppTree: wrapApp(App),
              Component: ErrorComponent,
              router: router,
              ctx: {
                err: err,
                pathname: page,
                query: query,
                asPath: asPath
              }
            };

            if (!props.props) {
              _context3.next = 12;
              break;
            }

            _context3.t0 = props.props;
            _context3.next = 15;
            break;

          case 12:
            _context3.next = 14;
            return (0, _utils.loadGetInitialProps)(App, appCtx);

          case 14:
            _context3.t0 = _context3.sent;

          case 15:
            initProps = _context3.t0;
            _context3.next = 18;
            return doRender((0, _extends2["default"])({}, props, {
              err: err,
              Component: ErrorComponent,
              props: initProps
            }));

          case 18:
          case "end":
            return _context3.stop();
        }
      }
    }, _callee3);
  }));
  return _renderError.apply(this, arguments);
}

var isInitialRender = typeof _reactDom["default"].hydrate === 'function';

function renderReactElement(reactEl, domEl) {
  // The check for `.hydrate` is there to support React alternatives like preact
  if (isInitialRender) {
    _reactDom["default"].hydrate(reactEl, domEl);

    isInitialRender = false;
  } else {
    _reactDom["default"].render(reactEl, domEl);
  }
}

function AppContainer(_ref4) {
  var children = _ref4.children;
  return _react["default"].createElement(Container, {
    fn: function fn(error) {
      return renderError({
        App: App,
        err: error
      })["catch"](function (err) {
        return console.error('Error rendering page: ', err);
      });
    }
  }, _react["default"].createElement(_react.Suspense, {
    fallback: _react["default"].createElement("div", null, "Loading...")
  }, _react["default"].createElement(_routerContext.RouterContext.Provider, {
    value: (0, _router.makePublicRouterInstance)(router)
  }, _react["default"].createElement(_dataManagerContext.DataManagerContext.Provider, {
    value: dataManager
  }, _react["default"].createElement(_headManagerContext.HeadManagerContext.Provider, {
    value: headManager.updateHead
  }, children)))));
}

var wrapApp = function wrapApp(App) {
  return function (props) {
    var appProps = (0, _extends2["default"])({}, props, {
      Component: Component,
      err: err,
      router: router
    });
    return _react["default"].createElement(AppContainer, null, _react["default"].createElement(App, appProps));
  };
};

function doRender(_x4) {
  return _doRender.apply(this, arguments);
}

function _doRender() {
  _doRender = (0, _asyncToGenerator2["default"])(
  /*#__PURE__*/
  _regenerator["default"].mark(function _callee4(_ref5) {
    var App, Component, props, err, _router2, pathname, _query, _asPath, appCtx, appProps;

    return _regenerator["default"].wrap(function _callee4$(_context4) {
      while (1) {
        switch (_context4.prev = _context4.next) {
          case 0:
            App = _ref5.App, Component = _ref5.Component, props = _ref5.props, err = _ref5.err; // Usual getInitialProps fetching is handled in next/router
            // this is for when ErrorComponent gets replaced by Component by HMR

            if (!(!props && Component && Component !== ErrorComponent && lastAppProps.Component === ErrorComponent)) {
              _context4.next = 7;
              break;
            }

            _router2 = router, pathname = _router2.pathname, _query = _router2.query, _asPath = _router2.asPath;
            appCtx = {
              router: router,
              AppTree: wrapApp(App),
              Component: ErrorComponent,
              ctx: {
                err: err,
                pathname: pathname,
                query: _query,
                asPath: _asPath
              }
            };
            _context4.next = 6;
            return (0, _utils.loadGetInitialProps)(App, appCtx);

          case 6:
            props = _context4.sent;

          case 7:
            Component = Component || lastAppProps.Component;
            props = props || lastAppProps.props;
            appProps = (0, _extends2["default"])({}, props, {
              Component: Component,
              err: err,
              router: router // lastAppProps has to be set before ReactDom.render to account for ReactDom throwing an error.

            });
            lastAppProps = appProps;
            emitter.emit('before-reactdom-render', {
              Component: Component,
              ErrorComponent: ErrorComponent,
              appProps: appProps
            }); // We catch runtime errors using componentDidCatch which will trigger renderError

            renderReactElement(_react["default"].createElement(AppContainer, null, _react["default"].createElement(App, appProps)), appElement);
            emitter.emit('after-reactdom-render', {
              Component: Component,
              ErrorComponent: ErrorComponent,
              appProps: appProps
            });

          case 14:
          case "end":
            return _context4.stop();
        }
      }
    }, _callee4);
  }));
  return _doRender.apply(this, arguments);
}

/***/ }),

/***/ "LX0d":
/***/ (function(module, exports, __webpack_require__) {

module.exports = __webpack_require__("UDep");

/***/ }),

/***/ "PBx+":
/***/ (function(module, exports, __webpack_require__) {

module.exports = __webpack_require__("HohS")

/***/ }),

/***/ "QCnb":
/***/ (function(module, exports, __webpack_require__) {

"use strict";

if (true) {
  module.exports = __webpack_require__("+wdc");
} else {}

/***/ }),

/***/ "UDep":
/***/ (function(module, exports, __webpack_require__) {

__webpack_require__("wgeU");
__webpack_require__("FlQf");
__webpack_require__("bBy9");
__webpack_require__("g33z");
__webpack_require__("XLbu");
__webpack_require__("/h46");
__webpack_require__("dVTT");
module.exports = __webpack_require__("WEpk").Map;

/***/ }),

/***/ "V+O7":
/***/ (function(module, exports, __webpack_require__) {

// https://tc39.github.io/proposal-setmap-offrom/#sec-set.from
__webpack_require__("aPfg")('Set');

/***/ }),

/***/ "XLbu":
/***/ (function(module, exports, __webpack_require__) {

// https://github.com/DavidBruant/Map-Set.prototype.toJSON
var $export = __webpack_require__("Y7ZC");

$export($export.P + $export.R, 'Map', { toJSON: __webpack_require__("8iia")('Map') });

/***/ }),

/***/ "cuFY":
/***/ (function(module, exports, __webpack_require__) {

"use strict";

var _interopRequireDefault = __webpack_require__("KI45");

var _map = _interopRequireDefault(__webpack_require__("LX0d"));

var _classCallCheck2 = _interopRequireDefault(__webpack_require__("0iUn"));

var _createClass2 = _interopRequireDefault(__webpack_require__("sLSF"));

var _defineProperty = _interopRequireDefault(__webpack_require__("hfKm"));

(0, _defineProperty["default"])(exports, "__esModule", {
  value: true
});

var DataManager =
/*#__PURE__*/
function () {
  function DataManager(data) {
    (0, _classCallCheck2["default"])(this, DataManager);
    this.data = new _map["default"](data);
  }

  (0, _createClass2["default"])(DataManager, [{
    key: "getData",
    value: function getData() {
      return this.data;
    }
  }, {
    key: "get",
    value: function get(key) {
      return this.data.get(key);
    }
  }, {
    key: "set",
    value: function set(key, value) {
      this.data.set(key, value);
    }
  }, {
    key: "overwrite",
    value: function overwrite(data) {
      this.data = new _map["default"](data);
    }
  }]);
  return DataManager;
}();

exports.DataManager = DataManager;

/***/ }),

/***/ "dL40":
/***/ (function(module, exports, __webpack_require__) {

// https://github.com/DavidBruant/Map-Set.prototype.toJSON
var $export = __webpack_require__("Y7ZC");

$export($export.P + $export.R, 'Set', { toJSON: __webpack_require__("8iia")('Set') });

/***/ }),

/***/ "dVTT":
/***/ (function(module, exports, __webpack_require__) {

// https://tc39.github.io/proposal-setmap-offrom/#sec-map.from
__webpack_require__("aPfg")('Map');

/***/ }),

/***/ "g33z":
/***/ (function(module, exports, __webpack_require__) {

"use strict";

var strong = __webpack_require__("Wu5q");
var validate = __webpack_require__("n3ko");
var MAP = 'Map';

// 23.1 Map Objects
module.exports = __webpack_require__("raTm")(MAP, function (get) {
  return function Map() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };
}, {
  // 23.1.3.6 Map.prototype.get(key)
  get: function get(key) {
    var entry = strong.getEntry(validate(this, MAP), key);
    return entry && entry.v;
  },
  // 23.1.3.9 Map.prototype.set(key, value)
  set: function set(key, value) {
    return strong.def(validate(this, MAP), key === 0 ? 0 : key, value);
  }
}, strong, true);

/***/ }),

/***/ "m/Gl":
/***/ (function(__webpack_module__, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony default export */ __webpack_exports__["default"] = (function(e,n){return n=n||{},new Promise(function(t,r){var s=new XMLHttpRequest,o=[],u=[],i={},a=function(){return{ok:2==(s.status/100|0),statusText:s.statusText,status:s.status,url:s.responseURL,text:function(){return Promise.resolve(s.responseText)},json:function(){return Promise.resolve(JSON.parse(s.responseText))},blob:function(){return Promise.resolve(new Blob([s.response]))},clone:a,headers:{keys:function(){return o},entries:function(){return u},get:function(e){return i[e.toLowerCase()]},has:function(e){return e.toLowerCase()in i}}}};for(var l in s.open(n.method||"get",e,!0),s.onload=function(){s.getAllResponseHeaders().replace(/^(.*?):[^\S\n]*([\s\S]*?)$/gm,function(e,n,t){o.push(n=n.toLowerCase()),u.push([n,t]),i[n]=i[n]?i[n]+","+t:t}),t(a())},s.onerror=r,s.withCredentials="include"==n.credentials,n.headers)s.setRequestHeader(l,n.headers[l]);s.send(n.body||null)})});
//# sourceMappingURL=unfetch.mjs.map

/***/ }),

/***/ "qS9g":
/***/ (function(module, exports, __webpack_require__) {

"use strict";

var _interopRequireDefault = __webpack_require__("KI45");

var _defineProperty = _interopRequireDefault(__webpack_require__("hfKm"));

var __importStar = void 0 && (void 0).__importStar || function (mod) {
  if (mod && mod.__esModule) return mod;
  var result = {};
  if (mod != null) for (var k in mod) {
    if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
  }
  result["default"] = mod;
  return result;
};

(0, _defineProperty["default"])(exports, "__esModule", {
  value: true
});

var React = __importStar(__webpack_require__("q1tI"));

exports.DataManagerContext = React.createContext(null);

/***/ }),

/***/ "ttDY":
/***/ (function(module, exports, __webpack_require__) {

module.exports = __webpack_require__("+iuc");

/***/ }),

/***/ "xvv9":
/***/ (function(module, exports, __webpack_require__) {

// https://tc39.github.io/proposal-setmap-offrom/#sec-set.of
__webpack_require__("cHUd")('Set');

/***/ }),

/***/ "zmvN":
/***/ (function(module, exports, __webpack_require__) {

"use strict";

var _interopRequireDefault2 = __webpack_require__("KI45");

var _regenerator = _interopRequireDefault2(__webpack_require__("ln6h"));

var _classCallCheck2 = _interopRequireDefault2(__webpack_require__("0iUn"));

var _createClass2 = _interopRequireDefault2(__webpack_require__("sLSF"));

var _interopRequireDefault = __webpack_require__("KI45");

exports.__esModule = true;
exports["default"] = void 0;

var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__("+oT+"));

var _promise = _interopRequireDefault(__webpack_require__("eVuF"));

var _set = _interopRequireDefault(__webpack_require__("ttDY"));

var _mitt = _interopRequireDefault(__webpack_require__("kiME"));

var _unfetch = _interopRequireDefault(__webpack_require__("m/Gl"));
/* global document */
// smaller version of https://gist.github.com/igrigorik/a02f2359f3bc50ca7a9c

function supportsPreload(list) {
  if (!list || !list.supports) {
    return false;
  }

  try {
    return list.supports('preload');
  } catch (e) {
    return false;
  }
}

var hasPreload = supportsPreload(document.createElement('link').relList);

var PageLoader =
/*#__PURE__*/
function () {
  function PageLoader(buildId, assetPrefix) {
    (0, _classCallCheck2["default"])(this, PageLoader);
    this.buildId = buildId;
    this.assetPrefix = assetPrefix;
    this.pageCache = {};
    this.prefetchCache = new _set["default"]();
    this.pageRegisterEvents = (0, _mitt["default"])();
    this.loadingRoutes = {};
    this.promisedBuildId = _promise["default"].resolve();
  }

  (0, _createClass2["default"])(PageLoader, [{
    key: "normalizeRoute",
    value: function normalizeRoute(route) {
      if (route[0] !== '/') {
        throw new Error("Route name should start with a \"/\", got \"" + route + "\"");
      }

      route = route.replace(/\/index$/, '/');
      if (route === '/') return route;
      return route.replace(/\/$/, '');
    }
  }, {
    key: "loadPage",
    value: function loadPage(route) {
      var _this3 = this;

      route = this.normalizeRoute(route);
      return new _promise["default"](function (resolve, reject) {
        var fire = function fire(_ref) {
          var error = _ref.error,
              page = _ref.page;

          _this3.pageRegisterEvents.off(route, fire);

          delete _this3.loadingRoutes[route];

          if (error) {
            reject(error);
          } else {
            resolve(page);
          }
        }; // If there's a cached version of the page, let's use it.

        var cachedPage = _this3.pageCache[route];

        if (cachedPage) {
          var error = cachedPage.error,
              page = cachedPage.page;
          error ? reject(error) : resolve(page);
          return;
        } // Register a listener to get the page

        _this3.pageRegisterEvents.on(route, fire); // If the page is loading via SSR, we need to wait for it
        // rather downloading it again.

        if (document.getElementById("__NEXT_PAGE__" + route)) {
          return;
        } // Load the script if not asked to load yet.

        if (!_this3.loadingRoutes[route]) {
          _this3.loadScript(route);

          _this3.loadingRoutes[route] = true;
        }
      });
    }
  }, {
    key: "onDynamicBuildId",
    value: function onDynamicBuildId() {
      var _this4 = this;

      this.promisedBuildId = new _promise["default"](function (resolve) {
        (0, _unfetch["default"])(_this4.assetPrefix + "/_next/static/HEAD_BUILD_ID").then(function (res) {
          if (res.ok) {
            return res;
          }

          var err = new Error('Failed to fetch HEAD buildId');
          err.res = res;
          throw err;
        }).then(function (res) {
          return res.text();
        }).then(function (buildId) {
          _this4.buildId = buildId.trim();
        })["catch"](function () {
          // When this fails it's not a _huge_ deal, preload wont work and page
          // navigation will 404, triggering a SSR refresh
          console.warn('Failed to load BUILD_ID from server. ' + 'The following client-side page transition will likely 404 and cause a SSR.\n' + 'http://err.sh/zeit/next.js/head-build-id');
        }).then(resolve, resolve);
      });
    }
  }, {
    key: "loadScript",
    value: function loadScript(route) {
      var _this = this;

      return (0, _asyncToGenerator2["default"])(
      /*#__PURE__*/
      _regenerator["default"].mark(function _callee() {
        var scriptRoute, script, url;
        return _regenerator["default"].wrap(function _callee$(_context) {
          while (1) {
            switch (_context.prev = _context.next) {
              case 0:
                _context.next = 2;
                return _this.promisedBuildId;

              case 2:
                route = _this.normalizeRoute(route);
                scriptRoute = route === '/' ? '/index.js' : route + ".js";
                script = document.createElement('script');
                url = _this.assetPrefix + "/_next/static/" + encodeURIComponent(_this.buildId) + "/pages" + scriptRoute;
                script.crossOrigin = undefined;
                script.src = url;

                script.onerror = function () {
                  var error = new Error("Error loading script " + url);
                  error.code = 'PAGE_LOAD_ERROR';

                  _this.pageRegisterEvents.emit(route, {
                    error: error
                  });
                };

                document.body.appendChild(script);

              case 10:
              case "end":
                return _context.stop();
            }
          }
        }, _callee);
      }))();
    } // This method if called by the route code.

  }, {
    key: "registerPage",
    value: function registerPage(route, regFn) {
      var _this5 = this;

      var register = function register() {
        try {
          var _regFn = regFn(),
              error = _regFn.error,
              page = _regFn.page;

          _this5.pageCache[route] = {
            error: error,
            page: page
          };

          _this5.pageRegisterEvents.emit(route, {
            error: error,
            page: page
          });
        } catch (error) {
          _this5.pageCache[route] = {
            error: error
          };

          _this5.pageRegisterEvents.emit(route, {
            error: error
          });
        }
      };

      if (false) { var check; }

      register();
    }
  }, {
    key: "prefetch",
    value: function prefetch(route) {
      var _this2 = this;

      return (0, _asyncToGenerator2["default"])(
      /*#__PURE__*/
      _regenerator["default"].mark(function _callee2() {
        var scriptRoute, link;
        return _regenerator["default"].wrap(function _callee2$(_context2) {
          while (1) {
            switch (_context2.prev = _context2.next) {
              case 0:
                route = _this2.normalizeRoute(route);
                scriptRoute = (route === '/' ? '/index' : route) + ".js";

                if (!(_this2.prefetchCache.has(scriptRoute) || document.getElementById("__NEXT_PAGE__" + route))) {
                  _context2.next = 4;
                  break;
                }

                return _context2.abrupt("return");

              case 4:
                _this2.prefetchCache.add(scriptRoute); // Inspired by quicklink, license: https://github.com/GoogleChromeLabs/quicklink/blob/master/LICENSE
                // Don't prefetch if the user is on 2G / Don't prefetch if Save-Data is enabled

                if (!('connection' in navigator)) {
                  _context2.next = 8;
                  break;
                }

                if (!((navigator.connection.effectiveType || '').indexOf('2g') !== -1 || navigator.connection.saveData)) {
                  _context2.next = 8;
                  break;
                }

                return _context2.abrupt("return");

              case 8:
                if (!hasPreload) {
                  _context2.next = 18;
                  break;
                }

                _context2.next = 11;
                return _this2.promisedBuildId;

              case 11:
                link = document.createElement('link');
                link.rel = 'preload';
                link.crossOrigin = undefined;
                link.href = _this2.assetPrefix + "/_next/static/" + encodeURIComponent(_this2.buildId) + "/pages" + scriptRoute;
                link.as = 'script';
                document.head.appendChild(link);
                return _context2.abrupt("return");

              case 18:
                if (!(document.readyState === 'complete')) {
                  _context2.next = 22;
                  break;
                }

                return _context2.abrupt("return", _this2.loadPage(route)["catch"](function () {}));

              case 22:
                return _context2.abrupt("return", new _promise["default"](function (resolve) {
                  window.addEventListener('load', function () {
                    _this2.loadPage(route).then(function () {
                      return resolve();
                    }, function () {
                      return resolve();
                    });
                  });
                }));

              case 23:
              case "end":
                return _context2.stop();
            }
          }
        }, _callee2);
      }))();
    }
  }, {
    key: "clearCache",
    value: function clearCache(route) {
      route = this.normalizeRoute(route);
      delete this.pageCache[route];
      delete this.loadingRoutes[route];
      var script = document.getElementById("__NEXT_PAGE__" + route);

      if (script) {
        script.parentNode.removeChild(script);
      }
    }
  }]);
  return PageLoader;
}();

exports["default"] = PageLoader;

/***/ })

},[["BMP1",0,1]]]);


Automated Test Suite Message


Successfully aliased the URL <https://flask-todo-pgolvsmzf.now.sh> to the following aliases:

* https://flask-todo.altsun.now.sh
* https://flask-todo-git-master.altsun.now.sh


Successfully aliased the URL <https://my-port-folio-2f8elzsg9.now.sh> to the following alias:

* https://my-port-folio-git-master.alaami.now.sh


You can get the `gasPrice` from the transaction: `tx.gasPrice` instead of writing 42.
So `tx cost = tx.receipt.gasUses X tx.gasPrice`.


@sharkcz one more please if you don't mind, thanks!


@okiehsch add also
```
uploadbyte.com#@#.bannerads
uploadbyte.com#@#.bannerAds
```
see https://forums.lanik.us/viewtopic.php?f=64&t=43301